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..8e776c8
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,37 @@
+**/target/
+**/bin/
+**._trace
+**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 42d3ae2..fbcd6f2 100644
--- a/jenkins.build.config.xml
+++ b/jenkins.build.config.xml
@@ -16,10 +16,10 @@
 	<!-- DO NOT EDIT BELOW THIS LINE -->
         <jenkins.build.dependencies>
                 <jenkins.build.dependency>org.eclipse.osbp.dsl</jenkins.build.dependency>
-                <jenkins.build.dependency>org.eclipse.osbp.persistence</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.runtime</jenkins.build.dependency>
-                <jenkins.build.dependency>org.eclipse.osbp.utils</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.addons</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.basic</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.i18n</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.cubedsl.feature/.gitignore b/org.eclipse.osbp.xtext.cubedsl.feature/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.feature/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.xtext.cubedsl.feature/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.cubedsl.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.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.cubedsl.feature/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.cubedsl.feature/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.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.cubedsl.feature/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.cubedsl.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.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.cubedsl.feature/feature.xml b/org.eclipse.osbp.xtext.cubedsl.feature/feature.xml
index a0137fd..47d3f50 100644
--- a/org.eclipse.osbp.xtext.cubedsl.feature/feature.xml
+++ b/org.eclipse.osbp.xtext.cubedsl.feature/feature.xml
@@ -14,7 +14,8 @@
         id="org.eclipse.osbp.xtext.cubedsl.feature"
         label="%featureName"
         version="0.9.0.qualifier"
-        provider-name="%providerName">
+        provider-name="%providerName"
+		plugin="org.eclipse.osbp.xtext.cubedsl">
         
     <description>
         %description
@@ -43,6 +44,13 @@
         unpack="false"/>
         
     <plugin
+        id="org.eclipse.osbp.xtext.cubedsl.ide"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
         id="org.eclipse.osbp.xtext.cubedsl.ui"
         download-size="0"
         install-size="0"
diff --git a/org.eclipse.osbp.xtext.cubedsl.ide/.classpath b/org.eclipse.osbp.xtext.cubedsl.ide/.classpath
new file mode 100644
index 0000000..5903347
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.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"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.xtext.cubedsl.ide/.project b/org.eclipse.osbp.xtext.cubedsl.ide/.project
new file mode 100644
index 0000000..d835ed6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ide/.project
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.cubedsl.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.cubedsl.ide/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.cubedsl.ide/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.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.cubedsl.ide/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.xtext.cubedsl.ide/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.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.cubedsl.ide/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.cubedsl.ide/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.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.cubedsl.ide/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.cubedsl.ide/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..5da8aa3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.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.cubedsl.ide/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.cubedsl.ide/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..ca3e101
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ide/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.cubedsl.ide
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.cubedsl.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.oxtype;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.cubedsl;bundle-version="[0.9.0,0.10.0)"
+Export-Package: org.eclipse.osbp.xtext.cubedsl.ide,
+ org.eclipse.osbp.xtext.cubedsl.ide.contentassist.antlr,
+ org.eclipse.osbp.xtext.cubedsl.ide.contentassist.antlr.internal
+
diff --git a/org.eclipse.osbp.xtext.cubedsl.ide/build.properties b/org.eclipse.osbp.xtext.cubedsl.ide/build.properties
new file mode 100644
index 0000000..6ef1a59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.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.cubedsl.ide/pom.xml b/org.eclipse.osbp.xtext.cubedsl.ide/pom.xml
new file mode 100644
index 0000000..ff1ee48
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.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.cubedsl</groupId>
+        <artifactId>org.eclipse.osbp.xtext.cubedsl.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+    <artifactId>org.eclipse.osbp.xtext.cubedsl.ide</artifactId>
+    <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.xtext.cubedsl.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup b/org.eclipse.osbp.xtext.cubedsl.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup
new file mode 100644
index 0000000..7b635c8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup
@@ -0,0 +1 @@
+org.eclipse.osbp.xtext.cubedsl.ide.CubeDSLIdeSetup
diff --git a/org.eclipse.osbp.xtext.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/AbstractCubeDSLIdeModule.java b/org.eclipse.osbp.xtext.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/AbstractCubeDSLIdeModule.java
new file mode 100644
index 0000000..8734e2f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/AbstractCubeDSLIdeModule.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.cubedsl.ide;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+import org.eclipse.osbp.xtext.cubedsl.ide.contentassist.antlr.CubeDSLParser;
+import org.eclipse.osbp.xtext.cubedsl.ide.contentassist.antlr.internal.InternalCubeDSLLexer;
+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 CubeDSLIdeModule}.
+ */
+@SuppressWarnings("all")
+public abstract class AbstractCubeDSLIdeModule 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(InternalCubeDSLLexer.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends IContentAssistParser> bindIContentAssistParser() {
+		return CubeDSLParser.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.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/contentassist/antlr/CubeDSLParser.java b/org.eclipse.osbp.xtext.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/contentassist/antlr/CubeDSLParser.java
new file mode 100644
index 0000000..23e4b08
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/contentassist/antlr/CubeDSLParser.java
@@ -0,0 +1,539 @@
+/**
+ *                                                                            
+ *  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.cubedsl.ide.contentassist.antlr;
+
+import com.google.inject.Inject;
+import java.util.HashMap;
+import java.util.Map;
+import org.eclipse.osbp.xtext.cubedsl.ide.contentassist.antlr.internal.InternalCubeDSLParser;
+import org.eclipse.osbp.xtext.cubedsl.services.CubeDSLGrammarAccess;
+import org.eclipse.xtext.AbstractElement;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.AbstractContentAssistParser;
+
+public class CubeDSLParser extends AbstractContentAssistParser {
+
+	@Inject
+	private CubeDSLGrammarAccess grammarAccess;
+
+	private Map<AbstractElement, String> nameMappings;
+
+	@Override
+	protected InternalCubeDSLParser createParser() {
+		InternalCubeDSLParser result = new InternalCubeDSLParser(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.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.getCubeAggregatorEnumAccess().getAlternatives(), "rule__CubeAggregatorEnum__Alternatives");
+					put(grammarAccess.getCubeLevelPropTypeAccess().getAlternatives(), "rule__CubeLevelPropType__Alternatives");
+					put(grammarAccess.getCubeLevelLevelTypeAccess().getAlternatives(), "rule__CubeLevelLevelType__Alternatives");
+					put(grammarAccess.getCubeModelAccess().getGroup(), "rule__CubeModel__Group__0");
+					put(grammarAccess.getCubePackageAccess().getGroup(), "rule__CubePackage__Group__0");
+					put(grammarAccess.getCubePackageAccess().getGroup_2(), "rule__CubePackage__Group_2__0");
+					put(grammarAccess.getCubeTypeAccess().getGroup(), "rule__CubeType__Group__0");
+					put(grammarAccess.getCubeTypeAccess().getGroup_2(), "rule__CubeType__Group_2__0");
+					put(grammarAccess.getCubeDimensionUsageAccess().getGroup(), "rule__CubeDimensionUsage__Group__0");
+					put(grammarAccess.getCubeDimensionAccess().getGroup(), "rule__CubeDimension__Group__0");
+					put(grammarAccess.getCubeHierarchyAccess().getGroup(), "rule__CubeHierarchy__Group__0");
+					put(grammarAccess.getCubeHierarchyAccess().getGroup_4(), "rule__CubeHierarchy__Group_4__0");
+					put(grammarAccess.getCubeHierarchyAccess().getGroup_5(), "rule__CubeHierarchy__Group_5__0");
+					put(grammarAccess.getCubeEntityAccess().getGroup(), "rule__CubeEntity__Group__0");
+					put(grammarAccess.getCubeEntityAccess().getGroup_2(), "rule__CubeEntity__Group_2__0");
+					put(grammarAccess.getCubeTypeEntityAccess().getGroup(), "rule__CubeTypeEntity__Group__0");
+					put(grammarAccess.getCubeDimensionEntityAccess().getGroup(), "rule__CubeDimensionEntity__Group__0");
+					put(grammarAccess.getCubeDimensionEntityEntityAccess().getGroup(), "rule__CubeDimensionEntityEntity__Group__0");
+					put(grammarAccess.getCubeLevelAccess().getGroup(), "rule__CubeLevel__Group__0");
+					put(grammarAccess.getCubeLevelAccess().getGroup_5(), "rule__CubeLevel__Group_5__0");
+					put(grammarAccess.getCubeLevelAccess().getGroup_6(), "rule__CubeLevel__Group_6__0");
+					put(grammarAccess.getCubeLevelPropAccess().getGroup(), "rule__CubeLevelProp__Group__0");
+					put(grammarAccess.getCubeLevelPropAccess().getGroup_4(), "rule__CubeLevelProp__Group_4__0");
+					put(grammarAccess.getCubeMeasureAccess().getGroup(), "rule__CubeMeasure__Group__0");
+					put(grammarAccess.getLFQNAccess().getGroup(), "rule__LFQN__Group__0");
+					put(grammarAccess.getLFQNAccess().getGroup_1(), "rule__LFQN__Group_1__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.getCubeModelAccess().getImportSectionAssignment_1(), "rule__CubeModel__ImportSectionAssignment_1");
+					put(grammarAccess.getCubeModelAccess().getPckgAssignment_2(), "rule__CubeModel__PckgAssignment_2");
+					put(grammarAccess.getCubePackageAccess().getNameAssignment_1(), "rule__CubePackage__NameAssignment_1");
+					put(grammarAccess.getCubePackageAccess().getDimensionsAssignment_2_1(), "rule__CubePackage__DimensionsAssignment_2_1");
+					put(grammarAccess.getCubePackageAccess().getCubesAssignment_2_2(), "rule__CubePackage__CubesAssignment_2_2");
+					put(grammarAccess.getCubeTypeAccess().getNameAssignment_1(), "rule__CubeType__NameAssignment_1");
+					put(grammarAccess.getCubeTypeAccess().getDefaultMeasureAssignment_2_0(), "rule__CubeType__DefaultMeasureAssignment_2_0");
+					put(grammarAccess.getCubeTypeAccess().getDefaultMeasureValueAssignment_2_1(), "rule__CubeType__DefaultMeasureValueAssignment_2_1");
+					put(grammarAccess.getCubeTypeAccess().getCubeTypeEntityAssignment_4(), "rule__CubeType__CubeTypeEntityAssignment_4");
+					put(grammarAccess.getCubeDimensionUsageAccess().getSourceValueAssignment_1(), "rule__CubeDimensionUsage__SourceValueAssignment_1");
+					put(grammarAccess.getCubeDimensionUsageAccess().getOverValueAssignment_3(), "rule__CubeDimensionUsage__OverValueAssignment_3");
+					put(grammarAccess.getCubeDimensionAccess().getNameAssignment_1(), "rule__CubeDimension__NameAssignment_1");
+					put(grammarAccess.getCubeDimensionAccess().getTypeTimeAssignment_2(), "rule__CubeDimension__TypeTimeAssignment_2");
+					put(grammarAccess.getCubeDimensionAccess().getHierarchiesAssignment_4(), "rule__CubeDimension__HierarchiesAssignment_4");
+					put(grammarAccess.getCubeHierarchyAccess().getNameAssignment_2(), "rule__CubeHierarchy__NameAssignment_2");
+					put(grammarAccess.getCubeHierarchyAccess().getHasAllAssignment_3(), "rule__CubeHierarchy__HasAllAssignment_3");
+					put(grammarAccess.getCubeHierarchyAccess().getAllMemberNameAssignment_4_0(), "rule__CubeHierarchy__AllMemberNameAssignment_4_0");
+					put(grammarAccess.getCubeHierarchyAccess().getAllMemberNameValueAssignment_4_1(), "rule__CubeHierarchy__AllMemberNameValueAssignment_4_1");
+					put(grammarAccess.getCubeHierarchyAccess().getDefaultMemberAssignment_5_0(), "rule__CubeHierarchy__DefaultMemberAssignment_5_0");
+					put(grammarAccess.getCubeHierarchyAccess().getDefaultMemberValueAssignment_5_1(), "rule__CubeHierarchy__DefaultMemberValueAssignment_5_1");
+					put(grammarAccess.getCubeHierarchyAccess().getCubeDimEntityAssignment_7(), "rule__CubeHierarchy__CubeDimEntityAssignment_7");
+					put(grammarAccess.getCubeEntityAccess().getEntityValueAssignment_1(), "rule__CubeEntity__EntityValueAssignment_1");
+					put(grammarAccess.getCubeEntityAccess().getKeyAssignment_2_0(), "rule__CubeEntity__KeyAssignment_2_0");
+					put(grammarAccess.getCubeEntityAccess().getKeyValueAssignment_2_1(), "rule__CubeEntity__KeyValueAssignment_2_1");
+					put(grammarAccess.getCubeTypeEntityAccess().getEntityRefAssignment_0(), "rule__CubeTypeEntity__EntityRefAssignment_0");
+					put(grammarAccess.getCubeTypeEntityAccess().getDimensionUsagesAssignment_2(), "rule__CubeTypeEntity__DimensionUsagesAssignment_2");
+					put(grammarAccess.getCubeTypeEntityAccess().getMeasuresAssignment_3(), "rule__CubeTypeEntity__MeasuresAssignment_3");
+					put(grammarAccess.getCubeDimensionEntityAccess().getEntityRefAssignment_1(), "rule__CubeDimensionEntity__EntityRefAssignment_1");
+					put(grammarAccess.getCubeDimensionEntityAccess().getHierarchLevelsAssignment_3(), "rule__CubeDimensionEntity__HierarchLevelsAssignment_3");
+					put(grammarAccess.getCubeDimensionEntityAccess().getDimEntityAssignment_4(), "rule__CubeDimensionEntity__DimEntityAssignment_4");
+					put(grammarAccess.getCubeDimensionEntityEntityAccess().getEntityRefAssignment_1(), "rule__CubeDimensionEntityEntity__EntityRefAssignment_1");
+					put(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueAssignment_4(), "rule__CubeDimensionEntityEntity__OverValueAssignment_4");
+					put(grammarAccess.getCubeDimensionEntityEntityAccess().getHierarchLevelsAssignment_5(), "rule__CubeDimensionEntityEntity__HierarchLevelsAssignment_5");
+					put(grammarAccess.getCubeDimensionEntityEntityAccess().getDimEntityAssignment_6(), "rule__CubeDimensionEntityEntity__DimEntityAssignment_6");
+					put(grammarAccess.getCubeLevelAccess().getNameAssignment_1(), "rule__CubeLevel__NameAssignment_1");
+					put(grammarAccess.getCubeLevelAccess().getLevelColValueAssignment_3(), "rule__CubeLevel__LevelColValueAssignment_3");
+					put(grammarAccess.getCubeLevelAccess().getUniqueMembersAssignment_4(), "rule__CubeLevel__UniqueMembersAssignment_4");
+					put(grammarAccess.getCubeLevelAccess().getLevelTypeAssignment_5_0(), "rule__CubeLevel__LevelTypeAssignment_5_0");
+					put(grammarAccess.getCubeLevelAccess().getLevelTypeValueAssignment_5_1(), "rule__CubeLevel__LevelTypeValueAssignment_5_1");
+					put(grammarAccess.getCubeLevelAccess().getPropertiesAssignment_6_1(), "rule__CubeLevel__PropertiesAssignment_6_1");
+					put(grammarAccess.getCubeLevelPropAccess().getNameAssignment_1(), "rule__CubeLevelProp__NameAssignment_1");
+					put(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueAssignment_3(), "rule__CubeLevelProp__LevelPropColValueAssignment_3");
+					put(grammarAccess.getCubeLevelPropAccess().getTypeAssignment_4_0(), "rule__CubeLevelProp__TypeAssignment_4_0");
+					put(grammarAccess.getCubeLevelPropAccess().getTypeValueAssignment_4_1(), "rule__CubeLevelProp__TypeValueAssignment_4_1");
+					put(grammarAccess.getCubeMeasureAccess().getNameAssignment_1(), "rule__CubeMeasure__NameAssignment_1");
+					put(grammarAccess.getCubeMeasureAccess().getAggregatorAssignment_2(), "rule__CubeMeasure__AggregatorAssignment_2");
+					put(grammarAccess.getCubeMeasureAccess().getMeasureColAssignment_4(), "rule__CubeMeasure__MeasureColAssignment_4");
+					put(grammarAccess.getCubeMeasureAccess().getNotVisibleAssignment_5(), "rule__CubeMeasure__NotVisibleAssignment_5");
+					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 CubeDSLGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+
+	public void setGrammarAccess(CubeDSLGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/contentassist/antlr/PartialCubeDSLContentAssistParser.java b/org.eclipse.osbp.xtext.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/contentassist/antlr/PartialCubeDSLContentAssistParser.java
new file mode 100644
index 0000000..972a9c6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/contentassist/antlr/PartialCubeDSLContentAssistParser.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.cubedsl.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 PartialCubeDSLContentAssistParser extends CubeDSLParser 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.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/contentassist/antlr/internal/InternalCubeDSL.g b/org.eclipse.osbp.xtext.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/contentassist/antlr/internal/InternalCubeDSL.g
new file mode 100644
index 0000000..f7d7a19
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/contentassist/antlr/internal/InternalCubeDSL.g
@@ -0,0 +1,22617 @@
+/**
+ *                                                                            
+ *  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 InternalCubeDSL;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+}
+
+@lexer::header {
+package org.eclipse.osbp.xtext.cubedsl.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.cubedsl.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.cubedsl.services.CubeDSLGrammarAccess;
+
+}
+@parser::members {
+	private CubeDSLGrammarAccess grammarAccess;
+
+	public void setGrammarAccess(CubeDSLGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+
+	@Override
+	protected Grammar getGrammar() {
+		return grammarAccess.getGrammar();
+	}
+
+	@Override
+	protected String getValueForTokenName(String tokenName) {
+		return tokenName;
+	}
+}
+
+// Entry rule entryRuleCubeModel
+entryRuleCubeModel
+:
+{ before(grammarAccess.getCubeModelRule()); }
+	 ruleCubeModel
+{ after(grammarAccess.getCubeModelRule()); } 
+	 EOF 
+;
+
+// Rule CubeModel
+ruleCubeModel 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getCubeModelAccess().getGroup()); }
+		(rule__CubeModel__Group__0)
+		{ after(grammarAccess.getCubeModelAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleCubePackage
+entryRuleCubePackage
+:
+{ before(grammarAccess.getCubePackageRule()); }
+	 ruleCubePackage
+{ after(grammarAccess.getCubePackageRule()); } 
+	 EOF 
+;
+
+// Rule CubePackage
+ruleCubePackage 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getCubePackageAccess().getGroup()); }
+		(rule__CubePackage__Group__0)
+		{ after(grammarAccess.getCubePackageAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleCubeType
+entryRuleCubeType
+:
+{ before(grammarAccess.getCubeTypeRule()); }
+	 ruleCubeType
+{ after(grammarAccess.getCubeTypeRule()); } 
+	 EOF 
+;
+
+// Rule CubeType
+ruleCubeType 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getCubeTypeAccess().getGroup()); }
+		(rule__CubeType__Group__0)
+		{ after(grammarAccess.getCubeTypeAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleCubeDimensionUsage
+entryRuleCubeDimensionUsage
+:
+{ before(grammarAccess.getCubeDimensionUsageRule()); }
+	 ruleCubeDimensionUsage
+{ after(grammarAccess.getCubeDimensionUsageRule()); } 
+	 EOF 
+;
+
+// Rule CubeDimensionUsage
+ruleCubeDimensionUsage 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getCubeDimensionUsageAccess().getGroup()); }
+		(rule__CubeDimensionUsage__Group__0)
+		{ after(grammarAccess.getCubeDimensionUsageAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleCubeDimension
+entryRuleCubeDimension
+:
+{ before(grammarAccess.getCubeDimensionRule()); }
+	 ruleCubeDimension
+{ after(grammarAccess.getCubeDimensionRule()); } 
+	 EOF 
+;
+
+// Rule CubeDimension
+ruleCubeDimension 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getCubeDimensionAccess().getGroup()); }
+		(rule__CubeDimension__Group__0)
+		{ after(grammarAccess.getCubeDimensionAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleCubeHierarchy
+entryRuleCubeHierarchy
+:
+{ before(grammarAccess.getCubeHierarchyRule()); }
+	 ruleCubeHierarchy
+{ after(grammarAccess.getCubeHierarchyRule()); } 
+	 EOF 
+;
+
+// Rule CubeHierarchy
+ruleCubeHierarchy 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getCubeHierarchyAccess().getGroup()); }
+		(rule__CubeHierarchy__Group__0)
+		{ after(grammarAccess.getCubeHierarchyAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleCubeEntity
+entryRuleCubeEntity
+:
+{ before(grammarAccess.getCubeEntityRule()); }
+	 ruleCubeEntity
+{ after(grammarAccess.getCubeEntityRule()); } 
+	 EOF 
+;
+
+// Rule CubeEntity
+ruleCubeEntity 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getCubeEntityAccess().getGroup()); }
+		(rule__CubeEntity__Group__0)
+		{ after(grammarAccess.getCubeEntityAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleCubeTypeEntity
+entryRuleCubeTypeEntity
+:
+{ before(grammarAccess.getCubeTypeEntityRule()); }
+	 ruleCubeTypeEntity
+{ after(grammarAccess.getCubeTypeEntityRule()); } 
+	 EOF 
+;
+
+// Rule CubeTypeEntity
+ruleCubeTypeEntity 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getCubeTypeEntityAccess().getGroup()); }
+		(rule__CubeTypeEntity__Group__0)
+		{ after(grammarAccess.getCubeTypeEntityAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleCubeDimensionEntity
+entryRuleCubeDimensionEntity
+:
+{ before(grammarAccess.getCubeDimensionEntityRule()); }
+	 ruleCubeDimensionEntity
+{ after(grammarAccess.getCubeDimensionEntityRule()); } 
+	 EOF 
+;
+
+// Rule CubeDimensionEntity
+ruleCubeDimensionEntity 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getCubeDimensionEntityAccess().getGroup()); }
+		(rule__CubeDimensionEntity__Group__0)
+		{ after(grammarAccess.getCubeDimensionEntityAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleCubeDimensionEntityEntity
+entryRuleCubeDimensionEntityEntity
+:
+{ before(grammarAccess.getCubeDimensionEntityEntityRule()); }
+	 ruleCubeDimensionEntityEntity
+{ after(grammarAccess.getCubeDimensionEntityEntityRule()); } 
+	 EOF 
+;
+
+// Rule CubeDimensionEntityEntity
+ruleCubeDimensionEntityEntity 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getGroup()); }
+		(rule__CubeDimensionEntityEntity__Group__0)
+		{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleCubeLevel
+entryRuleCubeLevel
+:
+{ before(grammarAccess.getCubeLevelRule()); }
+	 ruleCubeLevel
+{ after(grammarAccess.getCubeLevelRule()); } 
+	 EOF 
+;
+
+// Rule CubeLevel
+ruleCubeLevel 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getCubeLevelAccess().getGroup()); }
+		(rule__CubeLevel__Group__0)
+		{ after(grammarAccess.getCubeLevelAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleCubeLevelProp
+entryRuleCubeLevelProp
+:
+{ before(grammarAccess.getCubeLevelPropRule()); }
+	 ruleCubeLevelProp
+{ after(grammarAccess.getCubeLevelPropRule()); } 
+	 EOF 
+;
+
+// Rule CubeLevelProp
+ruleCubeLevelProp 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getCubeLevelPropAccess().getGroup()); }
+		(rule__CubeLevelProp__Group__0)
+		{ after(grammarAccess.getCubeLevelPropAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleCubeMeasure
+entryRuleCubeMeasure
+:
+{ before(grammarAccess.getCubeMeasureRule()); }
+	 ruleCubeMeasure
+{ after(grammarAccess.getCubeMeasureRule()); } 
+	 EOF 
+;
+
+// Rule CubeMeasure
+ruleCubeMeasure 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getCubeMeasureAccess().getGroup()); }
+		(rule__CubeMeasure__Group__0)
+		{ after(grammarAccess.getCubeMeasureAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleLFQN
+entryRuleLFQN
+:
+{ before(grammarAccess.getLFQNRule()); }
+	 ruleLFQN
+{ after(grammarAccess.getLFQNRule()); } 
+	 EOF 
+;
+
+// Rule LFQN
+ruleLFQN 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getLFQNAccess().getGroup()); }
+		(rule__LFQN__Group__0)
+		{ after(grammarAccess.getLFQNAccess().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 CubeAggregatorEnum
+ruleCubeAggregatorEnum
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeAggregatorEnumAccess().getAlternatives()); }
+		(rule__CubeAggregatorEnum__Alternatives)
+		{ after(grammarAccess.getCubeAggregatorEnumAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Rule CubeLevelPropType
+ruleCubeLevelPropType
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeLevelPropTypeAccess().getAlternatives()); }
+		(rule__CubeLevelPropType__Alternatives)
+		{ after(grammarAccess.getCubeLevelPropTypeAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Rule CubeLevelLevelType
+ruleCubeLevelLevelType
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeLevelLevelTypeAccess().getAlternatives()); }
+		(rule__CubeLevelLevelType__Alternatives)
+		{ after(grammarAccess.getCubeLevelLevelTypeAccess().getAlternatives()); }
+	)
+;
+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__CubeAggregatorEnum__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeAggregatorEnumAccess().getSUMEnumLiteralDeclaration_0()); }
+		('sum')
+		{ after(grammarAccess.getCubeAggregatorEnumAccess().getSUMEnumLiteralDeclaration_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getCubeAggregatorEnumAccess().getCOUNTEnumLiteralDeclaration_1()); }
+		('count')
+		{ after(grammarAccess.getCubeAggregatorEnumAccess().getCOUNTEnumLiteralDeclaration_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getCubeAggregatorEnumAccess().getMINEnumLiteralDeclaration_2()); }
+		('min')
+		{ after(grammarAccess.getCubeAggregatorEnumAccess().getMINEnumLiteralDeclaration_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getCubeAggregatorEnumAccess().getMAXEnumLiteralDeclaration_3()); }
+		('max')
+		{ after(grammarAccess.getCubeAggregatorEnumAccess().getMAXEnumLiteralDeclaration_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getCubeAggregatorEnumAccess().getAVGEnumLiteralDeclaration_4()); }
+		('avg')
+		{ after(grammarAccess.getCubeAggregatorEnumAccess().getAVGEnumLiteralDeclaration_4()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getCubeAggregatorEnumAccess().getDSCEnumLiteralDeclaration_5()); }
+		('distinct-count')
+		{ after(grammarAccess.getCubeAggregatorEnumAccess().getDSCEnumLiteralDeclaration_5()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelPropType__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeLevelPropTypeAccess().getSTRINGEnumLiteralDeclaration_0()); }
+		('String')
+		{ after(grammarAccess.getCubeLevelPropTypeAccess().getSTRINGEnumLiteralDeclaration_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getCubeLevelPropTypeAccess().getNUMERICEnumLiteralDeclaration_1()); }
+		('Numeric')
+		{ after(grammarAccess.getCubeLevelPropTypeAccess().getNUMERICEnumLiteralDeclaration_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getCubeLevelPropTypeAccess().getINTEGEREnumLiteralDeclaration_2()); }
+		('Integer')
+		{ after(grammarAccess.getCubeLevelPropTypeAccess().getINTEGEREnumLiteralDeclaration_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getCubeLevelPropTypeAccess().getBOOLEANEnumLiteralDeclaration_3()); }
+		('Boolean')
+		{ after(grammarAccess.getCubeLevelPropTypeAccess().getBOOLEANEnumLiteralDeclaration_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getCubeLevelPropTypeAccess().getDATEEnumLiteralDeclaration_4()); }
+		('Date')
+		{ after(grammarAccess.getCubeLevelPropTypeAccess().getDATEEnumLiteralDeclaration_4()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getCubeLevelPropTypeAccess().getTIMEEnumLiteralDeclaration_5()); }
+		('Time')
+		{ after(grammarAccess.getCubeLevelPropTypeAccess().getTIMEEnumLiteralDeclaration_5()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getCubeLevelPropTypeAccess().getTIMESTAMPEnumLiteralDeclaration_6()); }
+		('Timestamp')
+		{ after(grammarAccess.getCubeLevelPropTypeAccess().getTIMESTAMPEnumLiteralDeclaration_6()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelLevelType__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0()); }
+		('Time')
+		{ after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_YEARSEnumLiteralDeclaration_1()); }
+		('TimeYears')
+		{ after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_YEARSEnumLiteralDeclaration_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HALF_YEARSEnumLiteralDeclaration_2()); }
+		('TimeHalfYears')
+		{ after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HALF_YEARSEnumLiteralDeclaration_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_QUARTERSEnumLiteralDeclaration_3()); }
+		('TimeQuarters')
+		{ after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_QUARTERSEnumLiteralDeclaration_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MONTHSEnumLiteralDeclaration_4()); }
+		('TimeMonths')
+		{ after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MONTHSEnumLiteralDeclaration_4()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_WEEKSEnumLiteralDeclaration_5()); }
+		('TimeWeeks')
+		{ after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_WEEKSEnumLiteralDeclaration_5()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_DAYSEnumLiteralDeclaration_6()); }
+		('TimeDays')
+		{ after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_DAYSEnumLiteralDeclaration_6()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HOURSEnumLiteralDeclaration_7()); }
+		('TimeHours')
+		{ after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HOURSEnumLiteralDeclaration_7()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MINUTESEnumLiteralDeclaration_8()); }
+		('TimeMinutes')
+		{ after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MINUTESEnumLiteralDeclaration_8()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9()); }
+		('TimeSeconds')
+		{ after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeModel__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeModel__Group__0__Impl
+	rule__CubeModel__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeModel__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeModelAccess().getCubeModelAction_0()); }
+	()
+	{ after(grammarAccess.getCubeModelAccess().getCubeModelAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeModel__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeModel__Group__1__Impl
+	rule__CubeModel__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeModel__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeModelAccess().getImportSectionAssignment_1()); }
+	(rule__CubeModel__ImportSectionAssignment_1)?
+	{ after(grammarAccess.getCubeModelAccess().getImportSectionAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeModel__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeModel__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeModel__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeModelAccess().getPckgAssignment_2()); }
+	(rule__CubeModel__PckgAssignment_2)
+	{ after(grammarAccess.getCubeModelAccess().getPckgAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubePackage__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubePackage__Group__0__Impl
+	rule__CubePackage__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubePackageAccess().getPackageKeyword_0()); }
+	'package'
+	{ after(grammarAccess.getCubePackageAccess().getPackageKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubePackage__Group__1__Impl
+	rule__CubePackage__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubePackageAccess().getNameAssignment_1()); }
+	(rule__CubePackage__NameAssignment_1)
+	{ after(grammarAccess.getCubePackageAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubePackage__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubePackageAccess().getGroup_2()); }
+	(rule__CubePackage__Group_2__0)?
+	{ after(grammarAccess.getCubePackageAccess().getGroup_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubePackage__Group_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubePackage__Group_2__0__Impl
+	rule__CubePackage__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__Group_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubePackageAccess().getLeftCurlyBracketKeyword_2_0()); }
+	'{'
+	{ after(grammarAccess.getCubePackageAccess().getLeftCurlyBracketKeyword_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__Group_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubePackage__Group_2__1__Impl
+	rule__CubePackage__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__Group_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubePackageAccess().getDimensionsAssignment_2_1()); }
+	(rule__CubePackage__DimensionsAssignment_2_1)*
+	{ after(grammarAccess.getCubePackageAccess().getDimensionsAssignment_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__Group_2__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubePackage__Group_2__2__Impl
+	rule__CubePackage__Group_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__Group_2__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubePackageAccess().getCubesAssignment_2_2()); }
+	(rule__CubePackage__CubesAssignment_2_2)*
+	{ after(grammarAccess.getCubePackageAccess().getCubesAssignment_2_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__Group_2__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubePackage__Group_2__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__Group_2__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubePackageAccess().getRightCurlyBracketKeyword_2_3()); }
+	'}'
+	{ after(grammarAccess.getCubePackageAccess().getRightCurlyBracketKeyword_2_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeType__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeType__Group__0__Impl
+	rule__CubeType__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeTypeAccess().getCubeKeyword_0()); }
+	'cube'
+	{ after(grammarAccess.getCubeTypeAccess().getCubeKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeType__Group__1__Impl
+	rule__CubeType__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeTypeAccess().getNameAssignment_1()); }
+	(rule__CubeType__NameAssignment_1)
+	{ after(grammarAccess.getCubeTypeAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeType__Group__2__Impl
+	rule__CubeType__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeTypeAccess().getGroup_2()); }
+	(rule__CubeType__Group_2__0)?
+	{ after(grammarAccess.getCubeTypeAccess().getGroup_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeType__Group__3__Impl
+	rule__CubeType__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeTypeAccess().getLeftCurlyBracketKeyword_3()); }
+	'{'
+	{ after(grammarAccess.getCubeTypeAccess().getLeftCurlyBracketKeyword_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeType__Group__4__Impl
+	rule__CubeType__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeTypeAccess().getCubeTypeEntityAssignment_4()); }
+	(rule__CubeType__CubeTypeEntityAssignment_4)
+	{ after(grammarAccess.getCubeTypeAccess().getCubeTypeEntityAssignment_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeType__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeTypeAccess().getRightCurlyBracketKeyword_5()); }
+	'}'
+	{ after(grammarAccess.getCubeTypeAccess().getRightCurlyBracketKeyword_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeType__Group_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeType__Group_2__0__Impl
+	rule__CubeType__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeTypeAccess().getDefaultMeasureAssignment_2_0()); }
+	(rule__CubeType__DefaultMeasureAssignment_2_0)
+	{ after(grammarAccess.getCubeTypeAccess().getDefaultMeasureAssignment_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeType__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__Group_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeTypeAccess().getDefaultMeasureValueAssignment_2_1()); }
+	(rule__CubeType__DefaultMeasureValueAssignment_2_1)
+	{ after(grammarAccess.getCubeTypeAccess().getDefaultMeasureValueAssignment_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimensionUsage__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimensionUsage__Group__0__Impl
+	rule__CubeDimensionUsage__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionUsage__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionUsageAccess().getDimensionUsageKeyword_0()); }
+	'dimensionUsage'
+	{ after(grammarAccess.getCubeDimensionUsageAccess().getDimensionUsageKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionUsage__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimensionUsage__Group__1__Impl
+	rule__CubeDimensionUsage__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionUsage__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionUsageAccess().getSourceValueAssignment_1()); }
+	(rule__CubeDimensionUsage__SourceValueAssignment_1)
+	{ after(grammarAccess.getCubeDimensionUsageAccess().getSourceValueAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionUsage__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimensionUsage__Group__2__Impl
+	rule__CubeDimensionUsage__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionUsage__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionUsageAccess().getOverKeyword_2()); }
+	'over'
+	{ after(grammarAccess.getCubeDimensionUsageAccess().getOverKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionUsage__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimensionUsage__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionUsage__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionUsageAccess().getOverValueAssignment_3()); }
+	(rule__CubeDimensionUsage__OverValueAssignment_3)
+	{ after(grammarAccess.getCubeDimensionUsageAccess().getOverValueAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimension__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimension__Group__0__Impl
+	rule__CubeDimension__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimension__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionAccess().getDimensionKeyword_0()); }
+	'dimension'
+	{ after(grammarAccess.getCubeDimensionAccess().getDimensionKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimension__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimension__Group__1__Impl
+	rule__CubeDimension__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimension__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionAccess().getNameAssignment_1()); }
+	(rule__CubeDimension__NameAssignment_1)
+	{ after(grammarAccess.getCubeDimensionAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimension__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimension__Group__2__Impl
+	rule__CubeDimension__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimension__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionAccess().getTypeTimeAssignment_2()); }
+	(rule__CubeDimension__TypeTimeAssignment_2)?
+	{ after(grammarAccess.getCubeDimensionAccess().getTypeTimeAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimension__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimension__Group__3__Impl
+	rule__CubeDimension__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimension__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionAccess().getLeftCurlyBracketKeyword_3()); }
+	'{'
+	{ after(grammarAccess.getCubeDimensionAccess().getLeftCurlyBracketKeyword_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimension__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimension__Group__4__Impl
+	rule__CubeDimension__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimension__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionAccess().getHierarchiesAssignment_4()); }
+	(rule__CubeDimension__HierarchiesAssignment_4)*
+	{ after(grammarAccess.getCubeDimensionAccess().getHierarchiesAssignment_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimension__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimension__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimension__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionAccess().getRightCurlyBracketKeyword_5()); }
+	'}'
+	{ after(grammarAccess.getCubeDimensionAccess().getRightCurlyBracketKeyword_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeHierarchy__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeHierarchy__Group__0__Impl
+	rule__CubeHierarchy__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeHierarchyAccess().getCubeHierarchyAction_0()); }
+	()
+	{ after(grammarAccess.getCubeHierarchyAccess().getCubeHierarchyAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeHierarchy__Group__1__Impl
+	rule__CubeHierarchy__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeHierarchyAccess().getHierarchyKeyword_1()); }
+	'hierarchy'
+	{ after(grammarAccess.getCubeHierarchyAccess().getHierarchyKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeHierarchy__Group__2__Impl
+	rule__CubeHierarchy__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeHierarchyAccess().getNameAssignment_2()); }
+	(rule__CubeHierarchy__NameAssignment_2)?
+	{ after(grammarAccess.getCubeHierarchyAccess().getNameAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeHierarchy__Group__3__Impl
+	rule__CubeHierarchy__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeHierarchyAccess().getHasAllAssignment_3()); }
+	(rule__CubeHierarchy__HasAllAssignment_3)?
+	{ after(grammarAccess.getCubeHierarchyAccess().getHasAllAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeHierarchy__Group__4__Impl
+	rule__CubeHierarchy__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeHierarchyAccess().getGroup_4()); }
+	(rule__CubeHierarchy__Group_4__0)?
+	{ after(grammarAccess.getCubeHierarchyAccess().getGroup_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeHierarchy__Group__5__Impl
+	rule__CubeHierarchy__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeHierarchyAccess().getGroup_5()); }
+	(rule__CubeHierarchy__Group_5__0)?
+	{ after(grammarAccess.getCubeHierarchyAccess().getGroup_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeHierarchy__Group__6__Impl
+	rule__CubeHierarchy__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeHierarchyAccess().getLeftCurlyBracketKeyword_6()); }
+	'{'
+	{ after(grammarAccess.getCubeHierarchyAccess().getLeftCurlyBracketKeyword_6()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__7
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeHierarchy__Group__7__Impl
+	rule__CubeHierarchy__Group__8
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__7__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeHierarchyAccess().getCubeDimEntityAssignment_7()); }
+	(rule__CubeHierarchy__CubeDimEntityAssignment_7)
+	{ after(grammarAccess.getCubeHierarchyAccess().getCubeDimEntityAssignment_7()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__8
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeHierarchy__Group__8__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group__8__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeHierarchyAccess().getRightCurlyBracketKeyword_8()); }
+	'}'
+	{ after(grammarAccess.getCubeHierarchyAccess().getRightCurlyBracketKeyword_8()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeHierarchy__Group_4__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeHierarchy__Group_4__0__Impl
+	rule__CubeHierarchy__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group_4__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeHierarchyAccess().getAllMemberNameAssignment_4_0()); }
+	(rule__CubeHierarchy__AllMemberNameAssignment_4_0)
+	{ after(grammarAccess.getCubeHierarchyAccess().getAllMemberNameAssignment_4_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group_4__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeHierarchy__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group_4__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeHierarchyAccess().getAllMemberNameValueAssignment_4_1()); }
+	(rule__CubeHierarchy__AllMemberNameValueAssignment_4_1)
+	{ after(grammarAccess.getCubeHierarchyAccess().getAllMemberNameValueAssignment_4_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeHierarchy__Group_5__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeHierarchy__Group_5__0__Impl
+	rule__CubeHierarchy__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group_5__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeHierarchyAccess().getDefaultMemberAssignment_5_0()); }
+	(rule__CubeHierarchy__DefaultMemberAssignment_5_0)
+	{ after(grammarAccess.getCubeHierarchyAccess().getDefaultMemberAssignment_5_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group_5__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeHierarchy__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__Group_5__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeHierarchyAccess().getDefaultMemberValueAssignment_5_1()); }
+	(rule__CubeHierarchy__DefaultMemberValueAssignment_5_1)
+	{ after(grammarAccess.getCubeHierarchyAccess().getDefaultMemberValueAssignment_5_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeEntity__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeEntity__Group__0__Impl
+	rule__CubeEntity__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeEntity__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeEntityAccess().getEntityKeyword_0()); }
+	'entity'
+	{ after(grammarAccess.getCubeEntityAccess().getEntityKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeEntity__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeEntity__Group__1__Impl
+	rule__CubeEntity__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeEntity__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeEntityAccess().getEntityValueAssignment_1()); }
+	(rule__CubeEntity__EntityValueAssignment_1)
+	{ after(grammarAccess.getCubeEntityAccess().getEntityValueAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeEntity__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeEntity__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeEntity__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeEntityAccess().getGroup_2()); }
+	(rule__CubeEntity__Group_2__0)?
+	{ after(grammarAccess.getCubeEntityAccess().getGroup_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeEntity__Group_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeEntity__Group_2__0__Impl
+	rule__CubeEntity__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeEntity__Group_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeEntityAccess().getKeyAssignment_2_0()); }
+	(rule__CubeEntity__KeyAssignment_2_0)
+	{ after(grammarAccess.getCubeEntityAccess().getKeyAssignment_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeEntity__Group_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeEntity__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeEntity__Group_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeEntityAccess().getKeyValueAssignment_2_1()); }
+	(rule__CubeEntity__KeyValueAssignment_2_1)
+	{ after(grammarAccess.getCubeEntityAccess().getKeyValueAssignment_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeTypeEntity__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeTypeEntity__Group__0__Impl
+	rule__CubeTypeEntity__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeTypeEntity__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeTypeEntityAccess().getEntityRefAssignment_0()); }
+	(rule__CubeTypeEntity__EntityRefAssignment_0)
+	{ after(grammarAccess.getCubeTypeEntityAccess().getEntityRefAssignment_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeTypeEntity__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeTypeEntity__Group__1__Impl
+	rule__CubeTypeEntity__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeTypeEntity__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeTypeEntityAccess().getLeftCurlyBracketKeyword_1()); }
+	'{'
+	{ after(grammarAccess.getCubeTypeEntityAccess().getLeftCurlyBracketKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeTypeEntity__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeTypeEntity__Group__2__Impl
+	rule__CubeTypeEntity__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeTypeEntity__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeTypeEntityAccess().getDimensionUsagesAssignment_2()); }
+	(rule__CubeTypeEntity__DimensionUsagesAssignment_2)*
+	{ after(grammarAccess.getCubeTypeEntityAccess().getDimensionUsagesAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeTypeEntity__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeTypeEntity__Group__3__Impl
+	rule__CubeTypeEntity__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeTypeEntity__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeTypeEntityAccess().getMeasuresAssignment_3()); }
+	(rule__CubeTypeEntity__MeasuresAssignment_3)*
+	{ after(grammarAccess.getCubeTypeEntityAccess().getMeasuresAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeTypeEntity__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeTypeEntity__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeTypeEntity__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeTypeEntityAccess().getRightCurlyBracketKeyword_4()); }
+	'}'
+	{ after(grammarAccess.getCubeTypeEntityAccess().getRightCurlyBracketKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimensionEntity__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimensionEntity__Group__0__Impl
+	rule__CubeDimensionEntity__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntity__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionEntityAccess().getCubeDimensionEntityAction_0()); }
+	()
+	{ after(grammarAccess.getCubeDimensionEntityAccess().getCubeDimensionEntityAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntity__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimensionEntity__Group__1__Impl
+	rule__CubeDimensionEntity__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntity__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionEntityAccess().getEntityRefAssignment_1()); }
+	(rule__CubeDimensionEntity__EntityRefAssignment_1)
+	{ after(grammarAccess.getCubeDimensionEntityAccess().getEntityRefAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntity__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimensionEntity__Group__2__Impl
+	rule__CubeDimensionEntity__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntity__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionEntityAccess().getLeftCurlyBracketKeyword_2()); }
+	'{'
+	{ after(grammarAccess.getCubeDimensionEntityAccess().getLeftCurlyBracketKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntity__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimensionEntity__Group__3__Impl
+	rule__CubeDimensionEntity__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntity__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionEntityAccess().getHierarchLevelsAssignment_3()); }
+	(rule__CubeDimensionEntity__HierarchLevelsAssignment_3)*
+	{ after(grammarAccess.getCubeDimensionEntityAccess().getHierarchLevelsAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntity__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimensionEntity__Group__4__Impl
+	rule__CubeDimensionEntity__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntity__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionEntityAccess().getDimEntityAssignment_4()); }
+	(rule__CubeDimensionEntity__DimEntityAssignment_4)?
+	{ after(grammarAccess.getCubeDimensionEntityAccess().getDimEntityAssignment_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntity__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimensionEntity__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntity__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionEntityAccess().getRightCurlyBracketKeyword_5()); }
+	'}'
+	{ after(grammarAccess.getCubeDimensionEntityAccess().getRightCurlyBracketKeyword_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeDimensionEntityEntity__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimensionEntityEntity__Group__0__Impl
+	rule__CubeDimensionEntityEntity__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getCubeDimensionEntityEntityAction_0()); }
+	()
+	{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getCubeDimensionEntityEntityAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimensionEntityEntity__Group__1__Impl
+	rule__CubeDimensionEntityEntity__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getEntityRefAssignment_1()); }
+	(rule__CubeDimensionEntityEntity__EntityRefAssignment_1)
+	{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getEntityRefAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimensionEntityEntity__Group__2__Impl
+	rule__CubeDimensionEntityEntity__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getLeftCurlyBracketKeyword_2()); }
+	'{'
+	{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getLeftCurlyBracketKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimensionEntityEntity__Group__3__Impl
+	rule__CubeDimensionEntityEntity__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getOverKeyword_3()); }
+	'over'
+	{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getOverKeyword_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimensionEntityEntity__Group__4__Impl
+	rule__CubeDimensionEntityEntity__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueAssignment_4()); }
+	(rule__CubeDimensionEntityEntity__OverValueAssignment_4)
+	{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueAssignment_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimensionEntityEntity__Group__5__Impl
+	rule__CubeDimensionEntityEntity__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getHierarchLevelsAssignment_5()); }
+	(rule__CubeDimensionEntityEntity__HierarchLevelsAssignment_5)*
+	{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getHierarchLevelsAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimensionEntityEntity__Group__6__Impl
+	rule__CubeDimensionEntityEntity__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getDimEntityAssignment_6()); }
+	(rule__CubeDimensionEntityEntity__DimEntityAssignment_6)?
+	{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getDimEntityAssignment_6()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__7
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeDimensionEntityEntity__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__Group__7__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getRightCurlyBracketKeyword_7()); }
+	'}'
+	{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getRightCurlyBracketKeyword_7()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeLevel__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeLevel__Group__0__Impl
+	rule__CubeLevel__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeLevelAccess().getLevelKeyword_0()); }
+	'level'
+	{ after(grammarAccess.getCubeLevelAccess().getLevelKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeLevel__Group__1__Impl
+	rule__CubeLevel__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeLevelAccess().getNameAssignment_1()); }
+	(rule__CubeLevel__NameAssignment_1)
+	{ after(grammarAccess.getCubeLevelAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeLevel__Group__2__Impl
+	rule__CubeLevel__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeLevelAccess().getColumnKeyword_2()); }
+	'column'
+	{ after(grammarAccess.getCubeLevelAccess().getColumnKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeLevel__Group__3__Impl
+	rule__CubeLevel__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeLevelAccess().getLevelColValueAssignment_3()); }
+	(rule__CubeLevel__LevelColValueAssignment_3)
+	{ after(grammarAccess.getCubeLevelAccess().getLevelColValueAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeLevel__Group__4__Impl
+	rule__CubeLevel__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeLevelAccess().getUniqueMembersAssignment_4()); }
+	(rule__CubeLevel__UniqueMembersAssignment_4)?
+	{ after(grammarAccess.getCubeLevelAccess().getUniqueMembersAssignment_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeLevel__Group__5__Impl
+	rule__CubeLevel__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeLevelAccess().getGroup_5()); }
+	(rule__CubeLevel__Group_5__0)?
+	{ after(grammarAccess.getCubeLevelAccess().getGroup_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeLevel__Group__6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeLevelAccess().getGroup_6()); }
+	(rule__CubeLevel__Group_6__0)?
+	{ after(grammarAccess.getCubeLevelAccess().getGroup_6()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeLevel__Group_5__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeLevel__Group_5__0__Impl
+	rule__CubeLevel__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group_5__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeLevelAccess().getLevelTypeAssignment_5_0()); }
+	(rule__CubeLevel__LevelTypeAssignment_5_0)
+	{ after(grammarAccess.getCubeLevelAccess().getLevelTypeAssignment_5_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group_5__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeLevel__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group_5__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeLevelAccess().getLevelTypeValueAssignment_5_1()); }
+	(rule__CubeLevel__LevelTypeValueAssignment_5_1)
+	{ after(grammarAccess.getCubeLevelAccess().getLevelTypeValueAssignment_5_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeLevel__Group_6__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeLevel__Group_6__0__Impl
+	rule__CubeLevel__Group_6__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group_6__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeLevelAccess().getLeftCurlyBracketKeyword_6_0()); }
+	'{'
+	{ after(grammarAccess.getCubeLevelAccess().getLeftCurlyBracketKeyword_6_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group_6__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeLevel__Group_6__1__Impl
+	rule__CubeLevel__Group_6__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group_6__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeLevelAccess().getPropertiesAssignment_6_1()); }
+	(rule__CubeLevel__PropertiesAssignment_6_1)*
+	{ after(grammarAccess.getCubeLevelAccess().getPropertiesAssignment_6_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group_6__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeLevel__Group_6__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__Group_6__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeLevelAccess().getRightCurlyBracketKeyword_6_2()); }
+	'}'
+	{ after(grammarAccess.getCubeLevelAccess().getRightCurlyBracketKeyword_6_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeLevelProp__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeLevelProp__Group__0__Impl
+	rule__CubeLevelProp__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeLevelPropAccess().getPropertyKeyword_0()); }
+	'property'
+	{ after(grammarAccess.getCubeLevelPropAccess().getPropertyKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeLevelProp__Group__1__Impl
+	rule__CubeLevelProp__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeLevelPropAccess().getNameAssignment_1()); }
+	(rule__CubeLevelProp__NameAssignment_1)
+	{ after(grammarAccess.getCubeLevelPropAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeLevelProp__Group__2__Impl
+	rule__CubeLevelProp__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeLevelPropAccess().getColumnKeyword_2()); }
+	'column'
+	{ after(grammarAccess.getCubeLevelPropAccess().getColumnKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeLevelProp__Group__3__Impl
+	rule__CubeLevelProp__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueAssignment_3()); }
+	(rule__CubeLevelProp__LevelPropColValueAssignment_3)
+	{ after(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeLevelProp__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeLevelPropAccess().getGroup_4()); }
+	(rule__CubeLevelProp__Group_4__0)?
+	{ after(grammarAccess.getCubeLevelPropAccess().getGroup_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeLevelProp__Group_4__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeLevelProp__Group_4__0__Impl
+	rule__CubeLevelProp__Group_4__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__Group_4__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeLevelPropAccess().getTypeAssignment_4_0()); }
+	(rule__CubeLevelProp__TypeAssignment_4_0)
+	{ after(grammarAccess.getCubeLevelPropAccess().getTypeAssignment_4_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__Group_4__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeLevelProp__Group_4__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__Group_4__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeLevelPropAccess().getTypeValueAssignment_4_1()); }
+	(rule__CubeLevelProp__TypeValueAssignment_4_1)
+	{ after(grammarAccess.getCubeLevelPropAccess().getTypeValueAssignment_4_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__CubeMeasure__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeMeasure__Group__0__Impl
+	rule__CubeMeasure__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeMeasureAccess().getMeasureKeyword_0()); }
+	'measure'
+	{ after(grammarAccess.getCubeMeasureAccess().getMeasureKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeMeasure__Group__1__Impl
+	rule__CubeMeasure__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeMeasureAccess().getNameAssignment_1()); }
+	(rule__CubeMeasure__NameAssignment_1)
+	{ after(grammarAccess.getCubeMeasureAccess().getNameAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeMeasure__Group__2__Impl
+	rule__CubeMeasure__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeMeasureAccess().getAggregatorAssignment_2()); }
+	(rule__CubeMeasure__AggregatorAssignment_2)
+	{ after(grammarAccess.getCubeMeasureAccess().getAggregatorAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeMeasure__Group__3__Impl
+	rule__CubeMeasure__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeMeasureAccess().getColumnKeyword_3()); }
+	'column'
+	{ after(grammarAccess.getCubeMeasureAccess().getColumnKeyword_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeMeasure__Group__4__Impl
+	rule__CubeMeasure__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeMeasureAccess().getMeasureColAssignment_4()); }
+	(rule__CubeMeasure__MeasureColAssignment_4)
+	{ after(grammarAccess.getCubeMeasureAccess().getMeasureColAssignment_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__CubeMeasure__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getCubeMeasureAccess().getNotVisibleAssignment_5()); }
+	(rule__CubeMeasure__NotVisibleAssignment_5)?
+	{ after(grammarAccess.getCubeMeasureAccess().getNotVisibleAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LFQN__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__LFQN__Group__0__Impl
+	rule__LFQN__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LFQN__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getLFQNAccess().getIDTerminalRuleCall_0()); }
+	RULE_ID
+	{ after(grammarAccess.getLFQNAccess().getIDTerminalRuleCall_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LFQN__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__LFQN__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LFQN__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getLFQNAccess().getGroup_1()); }
+	(rule__LFQN__Group_1__0)*
+	{ after(grammarAccess.getLFQNAccess().getGroup_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__LFQN__Group_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__LFQN__Group_1__0__Impl
+	rule__LFQN__Group_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LFQN__Group_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getLFQNAccess().getFullStopKeyword_1_0()); }
+	'.'
+	{ after(grammarAccess.getLFQNAccess().getFullStopKeyword_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LFQN__Group_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__LFQN__Group_1__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__LFQN__Group_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getLFQNAccess().getIDTerminalRuleCall_1_1()); }
+	RULE_ID
+	{ after(grammarAccess.getLFQNAccess().getIDTerminalRuleCall_1_1()); }
+)
+;
+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__CubeModel__ImportSectionAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeModelAccess().getImportSectionXImportSectionParserRuleCall_1_0()); }
+		ruleXImportSection
+		{ after(grammarAccess.getCubeModelAccess().getImportSectionXImportSectionParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeModel__PckgAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeModelAccess().getPckgCubePackageParserRuleCall_2_0()); }
+		ruleCubePackage
+		{ after(grammarAccess.getCubeModelAccess().getPckgCubePackageParserRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__NameAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubePackageAccess().getNameQualifiedNameParserRuleCall_1_0()); }
+		ruleQualifiedName
+		{ after(grammarAccess.getCubePackageAccess().getNameQualifiedNameParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__DimensionsAssignment_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubePackageAccess().getDimensionsCubeDimensionParserRuleCall_2_1_0()); }
+		ruleCubeDimension
+		{ after(grammarAccess.getCubePackageAccess().getDimensionsCubeDimensionParserRuleCall_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubePackage__CubesAssignment_2_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubePackageAccess().getCubesCubeTypeParserRuleCall_2_2_0()); }
+		ruleCubeType
+		{ after(grammarAccess.getCubePackageAccess().getCubesCubeTypeParserRuleCall_2_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__NameAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeTypeAccess().getNameIDTerminalRuleCall_1_0()); }
+		RULE_ID
+		{ after(grammarAccess.getCubeTypeAccess().getNameIDTerminalRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__DefaultMeasureAssignment_2_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeTypeAccess().getDefaultMeasureDefaultMeasureKeyword_2_0_0()); }
+		(
+			{ before(grammarAccess.getCubeTypeAccess().getDefaultMeasureDefaultMeasureKeyword_2_0_0()); }
+			'defaultMeasure'
+			{ after(grammarAccess.getCubeTypeAccess().getDefaultMeasureDefaultMeasureKeyword_2_0_0()); }
+		)
+		{ after(grammarAccess.getCubeTypeAccess().getDefaultMeasureDefaultMeasureKeyword_2_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__DefaultMeasureValueAssignment_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeTypeAccess().getDefaultMeasureValueSTRINGTerminalRuleCall_2_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getCubeTypeAccess().getDefaultMeasureValueSTRINGTerminalRuleCall_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeType__CubeTypeEntityAssignment_4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeTypeAccess().getCubeTypeEntityCubeTypeEntityParserRuleCall_4_0()); }
+		ruleCubeTypeEntity
+		{ after(grammarAccess.getCubeTypeAccess().getCubeTypeEntityCubeTypeEntityParserRuleCall_4_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionUsage__SourceValueAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeDimensionUsageAccess().getSourceValueCubeDimensionCrossReference_1_0()); }
+		(
+			{ before(grammarAccess.getCubeDimensionUsageAccess().getSourceValueCubeDimensionIDTerminalRuleCall_1_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getCubeDimensionUsageAccess().getSourceValueCubeDimensionIDTerminalRuleCall_1_0_1()); }
+		)
+		{ after(grammarAccess.getCubeDimensionUsageAccess().getSourceValueCubeDimensionCrossReference_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionUsage__OverValueAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeDimensionUsageAccess().getOverValueLEntityFeatureCrossReference_3_0()); }
+		(
+			{ before(grammarAccess.getCubeDimensionUsageAccess().getOverValueLEntityFeatureLFQNParserRuleCall_3_0_1()); }
+			ruleLFQN
+			{ after(grammarAccess.getCubeDimensionUsageAccess().getOverValueLEntityFeatureLFQNParserRuleCall_3_0_1()); }
+		)
+		{ after(grammarAccess.getCubeDimensionUsageAccess().getOverValueLEntityFeatureCrossReference_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimension__NameAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeDimensionAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); }
+		ruleTRANSLATABLEID
+		{ after(grammarAccess.getCubeDimensionAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimension__TypeTimeAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeDimensionAccess().getTypeTimeTypeTimeKeyword_2_0()); }
+		(
+			{ before(grammarAccess.getCubeDimensionAccess().getTypeTimeTypeTimeKeyword_2_0()); }
+			'typeTime'
+			{ after(grammarAccess.getCubeDimensionAccess().getTypeTimeTypeTimeKeyword_2_0()); }
+		)
+		{ after(grammarAccess.getCubeDimensionAccess().getTypeTimeTypeTimeKeyword_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimension__HierarchiesAssignment_4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeDimensionAccess().getHierarchiesCubeHierarchyParserRuleCall_4_0()); }
+		ruleCubeHierarchy
+		{ after(grammarAccess.getCubeDimensionAccess().getHierarchiesCubeHierarchyParserRuleCall_4_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__NameAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeHierarchyAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); }
+		ruleTRANSLATABLEID
+		{ after(grammarAccess.getCubeHierarchyAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__HasAllAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeHierarchyAccess().getHasAllHasAllKeyword_3_0()); }
+		(
+			{ before(grammarAccess.getCubeHierarchyAccess().getHasAllHasAllKeyword_3_0()); }
+			'hasAll'
+			{ after(grammarAccess.getCubeHierarchyAccess().getHasAllHasAllKeyword_3_0()); }
+		)
+		{ after(grammarAccess.getCubeHierarchyAccess().getHasAllHasAllKeyword_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__AllMemberNameAssignment_4_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeHierarchyAccess().getAllMemberNameAllMemberNameKeyword_4_0_0()); }
+		(
+			{ before(grammarAccess.getCubeHierarchyAccess().getAllMemberNameAllMemberNameKeyword_4_0_0()); }
+			'allMemberName'
+			{ after(grammarAccess.getCubeHierarchyAccess().getAllMemberNameAllMemberNameKeyword_4_0_0()); }
+		)
+		{ after(grammarAccess.getCubeHierarchyAccess().getAllMemberNameAllMemberNameKeyword_4_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__AllMemberNameValueAssignment_4_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeHierarchyAccess().getAllMemberNameValueTRANSLATABLESTRINGParserRuleCall_4_1_0()); }
+		ruleTRANSLATABLESTRING
+		{ after(grammarAccess.getCubeHierarchyAccess().getAllMemberNameValueTRANSLATABLESTRINGParserRuleCall_4_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__DefaultMemberAssignment_5_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeHierarchyAccess().getDefaultMemberDefaultMemberKeyword_5_0_0()); }
+		(
+			{ before(grammarAccess.getCubeHierarchyAccess().getDefaultMemberDefaultMemberKeyword_5_0_0()); }
+			'defaultMember'
+			{ after(grammarAccess.getCubeHierarchyAccess().getDefaultMemberDefaultMemberKeyword_5_0_0()); }
+		)
+		{ after(grammarAccess.getCubeHierarchyAccess().getDefaultMemberDefaultMemberKeyword_5_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__DefaultMemberValueAssignment_5_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeHierarchyAccess().getDefaultMemberValueTRANSLATABLESTRINGParserRuleCall_5_1_0()); }
+		ruleTRANSLATABLESTRING
+		{ after(grammarAccess.getCubeHierarchyAccess().getDefaultMemberValueTRANSLATABLESTRINGParserRuleCall_5_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeHierarchy__CubeDimEntityAssignment_7
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeHierarchyAccess().getCubeDimEntityCubeDimensionEntityParserRuleCall_7_0()); }
+		ruleCubeDimensionEntity
+		{ after(grammarAccess.getCubeHierarchyAccess().getCubeDimEntityCubeDimensionEntityParserRuleCall_7_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeEntity__EntityValueAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeEntityAccess().getEntityValueLEntityCrossReference_1_0()); }
+		(
+			{ before(grammarAccess.getCubeEntityAccess().getEntityValueLEntityLFQNParserRuleCall_1_0_1()); }
+			ruleLFQN
+			{ after(grammarAccess.getCubeEntityAccess().getEntityValueLEntityLFQNParserRuleCall_1_0_1()); }
+		)
+		{ after(grammarAccess.getCubeEntityAccess().getEntityValueLEntityCrossReference_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeEntity__KeyAssignment_2_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeEntityAccess().getKeyKeyKeyword_2_0_0()); }
+		(
+			{ before(grammarAccess.getCubeEntityAccess().getKeyKeyKeyword_2_0_0()); }
+			'key'
+			{ after(grammarAccess.getCubeEntityAccess().getKeyKeyKeyword_2_0_0()); }
+		)
+		{ after(grammarAccess.getCubeEntityAccess().getKeyKeyKeyword_2_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeEntity__KeyValueAssignment_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeEntityAccess().getKeyValueLEntityFeatureCrossReference_2_1_0()); }
+		(
+			{ before(grammarAccess.getCubeEntityAccess().getKeyValueLEntityFeatureLFQNParserRuleCall_2_1_0_1()); }
+			ruleLFQN
+			{ after(grammarAccess.getCubeEntityAccess().getKeyValueLEntityFeatureLFQNParserRuleCall_2_1_0_1()); }
+		)
+		{ after(grammarAccess.getCubeEntityAccess().getKeyValueLEntityFeatureCrossReference_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeTypeEntity__EntityRefAssignment_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeTypeEntityAccess().getEntityRefCubeEntityParserRuleCall_0_0()); }
+		ruleCubeEntity
+		{ after(grammarAccess.getCubeTypeEntityAccess().getEntityRefCubeEntityParserRuleCall_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeTypeEntity__DimensionUsagesAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeTypeEntityAccess().getDimensionUsagesCubeDimensionUsageParserRuleCall_2_0()); }
+		ruleCubeDimensionUsage
+		{ after(grammarAccess.getCubeTypeEntityAccess().getDimensionUsagesCubeDimensionUsageParserRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeTypeEntity__MeasuresAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeTypeEntityAccess().getMeasuresCubeMeasureParserRuleCall_3_0()); }
+		ruleCubeMeasure
+		{ after(grammarAccess.getCubeTypeEntityAccess().getMeasuresCubeMeasureParserRuleCall_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntity__EntityRefAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeDimensionEntityAccess().getEntityRefCubeEntityParserRuleCall_1_0()); }
+		ruleCubeEntity
+		{ after(grammarAccess.getCubeDimensionEntityAccess().getEntityRefCubeEntityParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntity__HierarchLevelsAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeDimensionEntityAccess().getHierarchLevelsCubeLevelParserRuleCall_3_0()); }
+		ruleCubeLevel
+		{ after(grammarAccess.getCubeDimensionEntityAccess().getHierarchLevelsCubeLevelParserRuleCall_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntity__DimEntityAssignment_4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeDimensionEntityAccess().getDimEntityCubeDimensionEntityEntityParserRuleCall_4_0()); }
+		ruleCubeDimensionEntityEntity
+		{ after(grammarAccess.getCubeDimensionEntityAccess().getDimEntityCubeDimensionEntityEntityParserRuleCall_4_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__EntityRefAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getEntityRefCubeEntityParserRuleCall_1_0()); }
+		ruleCubeEntity
+		{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getEntityRefCubeEntityParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__OverValueAssignment_4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueLEntityFeatureCrossReference_4_0()); }
+		(
+			{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueLEntityFeatureLFQNParserRuleCall_4_0_1()); }
+			ruleLFQN
+			{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueLEntityFeatureLFQNParserRuleCall_4_0_1()); }
+		)
+		{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueLEntityFeatureCrossReference_4_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__HierarchLevelsAssignment_5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getHierarchLevelsCubeLevelParserRuleCall_5_0()); }
+		ruleCubeLevel
+		{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getHierarchLevelsCubeLevelParserRuleCall_5_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeDimensionEntityEntity__DimEntityAssignment_6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeDimensionEntityEntityAccess().getDimEntityCubeDimensionEntityEntityParserRuleCall_6_0()); }
+		ruleCubeDimensionEntityEntity
+		{ after(grammarAccess.getCubeDimensionEntityEntityAccess().getDimEntityCubeDimensionEntityEntityParserRuleCall_6_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__NameAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeLevelAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); }
+		ruleTRANSLATABLEID
+		{ after(grammarAccess.getCubeLevelAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__LevelColValueAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeLevelAccess().getLevelColValueLEntityFeatureCrossReference_3_0()); }
+		(
+			{ before(grammarAccess.getCubeLevelAccess().getLevelColValueLEntityFeatureLFQNParserRuleCall_3_0_1()); }
+			ruleLFQN
+			{ after(grammarAccess.getCubeLevelAccess().getLevelColValueLEntityFeatureLFQNParserRuleCall_3_0_1()); }
+		)
+		{ after(grammarAccess.getCubeLevelAccess().getLevelColValueLEntityFeatureCrossReference_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__UniqueMembersAssignment_4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeLevelAccess().getUniqueMembersUniqueMembersKeyword_4_0()); }
+		(
+			{ before(grammarAccess.getCubeLevelAccess().getUniqueMembersUniqueMembersKeyword_4_0()); }
+			'uniqueMembers'
+			{ after(grammarAccess.getCubeLevelAccess().getUniqueMembersUniqueMembersKeyword_4_0()); }
+		)
+		{ after(grammarAccess.getCubeLevelAccess().getUniqueMembersUniqueMembersKeyword_4_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__LevelTypeAssignment_5_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeLevelAccess().getLevelTypeLevelTypeKeyword_5_0_0()); }
+		(
+			{ before(grammarAccess.getCubeLevelAccess().getLevelTypeLevelTypeKeyword_5_0_0()); }
+			'levelType'
+			{ after(grammarAccess.getCubeLevelAccess().getLevelTypeLevelTypeKeyword_5_0_0()); }
+		)
+		{ after(grammarAccess.getCubeLevelAccess().getLevelTypeLevelTypeKeyword_5_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__LevelTypeValueAssignment_5_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeLevelAccess().getLevelTypeValueCubeLevelLevelTypeEnumRuleCall_5_1_0()); }
+		ruleCubeLevelLevelType
+		{ after(grammarAccess.getCubeLevelAccess().getLevelTypeValueCubeLevelLevelTypeEnumRuleCall_5_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevel__PropertiesAssignment_6_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeLevelAccess().getPropertiesCubeLevelPropParserRuleCall_6_1_0()); }
+		ruleCubeLevelProp
+		{ after(grammarAccess.getCubeLevelAccess().getPropertiesCubeLevelPropParserRuleCall_6_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__NameAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeLevelPropAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); }
+		ruleTRANSLATABLEID
+		{ after(grammarAccess.getCubeLevelPropAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__LevelPropColValueAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueLEntityFeatureCrossReference_3_0()); }
+		(
+			{ before(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueLEntityFeatureLFQNParserRuleCall_3_0_1()); }
+			ruleLFQN
+			{ after(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueLEntityFeatureLFQNParserRuleCall_3_0_1()); }
+		)
+		{ after(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueLEntityFeatureCrossReference_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__TypeAssignment_4_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeLevelPropAccess().getTypeTypeKeyword_4_0_0()); }
+		(
+			{ before(grammarAccess.getCubeLevelPropAccess().getTypeTypeKeyword_4_0_0()); }
+			'type'
+			{ after(grammarAccess.getCubeLevelPropAccess().getTypeTypeKeyword_4_0_0()); }
+		)
+		{ after(grammarAccess.getCubeLevelPropAccess().getTypeTypeKeyword_4_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeLevelProp__TypeValueAssignment_4_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeLevelPropAccess().getTypeValueCubeLevelPropTypeEnumRuleCall_4_1_0()); }
+		ruleCubeLevelPropType
+		{ after(grammarAccess.getCubeLevelPropAccess().getTypeValueCubeLevelPropTypeEnumRuleCall_4_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__NameAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeMeasureAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); }
+		ruleTRANSLATABLEID
+		{ after(grammarAccess.getCubeMeasureAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__AggregatorAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeMeasureAccess().getAggregatorCubeAggregatorEnumEnumRuleCall_2_0()); }
+		ruleCubeAggregatorEnum
+		{ after(grammarAccess.getCubeMeasureAccess().getAggregatorCubeAggregatorEnumEnumRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__MeasureColAssignment_4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeMeasureAccess().getMeasureColLEntityFeatureCrossReference_4_0()); }
+		(
+			{ before(grammarAccess.getCubeMeasureAccess().getMeasureColLEntityFeatureLFQNParserRuleCall_4_0_1()); }
+			ruleLFQN
+			{ after(grammarAccess.getCubeMeasureAccess().getMeasureColLEntityFeatureLFQNParserRuleCall_4_0_1()); }
+		)
+		{ after(grammarAccess.getCubeMeasureAccess().getMeasureColLEntityFeatureCrossReference_4_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__CubeMeasure__NotVisibleAssignment_5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getCubeMeasureAccess().getNotVisibleNotVisibleKeyword_5_0()); }
+		(
+			{ before(grammarAccess.getCubeMeasureAccess().getNotVisibleNotVisibleKeyword_5_0()); }
+			'notVisible'
+			{ after(grammarAccess.getCubeMeasureAccess().getNotVisibleNotVisibleKeyword_5_0()); }
+		)
+		{ after(grammarAccess.getCubeMeasureAccess().getNotVisibleNotVisibleKeyword_5_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.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/contentassist/antlr/internal/InternalCubeDSL.tokens b/org.eclipse.osbp.xtext.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/contentassist/antlr/internal/InternalCubeDSL.tokens
new file mode 100644
index 0000000..e2ec93b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/contentassist/antlr/internal/InternalCubeDSL.tokens
@@ -0,0 +1,247 @@
+'!'=40
+'!='=22
+'!=='=24
+'#'=92
+'%'=39
+'%='=20
+'&&'=15
+'&'=115
+'('=88
+')'=89
+'*'=36
+'**'=37
+'*='=18
+'+'=34
+'++'=41
+'+='=16
+','=90
+'-'=35
+'--'=42
+'-='=17
+'->'=28
+'.'=43
+'..'=30
+'..<'=29
+'/'=38
+'/='=19
+':'=99
+'::'=127
+';'=86
+'<'=27
+'<>'=32
+'='=13
+'=='=21
+'==='=23
+'=>'=31
+'>'=26
+'>='=25
+'?'=114
+'?.'=128
+'?:'=33
+'@'=87
+'Boolean'=60
+'Date'=61
+'Integer'=59
+'Numeric'=58
+'String'=57
+'Time'=62
+'TimeDays'=69
+'TimeHalfYears'=65
+'TimeHours'=70
+'TimeMinutes'=71
+'TimeMonths'=67
+'TimeQuarters'=66
+'TimeSeconds'=72
+'TimeWeeks'=68
+'TimeYears'=64
+'Timestamp'=63
+'['=93
+']'=91
+'allMemberName'=119
+'as'=95
+'avg'=55
+'case'=101
+'catch'=113
+'column'=83
+'count'=52
+'cube'=76
+'default'=100
+'defaultMeasure'=116
+'defaultMember'=120
+'dimension'=79
+'dimensionUsage'=77
+'distinct-count'=56
+'do'=104
+'else'=97
+'entity'=81
+'extends'=45
+'extension'=48
+'false'=50
+'finally'=111
+'for'=102
+'hasAll'=118
+'hierarchy'=80
+'if'=96
+'import'=47
+'instanceof'=94
+'key'=121
+'level'=82
+'levelType'=123
+'max'=54
+'measure'=85
+'min'=53
+'new'=105
+'notVisible'=125
+'ns'=126
+'null'=106
+'over'=78
+'package'=73
+'property'=84
+'return'=109
+'static'=46
+'sum'=51
+'super'=49
+'switch'=98
+'synchronized'=112
+'throw'=108
+'true'=131
+'try'=110
+'type'=124
+'typeTime'=117
+'typeof'=107
+'uniqueMembers'=122
+'val'=44
+'var'=130
+'while'=103
+'{'=74
+'|'=129
+'||'=14
+'}'=75
+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__13=13
+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.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/contentassist/antlr/internal/InternalCubeDSLLexer.java b/org.eclipse.osbp.xtext.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/contentassist/antlr/internal/InternalCubeDSLLexer.java
new file mode 100644
index 0000000..df888a0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/contentassist/antlr/internal/InternalCubeDSLLexer.java
@@ -0,0 +1,5085 @@
+package org.eclipse.osbp.xtext.cubedsl.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 InternalCubeDSLLexer extends Lexer {
+    public static final int RULE_HEX=6;
+    public static final int T__50=50;
+    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__52=52;
+    public static final int T__53=53;
+    public static final int T__54=54;
+    public static final int T__60=60;
+    public static final int T__61=61;
+    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 InternalCubeDSLLexer() {;} 
+    public InternalCubeDSLLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalCubeDSLLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "InternalCubeDSL.g"; }
+
+    // $ANTLR start "T__13"
+    public final void mT__13() throws RecognitionException {
+        try {
+            int _type = T__13;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalCubeDSL.g:11:7: ( '=' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:12:7: ( '||' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:13:7: ( '&&' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:14:7: ( '+=' )
+            // InternalCubeDSL.g:14:9: '+='
+            {
+            match("+="); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:15:7: ( '-=' )
+            // InternalCubeDSL.g:15:9: '-='
+            {
+            match("-="); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:16:7: ( '*=' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:17:7: ( '/=' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:18:7: ( '%=' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:19:7: ( '==' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:20:7: ( '!=' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:21:7: ( '===' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:22:7: ( '!==' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:23:7: ( '>=' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:24:7: ( '>' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:25:7: ( '<' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:26:7: ( '->' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:27:7: ( '..<' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:28:7: ( '..' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:29:7: ( '=>' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:30:7: ( '<>' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:31:7: ( '?:' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:32:7: ( '+' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:33:7: ( '-' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:34:7: ( '*' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:35:7: ( '**' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:36:7: ( '/' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:37:7: ( '%' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:38:7: ( '!' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:39:7: ( '++' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:40:7: ( '--' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:41:7: ( '.' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:42:7: ( 'val' )
+            // InternalCubeDSL.g:42:9: 'val'
+            {
+            match("val"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:43:7: ( 'extends' )
+            // InternalCubeDSL.g:43:9: 'extends'
+            {
+            match("extends"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:44:7: ( 'static' )
+            // InternalCubeDSL.g:44:9: 'static'
+            {
+            match("static"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:45:7: ( 'import' )
+            // InternalCubeDSL.g:45:9: 'import'
+            {
+            match("import"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:46:7: ( 'extension' )
+            // InternalCubeDSL.g:46:9: 'extension'
+            {
+            match("extension"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:47:7: ( 'super' )
+            // InternalCubeDSL.g:47:9: 'super'
+            {
+            match("super"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:48:7: ( 'false' )
+            // InternalCubeDSL.g:48:9: 'false'
+            {
+            match("false"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:49:7: ( 'sum' )
+            // InternalCubeDSL.g:49:9: 'sum'
+            {
+            match("sum"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:50:7: ( 'count' )
+            // InternalCubeDSL.g:50:9: 'count'
+            {
+            match("count"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:51:7: ( 'min' )
+            // InternalCubeDSL.g:51:9: 'min'
+            {
+            match("min"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:52:7: ( 'max' )
+            // InternalCubeDSL.g:52:9: 'max'
+            {
+            match("max"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:53:7: ( 'avg' )
+            // InternalCubeDSL.g:53:9: 'avg'
+            {
+            match("avg"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:54:7: ( 'distinct-count' )
+            // InternalCubeDSL.g:54:9: 'distinct-count'
+            {
+            match("distinct-count"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:55:7: ( 'String' )
+            // InternalCubeDSL.g:55:9: 'String'
+            {
+            match("String"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:56:7: ( 'Numeric' )
+            // InternalCubeDSL.g:56:9: 'Numeric'
+            {
+            match("Numeric"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:57:7: ( 'Integer' )
+            // InternalCubeDSL.g:57:9: 'Integer'
+            {
+            match("Integer"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:58:7: ( 'Boolean' )
+            // InternalCubeDSL.g:58:9: 'Boolean'
+            {
+            match("Boolean"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:59:7: ( 'Date' )
+            // InternalCubeDSL.g:59:9: 'Date'
+            {
+            match("Date"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:60:7: ( 'Time' )
+            // InternalCubeDSL.g:60:9: 'Time'
+            {
+            match("Time"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:61:7: ( 'Timestamp' )
+            // InternalCubeDSL.g:61:9: 'Timestamp'
+            {
+            match("Timestamp"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:62:7: ( 'TimeYears' )
+            // InternalCubeDSL.g:62:9: 'TimeYears'
+            {
+            match("TimeYears"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:63:7: ( 'TimeHalfYears' )
+            // InternalCubeDSL.g:63:9: 'TimeHalfYears'
+            {
+            match("TimeHalfYears"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:64:7: ( 'TimeQuarters' )
+            // InternalCubeDSL.g:64:9: 'TimeQuarters'
+            {
+            match("TimeQuarters"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:65:7: ( 'TimeMonths' )
+            // InternalCubeDSL.g:65:9: 'TimeMonths'
+            {
+            match("TimeMonths"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:66:7: ( 'TimeWeeks' )
+            // InternalCubeDSL.g:66:9: 'TimeWeeks'
+            {
+            match("TimeWeeks"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:67:7: ( 'TimeDays' )
+            // InternalCubeDSL.g:67:9: 'TimeDays'
+            {
+            match("TimeDays"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:68:7: ( 'TimeHours' )
+            // InternalCubeDSL.g:68:9: 'TimeHours'
+            {
+            match("TimeHours"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:69:7: ( 'TimeMinutes' )
+            // InternalCubeDSL.g:69:9: 'TimeMinutes'
+            {
+            match("TimeMinutes"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:70:7: ( 'TimeSeconds' )
+            // InternalCubeDSL.g:70:9: 'TimeSeconds'
+            {
+            match("TimeSeconds"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:71:7: ( 'package' )
+            // InternalCubeDSL.g:71:9: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:72:7: ( '{' )
+            // InternalCubeDSL.g:72:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            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;
+            // InternalCubeDSL.g:73:7: ( '}' )
+            // InternalCubeDSL.g:73:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            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;
+            // InternalCubeDSL.g:74:7: ( 'cube' )
+            // InternalCubeDSL.g:74:9: 'cube'
+            {
+            match("cube"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:75:7: ( 'dimensionUsage' )
+            // InternalCubeDSL.g:75:9: 'dimensionUsage'
+            {
+            match("dimensionUsage"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:76:7: ( 'over' )
+            // InternalCubeDSL.g:76:9: 'over'
+            {
+            match("over"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:77:7: ( 'dimension' )
+            // InternalCubeDSL.g:77:9: 'dimension'
+            {
+            match("dimension"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:78:7: ( 'hierarchy' )
+            // InternalCubeDSL.g:78:9: 'hierarchy'
+            {
+            match("hierarchy"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:79:7: ( 'entity' )
+            // InternalCubeDSL.g:79:9: 'entity'
+            {
+            match("entity"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:80:7: ( 'level' )
+            // InternalCubeDSL.g:80:9: 'level'
+            {
+            match("level"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:81:7: ( 'column' )
+            // InternalCubeDSL.g:81:9: 'column'
+            {
+            match("column"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:82:7: ( 'property' )
+            // InternalCubeDSL.g:82:9: 'property'
+            {
+            match("property"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:83:7: ( 'measure' )
+            // InternalCubeDSL.g:83:9: 'measure'
+            {
+            match("measure"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:84:7: ( ';' )
+            // InternalCubeDSL.g:84:9: ';'
+            {
+            match(';'); 
+
+            }
+
+            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;
+            // InternalCubeDSL.g:85:7: ( '@' )
+            // InternalCubeDSL.g:85:9: '@'
+            {
+            match('@'); 
+
+            }
+
+            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;
+            // InternalCubeDSL.g:86:7: ( '(' )
+            // InternalCubeDSL.g:86:9: '('
+            {
+            match('('); 
+
+            }
+
+            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;
+            // InternalCubeDSL.g:87:7: ( ')' )
+            // InternalCubeDSL.g:87:9: ')'
+            {
+            match(')'); 
+
+            }
+
+            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;
+            // InternalCubeDSL.g:88:7: ( ',' )
+            // InternalCubeDSL.g:88:9: ','
+            {
+            match(','); 
+
+            }
+
+            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;
+            // InternalCubeDSL.g:89:7: ( ']' )
+            // InternalCubeDSL.g:89:9: ']'
+            {
+            match(']'); 
+
+            }
+
+            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;
+            // InternalCubeDSL.g:90:7: ( '#' )
+            // InternalCubeDSL.g:90:9: '#'
+            {
+            match('#'); 
+
+            }
+
+            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;
+            // InternalCubeDSL.g:91:7: ( '[' )
+            // InternalCubeDSL.g:91:9: '['
+            {
+            match('['); 
+
+            }
+
+            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;
+            // InternalCubeDSL.g:92:7: ( 'instanceof' )
+            // InternalCubeDSL.g:92:9: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:93:7: ( 'as' )
+            // InternalCubeDSL.g:93:9: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:94:7: ( 'if' )
+            // InternalCubeDSL.g:94:9: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:95:7: ( 'else' )
+            // InternalCubeDSL.g:95:9: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:96:7: ( 'switch' )
+            // InternalCubeDSL.g:96:9: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:97:7: ( ':' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:98:8: ( 'default' )
+            // InternalCubeDSL.g:98:10: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:99:8: ( 'case' )
+            // InternalCubeDSL.g:99:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:100:8: ( 'for' )
+            // InternalCubeDSL.g:100:10: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:101:8: ( 'while' )
+            // InternalCubeDSL.g:101:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__103"
+
+    // $ANTLR start "T__104"
+    public final void mT__104() throws RecognitionException {
+        try {
+            int _type = T__104;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalCubeDSL.g:102:8: ( 'do' )
+            // InternalCubeDSL.g:102:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:103:8: ( 'new' )
+            // InternalCubeDSL.g:103:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:104:8: ( 'null' )
+            // InternalCubeDSL.g:104:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:105:8: ( 'typeof' )
+            // InternalCubeDSL.g:105:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:106:8: ( 'throw' )
+            // InternalCubeDSL.g:106:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:107:8: ( 'return' )
+            // InternalCubeDSL.g:107:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:108:8: ( 'try' )
+            // InternalCubeDSL.g:108:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:109:8: ( 'finally' )
+            // InternalCubeDSL.g:109:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:110:8: ( 'synchronized' )
+            // InternalCubeDSL.g:110:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:111:8: ( 'catch' )
+            // InternalCubeDSL.g:111:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:112:8: ( '?' )
+            // InternalCubeDSL.g:112:10: '?'
+            {
+            match('?'); 
+
+            }
+
+            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;
+            // InternalCubeDSL.g:113:8: ( '&' )
+            // InternalCubeDSL.g:113:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            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;
+            // InternalCubeDSL.g:114:8: ( 'defaultMeasure' )
+            // InternalCubeDSL.g:114:10: 'defaultMeasure'
+            {
+            match("defaultMeasure"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:115:8: ( 'typeTime' )
+            // InternalCubeDSL.g:115:10: 'typeTime'
+            {
+            match("typeTime"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:116:8: ( 'hasAll' )
+            // InternalCubeDSL.g:116:10: 'hasAll'
+            {
+            match("hasAll"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:117:8: ( 'allMemberName' )
+            // InternalCubeDSL.g:117:10: 'allMemberName'
+            {
+            match("allMemberName"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:118:8: ( 'defaultMember' )
+            // InternalCubeDSL.g:118:10: 'defaultMember'
+            {
+            match("defaultMember"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:119:8: ( 'key' )
+            // InternalCubeDSL.g:119:10: 'key'
+            {
+            match("key"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:120:8: ( 'uniqueMembers' )
+            // InternalCubeDSL.g:120:10: 'uniqueMembers'
+            {
+            match("uniqueMembers"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:121:8: ( 'levelType' )
+            // InternalCubeDSL.g:121:10: 'levelType'
+            {
+            match("levelType"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:122:8: ( 'type' )
+            // InternalCubeDSL.g:122:10: 'type'
+            {
+            match("type"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:123:8: ( 'notVisible' )
+            // InternalCubeDSL.g:123:10: 'notVisible'
+            {
+            match("notVisible"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:124:8: ( 'ns' )
+            // InternalCubeDSL.g:124:10: 'ns'
+            {
+            match("ns"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:125:8: ( '::' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:126:8: ( '?.' )
+            // InternalCubeDSL.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;
+            // InternalCubeDSL.g:127:8: ( '|' )
+            // InternalCubeDSL.g:127:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            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;
+            // InternalCubeDSL.g:128:8: ( 'var' )
+            // InternalCubeDSL.g:128:10: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            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;
+            // InternalCubeDSL.g:129:8: ( 'true' )
+            // InternalCubeDSL.g:129:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__131"
+
+    // $ANTLR start "RULE_HEX"
+    public final void mRULE_HEX() throws RecognitionException {
+        try {
+            int _type = RULE_HEX;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalCubeDSL.g:22601:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // InternalCubeDSL.g:22601:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // InternalCubeDSL.g:22601: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 :
+                    // InternalCubeDSL.g:22601:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:22601:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalCubeDSL.g:22601: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 :
+            	    // InternalCubeDSL.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);
+
+            // InternalCubeDSL.g:22601: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 :
+                    // InternalCubeDSL.g:22601:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // InternalCubeDSL.g:22601: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 :
+                            // InternalCubeDSL.g:22601: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 :
+                            // InternalCubeDSL.g:22601: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;
+            // InternalCubeDSL.g:22603:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // InternalCubeDSL.g:22603:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // InternalCubeDSL.g:22603: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 :
+            	    // InternalCubeDSL.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;
+            // InternalCubeDSL.g:22605:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // InternalCubeDSL.g:22605:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            {
+            mRULE_INT(); 
+            // InternalCubeDSL.g:22605: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 :
+                    // InternalCubeDSL.g:22605: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;}
+
+                    // InternalCubeDSL.g:22605:36: ( '+' | '-' )?
+                    int alt6=2;
+                    int LA6_0 = input.LA(1);
+
+                    if ( (LA6_0=='+'||LA6_0=='-') ) {
+                        alt6=1;
+                    }
+                    switch (alt6) {
+                        case 1 :
+                            // InternalCubeDSL.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;
+
+            }
+
+            // InternalCubeDSL.g:22605: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 :
+                    // InternalCubeDSL.g:22605: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 :
+                    // InternalCubeDSL.g:22605: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;
+            // InternalCubeDSL.g:22607:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // InternalCubeDSL.g:22607:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // InternalCubeDSL.g:22607:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // InternalCubeDSL.g:22607: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;}
+
+            // InternalCubeDSL.g:22607: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 :
+            	    // InternalCubeDSL.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;
+            // InternalCubeDSL.g:22609:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // InternalCubeDSL.g:22609:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // InternalCubeDSL.g:22609: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 :
+                    // InternalCubeDSL.g:22609:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // InternalCubeDSL.g:22609: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 :
+                    	    // InternalCubeDSL.g:22609:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // InternalCubeDSL.g:22609: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);
+
+                    // InternalCubeDSL.g:22609:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // InternalCubeDSL.g:22609:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:22609:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // InternalCubeDSL.g:22609: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 :
+                    	    // InternalCubeDSL.g:22609:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // InternalCubeDSL.g:22609: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);
+
+                    // InternalCubeDSL.g:22609:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // InternalCubeDSL.g:22609: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;
+            // InternalCubeDSL.g:22611:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalCubeDSL.g:22611:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // InternalCubeDSL.g:22611: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 :
+            	    // InternalCubeDSL.g:22611: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;
+            // InternalCubeDSL.g:22613:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalCubeDSL.g:22613:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // InternalCubeDSL.g:22613: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 :
+            	    // InternalCubeDSL.g:22613: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);
+
+            // InternalCubeDSL.g:22613: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 :
+                    // InternalCubeDSL.g:22613:41: ( '\\r' )? '\\n'
+                    {
+                    // InternalCubeDSL.g:22613:41: ( '\\r' )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0=='\r') ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // InternalCubeDSL.g:22613: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;
+            // InternalCubeDSL.g:22615:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalCubeDSL.g:22615:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // InternalCubeDSL.g:22615: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 :
+            	    // InternalCubeDSL.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;
+            // InternalCubeDSL.g:22617:16: ( . )
+            // InternalCubeDSL.g:22617:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // InternalCubeDSL.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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=128;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // InternalCubeDSL.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // InternalCubeDSL.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // InternalCubeDSL.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // InternalCubeDSL.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // InternalCubeDSL.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // InternalCubeDSL.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // InternalCubeDSL.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // InternalCubeDSL.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // InternalCubeDSL.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // InternalCubeDSL.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // InternalCubeDSL.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // InternalCubeDSL.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // InternalCubeDSL.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // InternalCubeDSL.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // InternalCubeDSL.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // InternalCubeDSL.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // InternalCubeDSL.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // InternalCubeDSL.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // InternalCubeDSL.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // InternalCubeDSL.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // InternalCubeDSL.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // InternalCubeDSL.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // InternalCubeDSL.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // InternalCubeDSL.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // InternalCubeDSL.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // InternalCubeDSL.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // InternalCubeDSL.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // InternalCubeDSL.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // InternalCubeDSL.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // InternalCubeDSL.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // InternalCubeDSL.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // InternalCubeDSL.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // InternalCubeDSL.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // InternalCubeDSL.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // InternalCubeDSL.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // InternalCubeDSL.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // InternalCubeDSL.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // InternalCubeDSL.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // InternalCubeDSL.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // InternalCubeDSL.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // InternalCubeDSL.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // InternalCubeDSL.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // InternalCubeDSL.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // InternalCubeDSL.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // InternalCubeDSL.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // InternalCubeDSL.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // InternalCubeDSL.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // InternalCubeDSL.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // InternalCubeDSL.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // InternalCubeDSL.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // InternalCubeDSL.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // InternalCubeDSL.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // InternalCubeDSL.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // InternalCubeDSL.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // InternalCubeDSL.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // InternalCubeDSL.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // InternalCubeDSL.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // InternalCubeDSL.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // InternalCubeDSL.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // InternalCubeDSL.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // InternalCubeDSL.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // InternalCubeDSL.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // InternalCubeDSL.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // InternalCubeDSL.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // InternalCubeDSL.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // InternalCubeDSL.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // InternalCubeDSL.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // InternalCubeDSL.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // InternalCubeDSL.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // InternalCubeDSL.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // InternalCubeDSL.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // InternalCubeDSL.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // InternalCubeDSL.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // InternalCubeDSL.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // InternalCubeDSL.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // InternalCubeDSL.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // InternalCubeDSL.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // InternalCubeDSL.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // InternalCubeDSL.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // InternalCubeDSL.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // InternalCubeDSL.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // InternalCubeDSL.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // InternalCubeDSL.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // InternalCubeDSL.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // InternalCubeDSL.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // InternalCubeDSL.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // InternalCubeDSL.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // InternalCubeDSL.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // InternalCubeDSL.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // InternalCubeDSL.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // InternalCubeDSL.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // InternalCubeDSL.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // InternalCubeDSL.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // InternalCubeDSL.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // InternalCubeDSL.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // InternalCubeDSL.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // InternalCubeDSL.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // InternalCubeDSL.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // InternalCubeDSL.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // InternalCubeDSL.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // InternalCubeDSL.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // InternalCubeDSL.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // InternalCubeDSL.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // InternalCubeDSL.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // InternalCubeDSL.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // InternalCubeDSL.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // InternalCubeDSL.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // InternalCubeDSL.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // InternalCubeDSL.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // InternalCubeDSL.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // InternalCubeDSL.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // InternalCubeDSL.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // InternalCubeDSL.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // InternalCubeDSL.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // InternalCubeDSL.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // InternalCubeDSL.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // InternalCubeDSL.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // InternalCubeDSL.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // InternalCubeDSL.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // InternalCubeDSL.g:1:756: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 121 :
+                // InternalCubeDSL.g:1:765: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 122 :
+                // InternalCubeDSL.g:1:774: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 123 :
+                // InternalCubeDSL.g:1:787: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 124 :
+                // InternalCubeDSL.g:1:795: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 125 :
+                // InternalCubeDSL.g:1:807: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 126 :
+                // InternalCubeDSL.g:1:823: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 127 :
+                // InternalCubeDSL.g:1:839: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 128 :
+                // InternalCubeDSL.g:1:847: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\74\1\76\1\100\1\103\1\107\1\112\1\116\1\120\1\122\1\124\1\126\1\130\1\133\20\135\2\uffff\3\135\10\uffff\1\u008e\6\135\2\u009c\1\71\5\uffff\1\u00a1\26\uffff\1\u00a3\5\uffff\1\u00a5\4\uffff\1\135\1\uffff\11\135\1\u00b2\12\135\1\u00bf\3\135\1\u00c4\10\135\2\uffff\4\135\12\uffff\4\135\1\u00d5\6\135\1\uffff\1\u009c\12\uffff\1\u00dd\1\u00de\5\135\1\u00e4\4\135\1\uffff\1\135\1\u00ea\6\135\1\u00f1\1\u00f2\1\135\1\u00f4\1\uffff\4\135\1\uffff\15\135\1\u0106\2\135\1\uffff\2\135\1\u010b\2\135\1\u010e\1\135\2\uffff\2\135\1\u0112\2\135\1\uffff\5\135\1\uffff\3\135\1\u011d\1\u011e\1\135\2\uffff\1\135\1\uffff\10\135\1\u0129\1\u0132\2\135\1\u0135\4\135\1\uffff\1\u013a\1\135\1\u013e\1\135\1\uffff\1\u0140\1\135\1\uffff\3\135\1\uffff\1\135\1\u0147\4\135\1\u014c\1\135\1\u014e\1\135\2\uffff\1\u0150\11\135\1\uffff\10\135\1\uffff\2\135\1\uffff\2\135\1\u0169\1\u016a\1\uffff\3\135\1\uffff\1\u016e\1\uffff\4\135\1\u0173\1\u0174\1\uffff\1\u0175\1\135\1\u0177\1\135\1\uffff\1\135\1\uffff\1\u017a\1\uffff\5\135\1\u0180\20\135\1\u0191\1\135\2\uffff\1\135\1\u0194\1\135\1\uffff\1\u0196\1\135\1\u0198\1\135\3\uffff\1\135\1\uffff\1\135\1\u019c\1\uffff\1\u019d\3\135\1\u01a2\1\uffff\1\u01a3\1\u01a4\1\u01a5\12\135\1\u01b0\2\135\1\uffff\2\135\1\uffff\1\135\1\uffff\1\135\1\uffff\3\135\2\uffff\4\135\4\uffff\10\135\1\u01c6\1\135\1\uffff\1\u01c8\3\135\1\u01cc\1\135\1\u01ce\3\135\1\uffff\1\u01d3\1\135\1\u01d6\1\u01d7\1\135\1\u01d9\3\135\1\u01dd\1\uffff\1\135\1\uffff\1\u01df\1\u01e0\1\135\1\uffff\1\135\1\uffff\1\135\1\u01e4\2\135\1\uffff\2\135\2\uffff\1\135\1\uffff\1\135\1\u01eb\1\135\1\uffff\1\135\2\uffff\1\u01ee\2\135\1\uffff\6\135\1\uffff\1\u01f7\1\u01f8\1\uffff\1\135\1\u01fa\5\135\1\u0200\2\uffff\1\135\1\uffff\1\u0202\2\135\1\u0205\1\u0206\1\uffff\1\u0207\1\uffff\1\u0208\1\u0209\5\uffff";
+    static final String DFA21_eofS =
+        "\u020a\uffff";
+    static final String DFA21_minS =
+        "\1\0\1\75\1\174\1\46\1\53\1\55\2\52\3\75\1\76\2\56\1\141\1\154\1\164\1\146\3\141\1\154\1\145\1\164\1\165\1\156\1\157\1\141\1\151\1\141\2\uffff\1\166\1\141\1\145\10\uffff\1\72\1\150\1\145\1\150\2\145\1\156\2\60\1\44\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\154\1\uffff\2\164\1\163\1\141\1\155\1\151\1\156\1\160\1\163\1\44\1\154\1\162\1\156\1\154\1\142\1\163\1\156\1\170\1\141\1\147\1\44\1\154\1\155\1\146\1\44\1\162\1\155\1\164\1\157\1\164\1\155\1\143\1\157\2\uffff\2\145\1\163\1\166\12\uffff\1\151\1\167\1\154\1\164\1\44\1\160\1\162\1\165\1\164\1\171\1\151\1\uffff\1\60\12\uffff\2\44\1\145\1\151\1\145\1\164\1\145\1\44\1\164\1\143\1\157\1\164\1\uffff\1\163\1\44\1\141\1\156\1\165\2\145\1\143\2\44\1\163\1\44\1\uffff\1\115\1\164\1\145\1\141\1\uffff\1\151\2\145\1\154\2\145\1\153\1\160\2\162\1\101\1\145\1\154\1\44\1\154\1\126\1\uffff\1\145\1\157\1\44\1\145\1\165\1\44\1\161\2\uffff\1\156\1\164\1\44\1\151\1\162\1\uffff\1\143\1\150\1\162\1\141\1\145\1\uffff\1\154\1\164\1\155\2\44\1\150\2\uffff\1\165\1\uffff\1\145\1\151\1\156\1\165\1\156\1\162\1\147\1\145\2\44\1\141\1\145\1\44\1\141\2\154\1\145\1\uffff\1\44\1\151\1\44\1\167\1\uffff\1\44\1\162\1\uffff\1\165\1\144\1\171\1\uffff\1\143\1\44\1\150\1\162\1\164\1\156\1\44\1\154\1\44\1\156\2\uffff\1\44\1\162\1\155\1\156\1\163\1\154\1\147\1\151\1\145\1\141\1\uffff\1\164\1\145\1\141\1\165\1\151\1\145\1\141\1\145\1\uffff\1\147\1\162\1\uffff\1\162\1\154\2\44\1\uffff\1\163\1\146\1\151\1\uffff\1\44\1\uffff\1\156\1\145\1\163\1\151\2\44\1\uffff\1\44\1\157\1\44\1\143\1\uffff\1\171\1\uffff\1\44\1\uffff\1\145\1\142\1\143\1\151\1\164\1\44\1\143\1\162\1\156\2\141\1\154\1\165\1\141\2\156\1\145\1\171\1\143\1\145\1\164\1\143\1\44\1\171\2\uffff\1\151\1\44\1\155\1\uffff\1\44\1\115\1\44\1\157\3\uffff\1\156\1\uffff\1\145\1\44\1\uffff\1\44\1\145\1\164\1\157\1\44\1\uffff\3\44\1\155\1\162\1\146\2\162\1\164\1\165\1\153\1\163\1\157\1\44\1\171\1\150\1\uffff\1\160\1\142\1\uffff\1\145\1\uffff\1\145\1\uffff\1\156\1\151\1\157\2\uffff\1\162\1\55\1\156\1\145\4\uffff\1\160\1\163\1\131\1\163\1\164\1\150\1\164\1\163\1\44\1\156\1\uffff\1\44\1\171\1\145\1\154\1\44\1\155\1\44\1\172\1\146\1\116\1\uffff\1\44\1\141\2\44\1\145\1\44\1\145\1\163\1\145\1\44\1\uffff\1\144\1\uffff\2\44\1\145\1\uffff\1\142\1\uffff\1\145\1\44\1\141\1\163\1\uffff\1\163\1\142\2\uffff\1\141\1\uffff\1\162\1\44\1\163\1\uffff\1\163\2\uffff\1\44\1\145\1\144\1\uffff\1\155\1\141\1\165\1\145\1\162\1\163\1\uffff\2\44\1\uffff\1\162\1\44\1\145\1\147\2\162\1\163\1\44\2\uffff\1\163\1\uffff\1\44\2\145\2\44\1\uffff\1\44\1\uffff\2\44\5\uffff";
+    static final String DFA21_maxS =
+        "\1\uffff\1\76\1\174\1\46\1\75\1\76\5\75\1\76\1\56\1\72\1\141\1\170\1\171\1\156\1\157\1\165\1\151\1\166\1\157\1\164\1\165\1\156\1\157\1\141\1\151\1\162\2\uffff\1\166\1\151\1\145\10\uffff\1\72\1\150\1\165\1\171\2\145\1\156\1\170\1\154\1\172\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\162\1\uffff\2\164\1\163\1\141\1\160\1\151\1\156\1\160\1\163\1\172\1\154\1\162\1\156\1\165\1\142\1\164\1\156\1\170\1\141\1\147\1\172\1\154\1\163\1\146\1\172\1\162\1\155\1\164\1\157\1\164\1\155\1\143\1\157\2\uffff\2\145\1\163\1\166\12\uffff\1\151\1\167\1\154\1\164\1\172\1\160\1\162\1\171\1\164\1\171\1\151\1\uffff\1\154\12\uffff\2\172\1\145\1\151\1\145\1\164\1\145\1\172\1\164\1\143\1\157\1\164\1\uffff\1\163\1\172\1\141\1\156\1\165\2\145\1\143\2\172\1\163\1\172\1\uffff\1\115\1\164\1\145\1\141\1\uffff\1\151\2\145\1\154\2\145\1\153\1\160\2\162\1\101\1\145\1\154\1\172\1\154\1\126\1\uffff\1\145\1\157\1\172\1\145\1\165\1\172\1\161\2\uffff\1\156\1\164\1\172\1\151\1\162\1\uffff\1\143\1\150\1\162\1\141\1\145\1\uffff\1\154\1\164\1\155\2\172\1\150\2\uffff\1\165\1\uffff\1\145\1\151\1\156\1\165\1\156\1\162\1\147\1\145\2\172\1\141\1\145\1\172\1\141\2\154\1\145\1\uffff\1\172\1\151\1\172\1\167\1\uffff\1\172\1\162\1\uffff\1\165\1\163\1\171\1\uffff\1\143\1\172\1\150\1\162\1\164\1\156\1\172\1\154\1\172\1\156\2\uffff\1\172\1\162\1\155\1\156\1\163\1\154\1\147\1\151\1\145\1\141\1\uffff\1\164\1\145\1\157\1\165\1\157\1\145\1\141\1\145\1\uffff\1\147\1\162\1\uffff\1\162\1\154\2\172\1\uffff\1\163\1\146\1\151\1\uffff\1\172\1\uffff\1\156\1\145\1\163\1\151\2\172\1\uffff\1\172\1\157\1\172\1\143\1\uffff\1\171\1\uffff\1\172\1\uffff\1\145\1\142\1\143\1\151\1\164\1\172\1\143\1\162\1\156\2\141\1\154\1\165\1\141\2\156\1\145\1\171\1\143\1\145\1\164\1\143\1\172\1\171\2\uffff\1\151\1\172\1\155\1\uffff\1\172\1\115\1\172\1\157\3\uffff\1\156\1\uffff\1\145\1\172\1\uffff\1\172\1\145\1\164\1\157\1\172\1\uffff\3\172\1\155\1\162\1\146\2\162\1\164\1\165\1\153\1\163\1\157\1\172\1\171\1\150\1\uffff\1\160\1\142\1\uffff\1\145\1\uffff\1\145\1\uffff\1\156\1\151\1\157\2\uffff\1\162\1\55\1\156\1\145\4\uffff\1\160\1\163\1\131\1\163\1\164\1\150\1\164\1\163\1\172\1\156\1\uffff\1\172\1\171\1\145\1\154\1\172\1\155\2\172\1\146\1\116\1\uffff\1\172\1\155\2\172\1\145\1\172\1\145\1\163\1\145\1\172\1\uffff\1\144\1\uffff\2\172\1\145\1\uffff\1\142\1\uffff\1\145\1\172\1\141\1\163\1\uffff\1\163\1\142\2\uffff\1\141\1\uffff\1\162\1\172\1\163\1\uffff\1\163\2\uffff\1\172\1\145\1\144\1\uffff\1\155\1\141\1\165\1\145\1\162\1\163\1\uffff\2\172\1\uffff\1\162\1\172\1\145\1\147\2\162\1\163\1\172\2\uffff\1\163\1\uffff\1\172\2\145\2\172\1\uffff\1\172\1\uffff\2\172\5\uffff";
+    static final String DFA21_acceptS =
+        "\36\uffff\1\76\1\77\3\uffff\1\112\1\113\1\114\1\115\1\116\1\117\1\120\1\121\12\uffff\1\173\2\174\1\177\1\u0080\1\uffff\1\23\1\1\1\2\1\165\1\3\1\147\1\4\1\35\1\26\1\5\1\20\1\36\1\27\1\6\1\31\1\30\1\7\1\175\1\176\1\32\1\10\1\33\1\uffff\1\34\1\15\1\16\1\24\1\17\1\uffff\1\37\1\25\1\164\1\146\1\uffff\1\173\41\uffff\1\76\1\77\4\uffff\1\112\1\113\1\114\1\115\1\116\1\117\1\120\1\121\1\163\1\127\13\uffff\1\170\1\uffff\1\171\1\172\1\174\1\177\1\13\1\11\1\14\1\12\1\21\1\22\14\uffff\1\124\14\uffff\1\123\4\uffff\1\134\20\uffff\1\162\7\uffff\1\40\1\166\5\uffff\1\47\5\uffff\1\132\6\uffff\1\51\1\52\1\uffff\1\53\21\uffff\1\135\4\uffff\1\142\2\uffff\1\155\3\uffff\1\125\12\uffff\1\100\1\131\12\uffff\1\61\10\uffff\1\62\2\uffff\1\102\4\uffff\1\136\3\uffff\1\160\1\uffff\1\167\6\uffff\1\45\4\uffff\1\46\1\uffff\1\50\1\uffff\1\145\30\uffff\1\106\1\133\3\uffff\1\140\4\uffff\1\105\1\42\1\126\1\uffff\1\43\2\uffff\1\107\5\uffff\1\55\20\uffff\1\152\2\uffff\1\137\1\uffff\1\141\1\uffff\1\41\3\uffff\1\143\1\111\4\uffff\1\130\1\56\1\57\1\60\12\uffff\1\75\12\uffff\1\54\12\uffff\1\71\1\uffff\1\110\3\uffff\1\151\1\uffff\1\44\4\uffff\1\103\2\uffff\1\63\1\64\1\uffff\1\72\3\uffff\1\70\1\uffff\1\104\1\157\3\uffff\1\122\6\uffff\1\67\2\uffff\1\161\10\uffff\1\73\1\74\1\uffff\1\144\5\uffff\1\66\1\uffff\1\153\2\uffff\1\154\1\65\1\156\1\101\1\150";
+    static final String DFA21_specialS =
+        "\1\0\u0209\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\71\2\70\2\71\1\70\22\71\1\70\1\11\1\66\1\51\1\65\1\10\1\3\1\67\1\45\1\46\1\6\1\4\1\47\1\5\1\14\1\7\1\62\11\63\1\53\1\43\1\13\1\1\1\12\1\15\1\44\1\65\1\32\1\65\1\33\4\65\1\31\4\65\1\30\4\65\1\27\1\34\6\65\1\52\1\71\1\50\1\64\1\65\1\71\1\25\1\65\1\23\1\26\1\17\1\22\1\65\1\41\1\21\1\65\1\60\1\42\1\24\1\55\1\40\1\35\1\65\1\57\1\20\1\56\1\61\1\16\1\54\3\65\1\36\1\2\1\37\uff82\71",
+            "\1\72\1\73",
+            "\1\75",
+            "\1\77",
+            "\1\102\21\uffff\1\101",
+            "\1\106\17\uffff\1\104\1\105",
+            "\1\111\22\uffff\1\110",
+            "\1\114\4\uffff\1\115\15\uffff\1\113",
+            "\1\117",
+            "\1\121",
+            "\1\123",
+            "\1\125",
+            "\1\127",
+            "\1\132\13\uffff\1\131",
+            "\1\134",
+            "\1\140\1\uffff\1\137\11\uffff\1\136",
+            "\1\141\1\142\1\uffff\1\143\1\uffff\1\144",
+            "\1\147\6\uffff\1\145\1\146",
+            "\1\150\7\uffff\1\152\5\uffff\1\151",
+            "\1\155\15\uffff\1\153\5\uffff\1\154",
+            "\1\157\3\uffff\1\160\3\uffff\1\156",
+            "\1\163\6\uffff\1\162\2\uffff\1\161",
+            "\1\165\3\uffff\1\164\5\uffff\1\166",
+            "\1\167",
+            "\1\170",
+            "\1\171",
+            "\1\172",
+            "\1\173",
+            "\1\174",
+            "\1\175\20\uffff\1\176",
+            "",
+            "",
+            "\1\u0081",
+            "\1\u0083\7\uffff\1\u0082",
+            "\1\u0084",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u008d",
+            "\1\u008f",
+            "\1\u0090\11\uffff\1\u0092\3\uffff\1\u0093\1\uffff\1\u0091",
+            "\1\u0095\11\uffff\1\u0096\6\uffff\1\u0094",
+            "\1\u0097",
+            "\1\u0098",
+            "\1\u0099",
+            "\12\u009b\10\uffff\1\u009d\1\uffff\3\u009d\5\uffff\1\u009d\13\uffff\1\u009a\6\uffff\1\u009b\2\uffff\1\u009d\1\uffff\3\u009d\5\uffff\1\u009d\13\uffff\1\u009a",
+            "\12\u009b\10\uffff\1\u009d\1\uffff\3\u009d\5\uffff\1\u009d\22\uffff\1\u009b\2\uffff\1\u009d\1\uffff\3\u009d\5\uffff\1\u009d",
+            "\1\135\34\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00a0",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00a2",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00a4",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00a6\5\uffff\1\u00a7",
+            "",
+            "\1\u00a8",
+            "\1\u00a9",
+            "\1\u00aa",
+            "\1\u00ab",
+            "\1\u00ad\2\uffff\1\u00ac",
+            "\1\u00ae",
+            "\1\u00af",
+            "\1\u00b0",
+            "\1\u00b1",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u00b3",
+            "\1\u00b4",
+            "\1\u00b5",
+            "\1\u00b7\10\uffff\1\u00b6",
+            "\1\u00b8",
+            "\1\u00b9\1\u00ba",
+            "\1\u00bb",
+            "\1\u00bc",
+            "\1\u00bd",
+            "\1\u00be",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u00c0",
+            "\1\u00c2\5\uffff\1\u00c1",
+            "\1\u00c3",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u00c5",
+            "\1\u00c6",
+            "\1\u00c7",
+            "\1\u00c8",
+            "\1\u00c9",
+            "\1\u00ca",
+            "\1\u00cb",
+            "\1\u00cc",
+            "",
+            "",
+            "\1\u00cd",
+            "\1\u00ce",
+            "\1\u00cf",
+            "\1\u00d0",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00d1",
+            "\1\u00d2",
+            "\1\u00d3",
+            "\1\u00d4",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u00d6",
+            "\1\u00d7",
+            "\1\u00d9\3\uffff\1\u00d8",
+            "\1\u00da",
+            "\1\u00db",
+            "\1\u00dc",
+            "",
+            "\12\u009b\10\uffff\1\u009d\1\uffff\3\u009d\5\uffff\1\u009d\22\uffff\1\u009b\2\uffff\1\u009d\1\uffff\3\u009d\5\uffff\1\u009d",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u00df",
+            "\1\u00e0",
+            "\1\u00e1",
+            "\1\u00e2",
+            "\1\u00e3",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u00e5",
+            "\1\u00e6",
+            "\1\u00e7",
+            "\1\u00e8",
+            "",
+            "\1\u00e9",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u00eb",
+            "\1\u00ec",
+            "\1\u00ed",
+            "\1\u00ee",
+            "\1\u00ef",
+            "\1\u00f0",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u00f3",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "",
+            "\1\u00f5",
+            "\1\u00f6",
+            "\1\u00f7",
+            "\1\u00f8",
+            "",
+            "\1\u00f9",
+            "\1\u00fa",
+            "\1\u00fb",
+            "\1\u00fc",
+            "\1\u00fd",
+            "\1\u00fe",
+            "\1\u00ff",
+            "\1\u0100",
+            "\1\u0101",
+            "\1\u0102",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\u0105",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u0107",
+            "\1\u0108",
+            "",
+            "\1\u0109",
+            "\1\u010a",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u010c",
+            "\1\u010d",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u010f",
+            "",
+            "",
+            "\1\u0110",
+            "\1\u0111",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u0113",
+            "\1\u0114",
+            "",
+            "\1\u0115",
+            "\1\u0116",
+            "\1\u0117",
+            "\1\u0118",
+            "\1\u0119",
+            "",
+            "\1\u011a",
+            "\1\u011b",
+            "\1\u011c",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u011f",
+            "",
+            "",
+            "\1\u0120",
+            "",
+            "\1\u0121",
+            "\1\u0122",
+            "\1\u0123",
+            "\1\u0124",
+            "\1\u0125",
+            "\1\u0126",
+            "\1\u0127",
+            "\1\u0128",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\135\13\uffff\12\135\7\uffff\3\135\1\u0130\3\135\1\u012c\4\135\1\u012e\3\135\1\u012d\1\135\1\u0131\3\135\1\u012f\1\135\1\u012b\1\135\4\uffff\1\135\1\uffff\22\135\1\u012a\7\135",
+            "\1\u0133",
+            "\1\u0134",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u0136",
+            "\1\u0137",
+            "\1\u0138",
+            "\1\u0139",
+            "",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u013b",
+            "\1\135\13\uffff\12\135\7\uffff\23\135\1\u013d\6\135\4\uffff\1\135\1\uffff\16\135\1\u013c\13\135",
+            "\1\u013f",
+            "",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u0141",
+            "",
+            "\1\u0142",
+            "\1\u0143\16\uffff\1\u0144",
+            "\1\u0145",
+            "",
+            "\1\u0146",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u0148",
+            "\1\u0149",
+            "\1\u014a",
+            "\1\u014b",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u014d",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u014f",
+            "",
+            "",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u0151",
+            "\1\u0152",
+            "\1\u0153",
+            "\1\u0154",
+            "\1\u0155",
+            "\1\u0156",
+            "\1\u0157",
+            "\1\u0158",
+            "\1\u0159",
+            "",
+            "\1\u015a",
+            "\1\u015b",
+            "\1\u015c\15\uffff\1\u015d",
+            "\1\u015e",
+            "\1\u0160\5\uffff\1\u015f",
+            "\1\u0161",
+            "\1\u0162",
+            "\1\u0163",
+            "",
+            "\1\u0164",
+            "\1\u0165",
+            "",
+            "\1\u0166",
+            "\1\u0167",
+            "\1\135\13\uffff\12\135\7\uffff\23\135\1\u0168\6\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "",
+            "\1\u016b",
+            "\1\u016c",
+            "\1\u016d",
+            "",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "",
+            "\1\u016f",
+            "\1\u0170",
+            "\1\u0171",
+            "\1\u0172",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u0176",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u0178",
+            "",
+            "\1\u0179",
+            "",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "",
+            "\1\u017b",
+            "\1\u017c",
+            "\1\u017d",
+            "\1\u017e",
+            "\1\u017f",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u0181",
+            "\1\u0182",
+            "\1\u0183",
+            "\1\u0184",
+            "\1\u0185",
+            "\1\u0186",
+            "\1\u0187",
+            "\1\u0188",
+            "\1\u0189",
+            "\1\u018a",
+            "\1\u018b",
+            "\1\u018c",
+            "\1\u018d",
+            "\1\u018e",
+            "\1\u018f",
+            "\1\u0190",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u0192",
+            "",
+            "",
+            "\1\u0193",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u0195",
+            "",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u0197",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u0199",
+            "",
+            "",
+            "",
+            "\1\u019a",
+            "",
+            "\1\u019b",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u019e",
+            "\1\u019f",
+            "\1\u01a0",
+            "\1\135\13\uffff\12\135\7\uffff\14\135\1\u01a1\15\135\4\uffff\1\135\1\uffff\32\135",
+            "",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u01a6",
+            "\1\u01a7",
+            "\1\u01a8",
+            "\1\u01a9",
+            "\1\u01aa",
+            "\1\u01ab",
+            "\1\u01ac",
+            "\1\u01ad",
+            "\1\u01ae",
+            "\1\u01af",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u01b1",
+            "\1\u01b2",
+            "",
+            "\1\u01b3",
+            "\1\u01b4",
+            "",
+            "\1\u01b5",
+            "",
+            "\1\u01b6",
+            "",
+            "\1\u01b7",
+            "\1\u01b8",
+            "\1\u01b9",
+            "",
+            "",
+            "\1\u01ba",
+            "\1\u01bb",
+            "\1\u01bc",
+            "\1\u01bd",
+            "",
+            "",
+            "",
+            "",
+            "\1\u01be",
+            "\1\u01bf",
+            "\1\u01c0",
+            "\1\u01c1",
+            "\1\u01c2",
+            "\1\u01c3",
+            "\1\u01c4",
+            "\1\u01c5",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u01c7",
+            "",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u01c9",
+            "\1\u01ca",
+            "\1\u01cb",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u01cd",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u01cf",
+            "\1\u01d0",
+            "\1\u01d1",
+            "",
+            "\1\135\13\uffff\12\135\7\uffff\24\135\1\u01d2\5\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u01d4\13\uffff\1\u01d5",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u01d8",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u01da",
+            "\1\u01db",
+            "\1\u01dc",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "",
+            "\1\u01de",
+            "",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u01e1",
+            "",
+            "\1\u01e2",
+            "",
+            "\1\u01e3",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u01e5",
+            "\1\u01e6",
+            "",
+            "\1\u01e7",
+            "\1\u01e8",
+            "",
+            "",
+            "\1\u01e9",
+            "",
+            "\1\u01ea",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u01ec",
+            "",
+            "\1\u01ed",
+            "",
+            "",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u01ef",
+            "\1\u01f0",
+            "",
+            "\1\u01f1",
+            "\1\u01f2",
+            "\1\u01f3",
+            "\1\u01f4",
+            "\1\u01f5",
+            "\1\u01f6",
+            "",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "",
+            "\1\u01f9",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u01fb",
+            "\1\u01fc",
+            "\1\u01fd",
+            "\1\u01fe",
+            "\1\u01ff",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "",
+            "",
+            "\1\u0201",
+            "",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\u0203",
+            "\1\u0204",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "\1\135\13\uffff\12\135\7\uffff\32\135\4\uffff\1\135\1\uffff\32\135",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    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 | 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=='+') ) {s = 4;}
+
+                        else if ( (LA21_0=='-') ) {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=='v') ) {s = 14;}
+
+                        else if ( (LA21_0=='e') ) {s = 15;}
+
+                        else if ( (LA21_0=='s') ) {s = 16;}
+
+                        else if ( (LA21_0=='i') ) {s = 17;}
+
+                        else if ( (LA21_0=='f') ) {s = 18;}
+
+                        else if ( (LA21_0=='c') ) {s = 19;}
+
+                        else if ( (LA21_0=='m') ) {s = 20;}
+
+                        else if ( (LA21_0=='a') ) {s = 21;}
+
+                        else if ( (LA21_0=='d') ) {s = 22;}
+
+                        else if ( (LA21_0=='S') ) {s = 23;}
+
+                        else if ( (LA21_0=='N') ) {s = 24;}
+
+                        else if ( (LA21_0=='I') ) {s = 25;}
+
+                        else if ( (LA21_0=='B') ) {s = 26;}
+
+                        else if ( (LA21_0=='D') ) {s = 27;}
+
+                        else if ( (LA21_0=='T') ) {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=='o') ) {s = 32;}
+
+                        else if ( (LA21_0=='h') ) {s = 33;}
+
+                        else if ( (LA21_0=='l') ) {s = 34;}
+
+                        else if ( (LA21_0==';') ) {s = 35;}
+
+                        else if ( (LA21_0=='@') ) {s = 36;}
+
+                        else if ( (LA21_0=='(') ) {s = 37;}
+
+                        else if ( (LA21_0==')') ) {s = 38;}
+
+                        else if ( (LA21_0==',') ) {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=='w') ) {s = 44;}
+
+                        else if ( (LA21_0=='n') ) {s = 45;}
+
+                        else if ( (LA21_0=='t') ) {s = 46;}
+
+                        else if ( (LA21_0=='r') ) {s = 47;}
+
+                        else if ( (LA21_0=='k') ) {s = 48;}
+
+                        else if ( (LA21_0=='u') ) {s = 49;}
+
+                        else if ( (LA21_0=='0') ) {s = 50;}
+
+                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 51;}
+
+                        else if ( (LA21_0=='^') ) {s = 52;}
+
+                        else if ( (LA21_0=='$'||LA21_0=='A'||LA21_0=='C'||(LA21_0>='E' && LA21_0<='H')||(LA21_0>='J' && LA21_0<='M')||(LA21_0>='O' && LA21_0<='R')||(LA21_0>='U' && LA21_0<='Z')||LA21_0=='_'||LA21_0=='b'||LA21_0=='g'||LA21_0=='j'||LA21_0=='q'||(LA21_0>='x' && LA21_0<='z')) ) {s = 53;}
+
+                        else if ( (LA21_0=='\"') ) {s = 54;}
+
+                        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>='\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;}
+
+                        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.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/contentassist/antlr/internal/InternalCubeDSLParser.java b/org.eclipse.osbp.xtext.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/contentassist/antlr/internal/InternalCubeDSLParser.java
new file mode 100644
index 0000000..76c5153
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ide/src-gen/org/eclipse/osbp/xtext/cubedsl/ide/contentassist/antlr/internal/InternalCubeDSLParser.java
@@ -0,0 +1,77622 @@
+package org.eclipse.osbp.xtext.cubedsl.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.cubedsl.services.CubeDSLGrammarAccess;
+
+
+
+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 InternalCubeDSLParser 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", "'='", "'||'", "'&&'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'sum'", "'count'", "'min'", "'max'", "'avg'", "'distinct-count'", "'String'", "'Numeric'", "'Integer'", "'Boolean'", "'Date'", "'Time'", "'Timestamp'", "'TimeYears'", "'TimeHalfYears'", "'TimeQuarters'", "'TimeMonths'", "'TimeWeeks'", "'TimeDays'", "'TimeHours'", "'TimeMinutes'", "'TimeSeconds'", "'package'", "'{'", "'}'", "'cube'", "'dimensionUsage'", "'over'", "'dimension'", "'hierarchy'", "'entity'", "'level'", "'column'", "'property'", "'measure'", "';'", "'@'", "'('", "')'", "','", "']'", "'#'", "'['", "'instanceof'", "'as'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'defaultMeasure'", "'typeTime'", "'hasAll'", "'allMemberName'", "'defaultMember'", "'key'", "'uniqueMembers'", "'levelType'", "'type'", "'notVisible'", "'ns'", "'::'", "'?.'", "'|'", "'var'", "'true'"
+    };
+    public static final int RULE_HEX=6;
+    public static final int T__50=50;
+    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__52=52;
+    public static final int T__53=53;
+    public static final int T__54=54;
+    public static final int T__60=60;
+    public static final int T__61=61;
+    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 InternalCubeDSLParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalCubeDSLParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalCubeDSLParser.tokenNames; }
+    public String getGrammarFileName() { return "InternalCubeDSL.g"; }
+
+
+    	private CubeDSLGrammarAccess grammarAccess;
+
+    	public void setGrammarAccess(CubeDSLGrammarAccess grammarAccess) {
+    		this.grammarAccess = grammarAccess;
+    	}
+
+    	@Override
+    	protected Grammar getGrammar() {
+    		return grammarAccess.getGrammar();
+    	}
+
+    	@Override
+    	protected String getValueForTokenName(String tokenName) {
+    		return tokenName;
+    	}
+
+
+
+    // $ANTLR start "entryRuleCubeModel"
+    // InternalCubeDSL.g:67:1: entryRuleCubeModel : ruleCubeModel EOF ;
+    public final void entryRuleCubeModel() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:68:1: ( ruleCubeModel EOF )
+            // InternalCubeDSL.g:69:1: ruleCubeModel EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeModelRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleCubeModel();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeModelRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeModel"
+
+
+    // $ANTLR start "ruleCubeModel"
+    // InternalCubeDSL.g:76:1: ruleCubeModel : ( ( rule__CubeModel__Group__0 ) ) ;
+    public final void ruleCubeModel() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:80:2: ( ( ( rule__CubeModel__Group__0 ) ) )
+            // InternalCubeDSL.g:81:2: ( ( rule__CubeModel__Group__0 ) )
+            {
+            // InternalCubeDSL.g:81:2: ( ( rule__CubeModel__Group__0 ) )
+            // InternalCubeDSL.g:82:3: ( rule__CubeModel__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeModelAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:83:3: ( rule__CubeModel__Group__0 )
+            // InternalCubeDSL.g:83:4: rule__CubeModel__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeModel__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeModelAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeModel"
+
+
+    // $ANTLR start "entryRuleCubePackage"
+    // InternalCubeDSL.g:92:1: entryRuleCubePackage : ruleCubePackage EOF ;
+    public final void entryRuleCubePackage() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:93:1: ( ruleCubePackage EOF )
+            // InternalCubeDSL.g:94:1: ruleCubePackage EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubePackageRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleCubePackage();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubePackageRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubePackage"
+
+
+    // $ANTLR start "ruleCubePackage"
+    // InternalCubeDSL.g:101:1: ruleCubePackage : ( ( rule__CubePackage__Group__0 ) ) ;
+    public final void ruleCubePackage() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:105:2: ( ( ( rule__CubePackage__Group__0 ) ) )
+            // InternalCubeDSL.g:106:2: ( ( rule__CubePackage__Group__0 ) )
+            {
+            // InternalCubeDSL.g:106:2: ( ( rule__CubePackage__Group__0 ) )
+            // InternalCubeDSL.g:107:3: ( rule__CubePackage__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubePackageAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:108:3: ( rule__CubePackage__Group__0 )
+            // InternalCubeDSL.g:108:4: rule__CubePackage__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubePackage__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubePackageAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubePackage"
+
+
+    // $ANTLR start "entryRuleCubeType"
+    // InternalCubeDSL.g:117:1: entryRuleCubeType : ruleCubeType EOF ;
+    public final void entryRuleCubeType() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:118:1: ( ruleCubeType EOF )
+            // InternalCubeDSL.g:119:1: ruleCubeType EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleCubeType();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeType"
+
+
+    // $ANTLR start "ruleCubeType"
+    // InternalCubeDSL.g:126:1: ruleCubeType : ( ( rule__CubeType__Group__0 ) ) ;
+    public final void ruleCubeType() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:130:2: ( ( ( rule__CubeType__Group__0 ) ) )
+            // InternalCubeDSL.g:131:2: ( ( rule__CubeType__Group__0 ) )
+            {
+            // InternalCubeDSL.g:131:2: ( ( rule__CubeType__Group__0 ) )
+            // InternalCubeDSL.g:132:3: ( rule__CubeType__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:133:3: ( rule__CubeType__Group__0 )
+            // InternalCubeDSL.g:133:4: rule__CubeType__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeType__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeType"
+
+
+    // $ANTLR start "entryRuleCubeDimensionUsage"
+    // InternalCubeDSL.g:142:1: entryRuleCubeDimensionUsage : ruleCubeDimensionUsage EOF ;
+    public final void entryRuleCubeDimensionUsage() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:143:1: ( ruleCubeDimensionUsage EOF )
+            // InternalCubeDSL.g:144:1: ruleCubeDimensionUsage EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionUsageRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleCubeDimensionUsage();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionUsageRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeDimensionUsage"
+
+
+    // $ANTLR start "ruleCubeDimensionUsage"
+    // InternalCubeDSL.g:151:1: ruleCubeDimensionUsage : ( ( rule__CubeDimensionUsage__Group__0 ) ) ;
+    public final void ruleCubeDimensionUsage() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:155:2: ( ( ( rule__CubeDimensionUsage__Group__0 ) ) )
+            // InternalCubeDSL.g:156:2: ( ( rule__CubeDimensionUsage__Group__0 ) )
+            {
+            // InternalCubeDSL.g:156:2: ( ( rule__CubeDimensionUsage__Group__0 ) )
+            // InternalCubeDSL.g:157:3: ( rule__CubeDimensionUsage__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionUsageAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:158:3: ( rule__CubeDimensionUsage__Group__0 )
+            // InternalCubeDSL.g:158:4: rule__CubeDimensionUsage__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionUsage__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionUsageAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeDimensionUsage"
+
+
+    // $ANTLR start "entryRuleCubeDimension"
+    // InternalCubeDSL.g:167:1: entryRuleCubeDimension : ruleCubeDimension EOF ;
+    public final void entryRuleCubeDimension() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:168:1: ( ruleCubeDimension EOF )
+            // InternalCubeDSL.g:169:1: ruleCubeDimension EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleCubeDimension();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeDimension"
+
+
+    // $ANTLR start "ruleCubeDimension"
+    // InternalCubeDSL.g:176:1: ruleCubeDimension : ( ( rule__CubeDimension__Group__0 ) ) ;
+    public final void ruleCubeDimension() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:180:2: ( ( ( rule__CubeDimension__Group__0 ) ) )
+            // InternalCubeDSL.g:181:2: ( ( rule__CubeDimension__Group__0 ) )
+            {
+            // InternalCubeDSL.g:181:2: ( ( rule__CubeDimension__Group__0 ) )
+            // InternalCubeDSL.g:182:3: ( rule__CubeDimension__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:183:3: ( rule__CubeDimension__Group__0 )
+            // InternalCubeDSL.g:183:4: rule__CubeDimension__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeDimension__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeDimension"
+
+
+    // $ANTLR start "entryRuleCubeHierarchy"
+    // InternalCubeDSL.g:192:1: entryRuleCubeHierarchy : ruleCubeHierarchy EOF ;
+    public final void entryRuleCubeHierarchy() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:193:1: ( ruleCubeHierarchy EOF )
+            // InternalCubeDSL.g:194:1: ruleCubeHierarchy EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleCubeHierarchy();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeHierarchy"
+
+
+    // $ANTLR start "ruleCubeHierarchy"
+    // InternalCubeDSL.g:201:1: ruleCubeHierarchy : ( ( rule__CubeHierarchy__Group__0 ) ) ;
+    public final void ruleCubeHierarchy() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:205:2: ( ( ( rule__CubeHierarchy__Group__0 ) ) )
+            // InternalCubeDSL.g:206:2: ( ( rule__CubeHierarchy__Group__0 ) )
+            {
+            // InternalCubeDSL.g:206:2: ( ( rule__CubeHierarchy__Group__0 ) )
+            // InternalCubeDSL.g:207:3: ( rule__CubeHierarchy__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:208:3: ( rule__CubeHierarchy__Group__0 )
+            // InternalCubeDSL.g:208:4: rule__CubeHierarchy__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeHierarchy__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeHierarchy"
+
+
+    // $ANTLR start "entryRuleCubeEntity"
+    // InternalCubeDSL.g:217:1: entryRuleCubeEntity : ruleCubeEntity EOF ;
+    public final void entryRuleCubeEntity() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:218:1: ( ruleCubeEntity EOF )
+            // InternalCubeDSL.g:219:1: ruleCubeEntity EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeEntityRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleCubeEntity();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeEntityRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeEntity"
+
+
+    // $ANTLR start "ruleCubeEntity"
+    // InternalCubeDSL.g:226:1: ruleCubeEntity : ( ( rule__CubeEntity__Group__0 ) ) ;
+    public final void ruleCubeEntity() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:230:2: ( ( ( rule__CubeEntity__Group__0 ) ) )
+            // InternalCubeDSL.g:231:2: ( ( rule__CubeEntity__Group__0 ) )
+            {
+            // InternalCubeDSL.g:231:2: ( ( rule__CubeEntity__Group__0 ) )
+            // InternalCubeDSL.g:232:3: ( rule__CubeEntity__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeEntityAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:233:3: ( rule__CubeEntity__Group__0 )
+            // InternalCubeDSL.g:233:4: rule__CubeEntity__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeEntity__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeEntityAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeEntity"
+
+
+    // $ANTLR start "entryRuleCubeTypeEntity"
+    // InternalCubeDSL.g:242:1: entryRuleCubeTypeEntity : ruleCubeTypeEntity EOF ;
+    public final void entryRuleCubeTypeEntity() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:243:1: ( ruleCubeTypeEntity EOF )
+            // InternalCubeDSL.g:244:1: ruleCubeTypeEntity EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeEntityRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleCubeTypeEntity();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeEntityRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeTypeEntity"
+
+
+    // $ANTLR start "ruleCubeTypeEntity"
+    // InternalCubeDSL.g:251:1: ruleCubeTypeEntity : ( ( rule__CubeTypeEntity__Group__0 ) ) ;
+    public final void ruleCubeTypeEntity() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:255:2: ( ( ( rule__CubeTypeEntity__Group__0 ) ) )
+            // InternalCubeDSL.g:256:2: ( ( rule__CubeTypeEntity__Group__0 ) )
+            {
+            // InternalCubeDSL.g:256:2: ( ( rule__CubeTypeEntity__Group__0 ) )
+            // InternalCubeDSL.g:257:3: ( rule__CubeTypeEntity__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeEntityAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:258:3: ( rule__CubeTypeEntity__Group__0 )
+            // InternalCubeDSL.g:258:4: rule__CubeTypeEntity__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeTypeEntity__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeEntityAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeTypeEntity"
+
+
+    // $ANTLR start "entryRuleCubeDimensionEntity"
+    // InternalCubeDSL.g:267:1: entryRuleCubeDimensionEntity : ruleCubeDimensionEntity EOF ;
+    public final void entryRuleCubeDimensionEntity() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:268:1: ( ruleCubeDimensionEntity EOF )
+            // InternalCubeDSL.g:269:1: ruleCubeDimensionEntity EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleCubeDimensionEntity();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeDimensionEntity"
+
+
+    // $ANTLR start "ruleCubeDimensionEntity"
+    // InternalCubeDSL.g:276:1: ruleCubeDimensionEntity : ( ( rule__CubeDimensionEntity__Group__0 ) ) ;
+    public final void ruleCubeDimensionEntity() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:280:2: ( ( ( rule__CubeDimensionEntity__Group__0 ) ) )
+            // InternalCubeDSL.g:281:2: ( ( rule__CubeDimensionEntity__Group__0 ) )
+            {
+            // InternalCubeDSL.g:281:2: ( ( rule__CubeDimensionEntity__Group__0 ) )
+            // InternalCubeDSL.g:282:3: ( rule__CubeDimensionEntity__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:283:3: ( rule__CubeDimensionEntity__Group__0 )
+            // InternalCubeDSL.g:283:4: rule__CubeDimensionEntity__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionEntity__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeDimensionEntity"
+
+
+    // $ANTLR start "entryRuleCubeDimensionEntityEntity"
+    // InternalCubeDSL.g:292:1: entryRuleCubeDimensionEntityEntity : ruleCubeDimensionEntityEntity EOF ;
+    public final void entryRuleCubeDimensionEntityEntity() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:293:1: ( ruleCubeDimensionEntityEntity EOF )
+            // InternalCubeDSL.g:294:1: ruleCubeDimensionEntityEntity EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityEntityRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleCubeDimensionEntityEntity();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityEntityRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeDimensionEntityEntity"
+
+
+    // $ANTLR start "ruleCubeDimensionEntityEntity"
+    // InternalCubeDSL.g:301:1: ruleCubeDimensionEntityEntity : ( ( rule__CubeDimensionEntityEntity__Group__0 ) ) ;
+    public final void ruleCubeDimensionEntityEntity() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:305:2: ( ( ( rule__CubeDimensionEntityEntity__Group__0 ) ) )
+            // InternalCubeDSL.g:306:2: ( ( rule__CubeDimensionEntityEntity__Group__0 ) )
+            {
+            // InternalCubeDSL.g:306:2: ( ( rule__CubeDimensionEntityEntity__Group__0 ) )
+            // InternalCubeDSL.g:307:3: ( rule__CubeDimensionEntityEntity__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityEntityAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:308:3: ( rule__CubeDimensionEntityEntity__Group__0 )
+            // InternalCubeDSL.g:308:4: rule__CubeDimensionEntityEntity__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionEntityEntity__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityEntityAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeDimensionEntityEntity"
+
+
+    // $ANTLR start "entryRuleCubeLevel"
+    // InternalCubeDSL.g:317:1: entryRuleCubeLevel : ruleCubeLevel EOF ;
+    public final void entryRuleCubeLevel() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:318:1: ( ruleCubeLevel EOF )
+            // InternalCubeDSL.g:319:1: ruleCubeLevel EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleCubeLevel();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeLevel"
+
+
+    // $ANTLR start "ruleCubeLevel"
+    // InternalCubeDSL.g:326:1: ruleCubeLevel : ( ( rule__CubeLevel__Group__0 ) ) ;
+    public final void ruleCubeLevel() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:330:2: ( ( ( rule__CubeLevel__Group__0 ) ) )
+            // InternalCubeDSL.g:331:2: ( ( rule__CubeLevel__Group__0 ) )
+            {
+            // InternalCubeDSL.g:331:2: ( ( rule__CubeLevel__Group__0 ) )
+            // InternalCubeDSL.g:332:3: ( rule__CubeLevel__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:333:3: ( rule__CubeLevel__Group__0 )
+            // InternalCubeDSL.g:333:4: rule__CubeLevel__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeLevel__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeLevel"
+
+
+    // $ANTLR start "entryRuleCubeLevelProp"
+    // InternalCubeDSL.g:342:1: entryRuleCubeLevelProp : ruleCubeLevelProp EOF ;
+    public final void entryRuleCubeLevelProp() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:343:1: ( ruleCubeLevelProp EOF )
+            // InternalCubeDSL.g:344:1: ruleCubeLevelProp EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelPropRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleCubeLevelProp();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelPropRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeLevelProp"
+
+
+    // $ANTLR start "ruleCubeLevelProp"
+    // InternalCubeDSL.g:351:1: ruleCubeLevelProp : ( ( rule__CubeLevelProp__Group__0 ) ) ;
+    public final void ruleCubeLevelProp() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:355:2: ( ( ( rule__CubeLevelProp__Group__0 ) ) )
+            // InternalCubeDSL.g:356:2: ( ( rule__CubeLevelProp__Group__0 ) )
+            {
+            // InternalCubeDSL.g:356:2: ( ( rule__CubeLevelProp__Group__0 ) )
+            // InternalCubeDSL.g:357:3: ( rule__CubeLevelProp__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelPropAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:358:3: ( rule__CubeLevelProp__Group__0 )
+            // InternalCubeDSL.g:358:4: rule__CubeLevelProp__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeLevelProp__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelPropAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeLevelProp"
+
+
+    // $ANTLR start "entryRuleCubeMeasure"
+    // InternalCubeDSL.g:367:1: entryRuleCubeMeasure : ruleCubeMeasure EOF ;
+    public final void entryRuleCubeMeasure() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:368:1: ( ruleCubeMeasure EOF )
+            // InternalCubeDSL.g:369:1: ruleCubeMeasure EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeMeasureRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleCubeMeasure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeMeasureRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleCubeMeasure"
+
+
+    // $ANTLR start "ruleCubeMeasure"
+    // InternalCubeDSL.g:376:1: ruleCubeMeasure : ( ( rule__CubeMeasure__Group__0 ) ) ;
+    public final void ruleCubeMeasure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:380:2: ( ( ( rule__CubeMeasure__Group__0 ) ) )
+            // InternalCubeDSL.g:381:2: ( ( rule__CubeMeasure__Group__0 ) )
+            {
+            // InternalCubeDSL.g:381:2: ( ( rule__CubeMeasure__Group__0 ) )
+            // InternalCubeDSL.g:382:3: ( rule__CubeMeasure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeMeasureAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:383:3: ( rule__CubeMeasure__Group__0 )
+            // InternalCubeDSL.g:383:4: rule__CubeMeasure__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeMeasure__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeMeasureAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeMeasure"
+
+
+    // $ANTLR start "entryRuleLFQN"
+    // InternalCubeDSL.g:392:1: entryRuleLFQN : ruleLFQN EOF ;
+    public final void entryRuleLFQN() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:393:1: ( ruleLFQN EOF )
+            // InternalCubeDSL.g:394:1: ruleLFQN EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getLFQNRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleLFQN();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getLFQNRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleLFQN"
+
+
+    // $ANTLR start "ruleLFQN"
+    // InternalCubeDSL.g:401:1: ruleLFQN : ( ( rule__LFQN__Group__0 ) ) ;
+    public final void ruleLFQN() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:405:2: ( ( ( rule__LFQN__Group__0 ) ) )
+            // InternalCubeDSL.g:406:2: ( ( rule__LFQN__Group__0 ) )
+            {
+            // InternalCubeDSL.g:406:2: ( ( rule__LFQN__Group__0 ) )
+            // InternalCubeDSL.g:407:3: ( rule__LFQN__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getLFQNAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:408:3: ( rule__LFQN__Group__0 )
+            // InternalCubeDSL.g:408:4: rule__LFQN__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__LFQN__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getLFQNAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleLFQN"
+
+
+    // $ANTLR start "entryRuleTRANSLATABLEID"
+    // InternalCubeDSL.g:417:1: entryRuleTRANSLATABLEID : ruleTRANSLATABLEID EOF ;
+    public final void entryRuleTRANSLATABLEID() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:418:1: ( ruleTRANSLATABLEID EOF )
+            // InternalCubeDSL.g:419: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"
+    // InternalCubeDSL.g:426:1: ruleTRANSLATABLEID : ( RULE_ID ) ;
+    public final void ruleTRANSLATABLEID() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:430:2: ( ( RULE_ID ) )
+            // InternalCubeDSL.g:431:2: ( RULE_ID )
+            {
+            // InternalCubeDSL.g:431:2: ( RULE_ID )
+            // InternalCubeDSL.g:432: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"
+    // InternalCubeDSL.g:442:1: entryRuleTRANSLATABLESTRING : ruleTRANSLATABLESTRING EOF ;
+    public final void entryRuleTRANSLATABLESTRING() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:443:1: ( ruleTRANSLATABLESTRING EOF )
+            // InternalCubeDSL.g:444: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"
+    // InternalCubeDSL.g:451:1: ruleTRANSLATABLESTRING : ( RULE_STRING ) ;
+    public final void ruleTRANSLATABLESTRING() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:455:2: ( ( RULE_STRING ) )
+            // InternalCubeDSL.g:456:2: ( RULE_STRING )
+            {
+            // InternalCubeDSL.g:456:2: ( RULE_STRING )
+            // InternalCubeDSL.g:457: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"
+    // InternalCubeDSL.g:467:1: entryRuleXImportDeclaration : ruleXImportDeclaration EOF ;
+    public final void entryRuleXImportDeclaration() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:468:1: ( ruleXImportDeclaration EOF )
+            // InternalCubeDSL.g:469: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"
+    // InternalCubeDSL.g:476:1: ruleXImportDeclaration : ( ( rule__XImportDeclaration__Group__0 ) ) ;
+    public final void ruleXImportDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:480:2: ( ( ( rule__XImportDeclaration__Group__0 ) ) )
+            // InternalCubeDSL.g:481:2: ( ( rule__XImportDeclaration__Group__0 ) )
+            {
+            // InternalCubeDSL.g:481:2: ( ( rule__XImportDeclaration__Group__0 ) )
+            // InternalCubeDSL.g:482:3: ( rule__XImportDeclaration__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:483:3: ( rule__XImportDeclaration__Group__0 )
+            // InternalCubeDSL.g:483: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"
+    // InternalCubeDSL.g:492:1: entryRuleXAnnotation : ruleXAnnotation EOF ;
+    public final void entryRuleXAnnotation() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:493:1: ( ruleXAnnotation EOF )
+            // InternalCubeDSL.g:494: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"
+    // InternalCubeDSL.g:501:1: ruleXAnnotation : ( ( rule__XAnnotation__Group__0 ) ) ;
+    public final void ruleXAnnotation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:505:2: ( ( ( rule__XAnnotation__Group__0 ) ) )
+            // InternalCubeDSL.g:506:2: ( ( rule__XAnnotation__Group__0 ) )
+            {
+            // InternalCubeDSL.g:506:2: ( ( rule__XAnnotation__Group__0 ) )
+            // InternalCubeDSL.g:507:3: ( rule__XAnnotation__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:508:3: ( rule__XAnnotation__Group__0 )
+            // InternalCubeDSL.g:508: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"
+    // InternalCubeDSL.g:517:1: entryRuleXAnnotationElementValuePair : ruleXAnnotationElementValuePair EOF ;
+    public final void entryRuleXAnnotationElementValuePair() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:518:1: ( ruleXAnnotationElementValuePair EOF )
+            // InternalCubeDSL.g:519: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"
+    // InternalCubeDSL.g:526:1: ruleXAnnotationElementValuePair : ( ( rule__XAnnotationElementValuePair__Group__0 ) ) ;
+    public final void ruleXAnnotationElementValuePair() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:530:2: ( ( ( rule__XAnnotationElementValuePair__Group__0 ) ) )
+            // InternalCubeDSL.g:531:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            {
+            // InternalCubeDSL.g:531:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            // InternalCubeDSL.g:532:3: ( rule__XAnnotationElementValuePair__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:533:3: ( rule__XAnnotationElementValuePair__Group__0 )
+            // InternalCubeDSL.g:533: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"
+    // InternalCubeDSL.g:542:1: entryRuleXAnnotationElementValueOrCommaList : ruleXAnnotationElementValueOrCommaList EOF ;
+    public final void entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:543:1: ( ruleXAnnotationElementValueOrCommaList EOF )
+            // InternalCubeDSL.g:544: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"
+    // InternalCubeDSL.g:551:1: ruleXAnnotationElementValueOrCommaList : ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) ;
+    public final void ruleXAnnotationElementValueOrCommaList() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:555:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) )
+            // InternalCubeDSL.g:556:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            {
+            // InternalCubeDSL.g:556:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            // InternalCubeDSL.g:557:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:558:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            // InternalCubeDSL.g:558: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"
+    // InternalCubeDSL.g:567:1: entryRuleXAnnotationElementValue : ruleXAnnotationElementValue EOF ;
+    public final void entryRuleXAnnotationElementValue() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:568:1: ( ruleXAnnotationElementValue EOF )
+            // InternalCubeDSL.g:569: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"
+    // InternalCubeDSL.g:576:1: ruleXAnnotationElementValue : ( ( rule__XAnnotationElementValue__Alternatives ) ) ;
+    public final void ruleXAnnotationElementValue() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:580:2: ( ( ( rule__XAnnotationElementValue__Alternatives ) ) )
+            // InternalCubeDSL.g:581:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            {
+            // InternalCubeDSL.g:581:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            // InternalCubeDSL.g:582:3: ( rule__XAnnotationElementValue__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:583:3: ( rule__XAnnotationElementValue__Alternatives )
+            // InternalCubeDSL.g:583: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"
+    // InternalCubeDSL.g:592:1: entryRuleXAnnotationOrExpression : ruleXAnnotationOrExpression EOF ;
+    public final void entryRuleXAnnotationOrExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:593:1: ( ruleXAnnotationOrExpression EOF )
+            // InternalCubeDSL.g:594: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"
+    // InternalCubeDSL.g:601:1: ruleXAnnotationOrExpression : ( ( rule__XAnnotationOrExpression__Alternatives ) ) ;
+    public final void ruleXAnnotationOrExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:605:2: ( ( ( rule__XAnnotationOrExpression__Alternatives ) ) )
+            // InternalCubeDSL.g:606:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            {
+            // InternalCubeDSL.g:606:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            // InternalCubeDSL.g:607:3: ( rule__XAnnotationOrExpression__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:608:3: ( rule__XAnnotationOrExpression__Alternatives )
+            // InternalCubeDSL.g:608: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"
+    // InternalCubeDSL.g:617:1: entryRuleXExpression : ruleXExpression EOF ;
+    public final void entryRuleXExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:618:1: ( ruleXExpression EOF )
+            // InternalCubeDSL.g:619: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"
+    // InternalCubeDSL.g:626:1: ruleXExpression : ( ruleXAssignment ) ;
+    public final void ruleXExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:630:2: ( ( ruleXAssignment ) )
+            // InternalCubeDSL.g:631:2: ( ruleXAssignment )
+            {
+            // InternalCubeDSL.g:631:2: ( ruleXAssignment )
+            // InternalCubeDSL.g:632: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"
+    // InternalCubeDSL.g:642:1: entryRuleXAssignment : ruleXAssignment EOF ;
+    public final void entryRuleXAssignment() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:643:1: ( ruleXAssignment EOF )
+            // InternalCubeDSL.g:644: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"
+    // InternalCubeDSL.g:651:1: ruleXAssignment : ( ( rule__XAssignment__Alternatives ) ) ;
+    public final void ruleXAssignment() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:655:2: ( ( ( rule__XAssignment__Alternatives ) ) )
+            // InternalCubeDSL.g:656:2: ( ( rule__XAssignment__Alternatives ) )
+            {
+            // InternalCubeDSL.g:656:2: ( ( rule__XAssignment__Alternatives ) )
+            // InternalCubeDSL.g:657:3: ( rule__XAssignment__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:658:3: ( rule__XAssignment__Alternatives )
+            // InternalCubeDSL.g:658: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"
+    // InternalCubeDSL.g:667:1: entryRuleOpSingleAssign : ruleOpSingleAssign EOF ;
+    public final void entryRuleOpSingleAssign() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:668:1: ( ruleOpSingleAssign EOF )
+            // InternalCubeDSL.g:669: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"
+    // InternalCubeDSL.g:676:1: ruleOpSingleAssign : ( '=' ) ;
+    public final void ruleOpSingleAssign() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:680:2: ( ( '=' ) )
+            // InternalCubeDSL.g:681:2: ( '=' )
+            {
+            // InternalCubeDSL.g:681:2: ( '=' )
+            // InternalCubeDSL.g:682: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"
+    // InternalCubeDSL.g:692:1: entryRuleOpMultiAssign : ruleOpMultiAssign EOF ;
+    public final void entryRuleOpMultiAssign() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:693:1: ( ruleOpMultiAssign EOF )
+            // InternalCubeDSL.g:694: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"
+    // InternalCubeDSL.g:701:1: ruleOpMultiAssign : ( ( rule__OpMultiAssign__Alternatives ) ) ;
+    public final void ruleOpMultiAssign() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:705:2: ( ( ( rule__OpMultiAssign__Alternatives ) ) )
+            // InternalCubeDSL.g:706:2: ( ( rule__OpMultiAssign__Alternatives ) )
+            {
+            // InternalCubeDSL.g:706:2: ( ( rule__OpMultiAssign__Alternatives ) )
+            // InternalCubeDSL.g:707:3: ( rule__OpMultiAssign__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:708:3: ( rule__OpMultiAssign__Alternatives )
+            // InternalCubeDSL.g:708: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"
+    // InternalCubeDSL.g:717:1: entryRuleXOrExpression : ruleXOrExpression EOF ;
+    public final void entryRuleXOrExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:718:1: ( ruleXOrExpression EOF )
+            // InternalCubeDSL.g:719: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"
+    // InternalCubeDSL.g:726:1: ruleXOrExpression : ( ( rule__XOrExpression__Group__0 ) ) ;
+    public final void ruleXOrExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:730:2: ( ( ( rule__XOrExpression__Group__0 ) ) )
+            // InternalCubeDSL.g:731:2: ( ( rule__XOrExpression__Group__0 ) )
+            {
+            // InternalCubeDSL.g:731:2: ( ( rule__XOrExpression__Group__0 ) )
+            // InternalCubeDSL.g:732:3: ( rule__XOrExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:733:3: ( rule__XOrExpression__Group__0 )
+            // InternalCubeDSL.g:733: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"
+    // InternalCubeDSL.g:742:1: entryRuleOpOr : ruleOpOr EOF ;
+    public final void entryRuleOpOr() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:743:1: ( ruleOpOr EOF )
+            // InternalCubeDSL.g:744: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"
+    // InternalCubeDSL.g:751:1: ruleOpOr : ( '||' ) ;
+    public final void ruleOpOr() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:755:2: ( ( '||' ) )
+            // InternalCubeDSL.g:756:2: ( '||' )
+            {
+            // InternalCubeDSL.g:756:2: ( '||' )
+            // InternalCubeDSL.g:757: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"
+    // InternalCubeDSL.g:767:1: entryRuleXAndExpression : ruleXAndExpression EOF ;
+    public final void entryRuleXAndExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:768:1: ( ruleXAndExpression EOF )
+            // InternalCubeDSL.g:769: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"
+    // InternalCubeDSL.g:776:1: ruleXAndExpression : ( ( rule__XAndExpression__Group__0 ) ) ;
+    public final void ruleXAndExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:780:2: ( ( ( rule__XAndExpression__Group__0 ) ) )
+            // InternalCubeDSL.g:781:2: ( ( rule__XAndExpression__Group__0 ) )
+            {
+            // InternalCubeDSL.g:781:2: ( ( rule__XAndExpression__Group__0 ) )
+            // InternalCubeDSL.g:782:3: ( rule__XAndExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:783:3: ( rule__XAndExpression__Group__0 )
+            // InternalCubeDSL.g:783: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"
+    // InternalCubeDSL.g:792:1: entryRuleOpAnd : ruleOpAnd EOF ;
+    public final void entryRuleOpAnd() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:793:1: ( ruleOpAnd EOF )
+            // InternalCubeDSL.g:794: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"
+    // InternalCubeDSL.g:801:1: ruleOpAnd : ( '&&' ) ;
+    public final void ruleOpAnd() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:805:2: ( ( '&&' ) )
+            // InternalCubeDSL.g:806:2: ( '&&' )
+            {
+            // InternalCubeDSL.g:806:2: ( '&&' )
+            // InternalCubeDSL.g:807: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"
+    // InternalCubeDSL.g:817:1: entryRuleXEqualityExpression : ruleXEqualityExpression EOF ;
+    public final void entryRuleXEqualityExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:818:1: ( ruleXEqualityExpression EOF )
+            // InternalCubeDSL.g:819: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"
+    // InternalCubeDSL.g:826:1: ruleXEqualityExpression : ( ( rule__XEqualityExpression__Group__0 ) ) ;
+    public final void ruleXEqualityExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:830:2: ( ( ( rule__XEqualityExpression__Group__0 ) ) )
+            // InternalCubeDSL.g:831:2: ( ( rule__XEqualityExpression__Group__0 ) )
+            {
+            // InternalCubeDSL.g:831:2: ( ( rule__XEqualityExpression__Group__0 ) )
+            // InternalCubeDSL.g:832:3: ( rule__XEqualityExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:833:3: ( rule__XEqualityExpression__Group__0 )
+            // InternalCubeDSL.g:833: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"
+    // InternalCubeDSL.g:842:1: entryRuleOpEquality : ruleOpEquality EOF ;
+    public final void entryRuleOpEquality() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:843:1: ( ruleOpEquality EOF )
+            // InternalCubeDSL.g:844: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"
+    // InternalCubeDSL.g:851:1: ruleOpEquality : ( ( rule__OpEquality__Alternatives ) ) ;
+    public final void ruleOpEquality() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:855:2: ( ( ( rule__OpEquality__Alternatives ) ) )
+            // InternalCubeDSL.g:856:2: ( ( rule__OpEquality__Alternatives ) )
+            {
+            // InternalCubeDSL.g:856:2: ( ( rule__OpEquality__Alternatives ) )
+            // InternalCubeDSL.g:857:3: ( rule__OpEquality__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpEqualityAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:858:3: ( rule__OpEquality__Alternatives )
+            // InternalCubeDSL.g:858: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"
+    // InternalCubeDSL.g:867:1: entryRuleXRelationalExpression : ruleXRelationalExpression EOF ;
+    public final void entryRuleXRelationalExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:868:1: ( ruleXRelationalExpression EOF )
+            // InternalCubeDSL.g:869: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"
+    // InternalCubeDSL.g:876:1: ruleXRelationalExpression : ( ( rule__XRelationalExpression__Group__0 ) ) ;
+    public final void ruleXRelationalExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:880:2: ( ( ( rule__XRelationalExpression__Group__0 ) ) )
+            // InternalCubeDSL.g:881:2: ( ( rule__XRelationalExpression__Group__0 ) )
+            {
+            // InternalCubeDSL.g:881:2: ( ( rule__XRelationalExpression__Group__0 ) )
+            // InternalCubeDSL.g:882:3: ( rule__XRelationalExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:883:3: ( rule__XRelationalExpression__Group__0 )
+            // InternalCubeDSL.g:883: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"
+    // InternalCubeDSL.g:892:1: entryRuleOpCompare : ruleOpCompare EOF ;
+    public final void entryRuleOpCompare() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:893:1: ( ruleOpCompare EOF )
+            // InternalCubeDSL.g:894: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"
+    // InternalCubeDSL.g:901:1: ruleOpCompare : ( ( rule__OpCompare__Alternatives ) ) ;
+    public final void ruleOpCompare() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:905:2: ( ( ( rule__OpCompare__Alternatives ) ) )
+            // InternalCubeDSL.g:906:2: ( ( rule__OpCompare__Alternatives ) )
+            {
+            // InternalCubeDSL.g:906:2: ( ( rule__OpCompare__Alternatives ) )
+            // InternalCubeDSL.g:907:3: ( rule__OpCompare__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpCompareAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:908:3: ( rule__OpCompare__Alternatives )
+            // InternalCubeDSL.g:908: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"
+    // InternalCubeDSL.g:917:1: entryRuleXOtherOperatorExpression : ruleXOtherOperatorExpression EOF ;
+    public final void entryRuleXOtherOperatorExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:918:1: ( ruleXOtherOperatorExpression EOF )
+            // InternalCubeDSL.g:919: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"
+    // InternalCubeDSL.g:926:1: ruleXOtherOperatorExpression : ( ( rule__XOtherOperatorExpression__Group__0 ) ) ;
+    public final void ruleXOtherOperatorExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:930:2: ( ( ( rule__XOtherOperatorExpression__Group__0 ) ) )
+            // InternalCubeDSL.g:931:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            {
+            // InternalCubeDSL.g:931:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            // InternalCubeDSL.g:932:3: ( rule__XOtherOperatorExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:933:3: ( rule__XOtherOperatorExpression__Group__0 )
+            // InternalCubeDSL.g:933: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"
+    // InternalCubeDSL.g:942:1: entryRuleOpOther : ruleOpOther EOF ;
+    public final void entryRuleOpOther() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:943:1: ( ruleOpOther EOF )
+            // InternalCubeDSL.g:944: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"
+    // InternalCubeDSL.g:951:1: ruleOpOther : ( ( rule__OpOther__Alternatives ) ) ;
+    public final void ruleOpOther() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:955:2: ( ( ( rule__OpOther__Alternatives ) ) )
+            // InternalCubeDSL.g:956:2: ( ( rule__OpOther__Alternatives ) )
+            {
+            // InternalCubeDSL.g:956:2: ( ( rule__OpOther__Alternatives ) )
+            // InternalCubeDSL.g:957:3: ( rule__OpOther__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:958:3: ( rule__OpOther__Alternatives )
+            // InternalCubeDSL.g:958: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"
+    // InternalCubeDSL.g:967:1: entryRuleXAdditiveExpression : ruleXAdditiveExpression EOF ;
+    public final void entryRuleXAdditiveExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:968:1: ( ruleXAdditiveExpression EOF )
+            // InternalCubeDSL.g:969: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"
+    // InternalCubeDSL.g:976:1: ruleXAdditiveExpression : ( ( rule__XAdditiveExpression__Group__0 ) ) ;
+    public final void ruleXAdditiveExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:980:2: ( ( ( rule__XAdditiveExpression__Group__0 ) ) )
+            // InternalCubeDSL.g:981:2: ( ( rule__XAdditiveExpression__Group__0 ) )
+            {
+            // InternalCubeDSL.g:981:2: ( ( rule__XAdditiveExpression__Group__0 ) )
+            // InternalCubeDSL.g:982:3: ( rule__XAdditiveExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:983:3: ( rule__XAdditiveExpression__Group__0 )
+            // InternalCubeDSL.g:983: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"
+    // InternalCubeDSL.g:992:1: entryRuleOpAdd : ruleOpAdd EOF ;
+    public final void entryRuleOpAdd() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:993:1: ( ruleOpAdd EOF )
+            // InternalCubeDSL.g:994: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"
+    // InternalCubeDSL.g:1001:1: ruleOpAdd : ( ( rule__OpAdd__Alternatives ) ) ;
+    public final void ruleOpAdd() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1005:2: ( ( ( rule__OpAdd__Alternatives ) ) )
+            // InternalCubeDSL.g:1006:2: ( ( rule__OpAdd__Alternatives ) )
+            {
+            // InternalCubeDSL.g:1006:2: ( ( rule__OpAdd__Alternatives ) )
+            // InternalCubeDSL.g:1007:3: ( rule__OpAdd__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpAddAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:1008:3: ( rule__OpAdd__Alternatives )
+            // InternalCubeDSL.g:1008: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"
+    // InternalCubeDSL.g:1017:1: entryRuleXMultiplicativeExpression : ruleXMultiplicativeExpression EOF ;
+    public final void entryRuleXMultiplicativeExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1018:1: ( ruleXMultiplicativeExpression EOF )
+            // InternalCubeDSL.g:1019: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"
+    // InternalCubeDSL.g:1026:1: ruleXMultiplicativeExpression : ( ( rule__XMultiplicativeExpression__Group__0 ) ) ;
+    public final void ruleXMultiplicativeExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1030:2: ( ( ( rule__XMultiplicativeExpression__Group__0 ) ) )
+            // InternalCubeDSL.g:1031:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1031:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            // InternalCubeDSL.g:1032:3: ( rule__XMultiplicativeExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1033:3: ( rule__XMultiplicativeExpression__Group__0 )
+            // InternalCubeDSL.g:1033: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"
+    // InternalCubeDSL.g:1042:1: entryRuleOpMulti : ruleOpMulti EOF ;
+    public final void entryRuleOpMulti() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1043:1: ( ruleOpMulti EOF )
+            // InternalCubeDSL.g:1044: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"
+    // InternalCubeDSL.g:1051:1: ruleOpMulti : ( ( rule__OpMulti__Alternatives ) ) ;
+    public final void ruleOpMulti() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1055:2: ( ( ( rule__OpMulti__Alternatives ) ) )
+            // InternalCubeDSL.g:1056:2: ( ( rule__OpMulti__Alternatives ) )
+            {
+            // InternalCubeDSL.g:1056:2: ( ( rule__OpMulti__Alternatives ) )
+            // InternalCubeDSL.g:1057:3: ( rule__OpMulti__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:1058:3: ( rule__OpMulti__Alternatives )
+            // InternalCubeDSL.g:1058: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"
+    // InternalCubeDSL.g:1067:1: entryRuleXUnaryOperation : ruleXUnaryOperation EOF ;
+    public final void entryRuleXUnaryOperation() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1068:1: ( ruleXUnaryOperation EOF )
+            // InternalCubeDSL.g:1069: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"
+    // InternalCubeDSL.g:1076:1: ruleXUnaryOperation : ( ( rule__XUnaryOperation__Alternatives ) ) ;
+    public final void ruleXUnaryOperation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1080:2: ( ( ( rule__XUnaryOperation__Alternatives ) ) )
+            // InternalCubeDSL.g:1081:2: ( ( rule__XUnaryOperation__Alternatives ) )
+            {
+            // InternalCubeDSL.g:1081:2: ( ( rule__XUnaryOperation__Alternatives ) )
+            // InternalCubeDSL.g:1082:3: ( rule__XUnaryOperation__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:1083:3: ( rule__XUnaryOperation__Alternatives )
+            // InternalCubeDSL.g:1083: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"
+    // InternalCubeDSL.g:1092:1: entryRuleOpUnary : ruleOpUnary EOF ;
+    public final void entryRuleOpUnary() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1093:1: ( ruleOpUnary EOF )
+            // InternalCubeDSL.g:1094: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"
+    // InternalCubeDSL.g:1101:1: ruleOpUnary : ( ( rule__OpUnary__Alternatives ) ) ;
+    public final void ruleOpUnary() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1105:2: ( ( ( rule__OpUnary__Alternatives ) ) )
+            // InternalCubeDSL.g:1106:2: ( ( rule__OpUnary__Alternatives ) )
+            {
+            // InternalCubeDSL.g:1106:2: ( ( rule__OpUnary__Alternatives ) )
+            // InternalCubeDSL.g:1107:3: ( rule__OpUnary__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpUnaryAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:1108:3: ( rule__OpUnary__Alternatives )
+            // InternalCubeDSL.g:1108: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"
+    // InternalCubeDSL.g:1117:1: entryRuleXCastedExpression : ruleXCastedExpression EOF ;
+    public final void entryRuleXCastedExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1118:1: ( ruleXCastedExpression EOF )
+            // InternalCubeDSL.g:1119: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"
+    // InternalCubeDSL.g:1126:1: ruleXCastedExpression : ( ( rule__XCastedExpression__Group__0 ) ) ;
+    public final void ruleXCastedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1130:2: ( ( ( rule__XCastedExpression__Group__0 ) ) )
+            // InternalCubeDSL.g:1131:2: ( ( rule__XCastedExpression__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1131:2: ( ( rule__XCastedExpression__Group__0 ) )
+            // InternalCubeDSL.g:1132:3: ( rule__XCastedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1133:3: ( rule__XCastedExpression__Group__0 )
+            // InternalCubeDSL.g:1133: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"
+    // InternalCubeDSL.g:1142:1: entryRuleXPostfixOperation : ruleXPostfixOperation EOF ;
+    public final void entryRuleXPostfixOperation() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1143:1: ( ruleXPostfixOperation EOF )
+            // InternalCubeDSL.g:1144: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"
+    // InternalCubeDSL.g:1151:1: ruleXPostfixOperation : ( ( rule__XPostfixOperation__Group__0 ) ) ;
+    public final void ruleXPostfixOperation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1155:2: ( ( ( rule__XPostfixOperation__Group__0 ) ) )
+            // InternalCubeDSL.g:1156:2: ( ( rule__XPostfixOperation__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1156:2: ( ( rule__XPostfixOperation__Group__0 ) )
+            // InternalCubeDSL.g:1157:3: ( rule__XPostfixOperation__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1158:3: ( rule__XPostfixOperation__Group__0 )
+            // InternalCubeDSL.g:1158: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"
+    // InternalCubeDSL.g:1167:1: entryRuleOpPostfix : ruleOpPostfix EOF ;
+    public final void entryRuleOpPostfix() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1168:1: ( ruleOpPostfix EOF )
+            // InternalCubeDSL.g:1169: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"
+    // InternalCubeDSL.g:1176:1: ruleOpPostfix : ( ( rule__OpPostfix__Alternatives ) ) ;
+    public final void ruleOpPostfix() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1180:2: ( ( ( rule__OpPostfix__Alternatives ) ) )
+            // InternalCubeDSL.g:1181:2: ( ( rule__OpPostfix__Alternatives ) )
+            {
+            // InternalCubeDSL.g:1181:2: ( ( rule__OpPostfix__Alternatives ) )
+            // InternalCubeDSL.g:1182:3: ( rule__OpPostfix__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpPostfixAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:1183:3: ( rule__OpPostfix__Alternatives )
+            // InternalCubeDSL.g:1183: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"
+    // InternalCubeDSL.g:1192:1: entryRuleXMemberFeatureCall : ruleXMemberFeatureCall EOF ;
+    public final void entryRuleXMemberFeatureCall() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1193:1: ( ruleXMemberFeatureCall EOF )
+            // InternalCubeDSL.g:1194: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"
+    // InternalCubeDSL.g:1201:1: ruleXMemberFeatureCall : ( ( rule__XMemberFeatureCall__Group__0 ) ) ;
+    public final void ruleXMemberFeatureCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1205:2: ( ( ( rule__XMemberFeatureCall__Group__0 ) ) )
+            // InternalCubeDSL.g:1206:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1206:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            // InternalCubeDSL.g:1207:3: ( rule__XMemberFeatureCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1208:3: ( rule__XMemberFeatureCall__Group__0 )
+            // InternalCubeDSL.g:1208: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"
+    // InternalCubeDSL.g:1217:1: entryRuleXPrimaryExpression : ruleXPrimaryExpression EOF ;
+    public final void entryRuleXPrimaryExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1218:1: ( ruleXPrimaryExpression EOF )
+            // InternalCubeDSL.g:1219: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"
+    // InternalCubeDSL.g:1226:1: ruleXPrimaryExpression : ( ( rule__XPrimaryExpression__Alternatives ) ) ;
+    public final void ruleXPrimaryExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1230:2: ( ( ( rule__XPrimaryExpression__Alternatives ) ) )
+            // InternalCubeDSL.g:1231:2: ( ( rule__XPrimaryExpression__Alternatives ) )
+            {
+            // InternalCubeDSL.g:1231:2: ( ( rule__XPrimaryExpression__Alternatives ) )
+            // InternalCubeDSL.g:1232:3: ( rule__XPrimaryExpression__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:1233:3: ( rule__XPrimaryExpression__Alternatives )
+            // InternalCubeDSL.g:1233: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"
+    // InternalCubeDSL.g:1242:1: entryRuleXLiteral : ruleXLiteral EOF ;
+    public final void entryRuleXLiteral() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1243:1: ( ruleXLiteral EOF )
+            // InternalCubeDSL.g:1244: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"
+    // InternalCubeDSL.g:1251:1: ruleXLiteral : ( ( rule__XLiteral__Alternatives ) ) ;
+    public final void ruleXLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1255:2: ( ( ( rule__XLiteral__Alternatives ) ) )
+            // InternalCubeDSL.g:1256:2: ( ( rule__XLiteral__Alternatives ) )
+            {
+            // InternalCubeDSL.g:1256:2: ( ( rule__XLiteral__Alternatives ) )
+            // InternalCubeDSL.g:1257:3: ( rule__XLiteral__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXLiteralAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:1258:3: ( rule__XLiteral__Alternatives )
+            // InternalCubeDSL.g:1258: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"
+    // InternalCubeDSL.g:1267:1: entryRuleXCollectionLiteral : ruleXCollectionLiteral EOF ;
+    public final void entryRuleXCollectionLiteral() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1268:1: ( ruleXCollectionLiteral EOF )
+            // InternalCubeDSL.g:1269: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"
+    // InternalCubeDSL.g:1276:1: ruleXCollectionLiteral : ( ( rule__XCollectionLiteral__Alternatives ) ) ;
+    public final void ruleXCollectionLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1280:2: ( ( ( rule__XCollectionLiteral__Alternatives ) ) )
+            // InternalCubeDSL.g:1281:2: ( ( rule__XCollectionLiteral__Alternatives ) )
+            {
+            // InternalCubeDSL.g:1281:2: ( ( rule__XCollectionLiteral__Alternatives ) )
+            // InternalCubeDSL.g:1282:3: ( rule__XCollectionLiteral__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:1283:3: ( rule__XCollectionLiteral__Alternatives )
+            // InternalCubeDSL.g:1283: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"
+    // InternalCubeDSL.g:1292:1: entryRuleXSetLiteral : ruleXSetLiteral EOF ;
+    public final void entryRuleXSetLiteral() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1293:1: ( ruleXSetLiteral EOF )
+            // InternalCubeDSL.g:1294: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"
+    // InternalCubeDSL.g:1301:1: ruleXSetLiteral : ( ( rule__XSetLiteral__Group__0 ) ) ;
+    public final void ruleXSetLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1305:2: ( ( ( rule__XSetLiteral__Group__0 ) ) )
+            // InternalCubeDSL.g:1306:2: ( ( rule__XSetLiteral__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1306:2: ( ( rule__XSetLiteral__Group__0 ) )
+            // InternalCubeDSL.g:1307:3: ( rule__XSetLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1308:3: ( rule__XSetLiteral__Group__0 )
+            // InternalCubeDSL.g:1308: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"
+    // InternalCubeDSL.g:1317:1: entryRuleXListLiteral : ruleXListLiteral EOF ;
+    public final void entryRuleXListLiteral() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1318:1: ( ruleXListLiteral EOF )
+            // InternalCubeDSL.g:1319: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"
+    // InternalCubeDSL.g:1326:1: ruleXListLiteral : ( ( rule__XListLiteral__Group__0 ) ) ;
+    public final void ruleXListLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1330:2: ( ( ( rule__XListLiteral__Group__0 ) ) )
+            // InternalCubeDSL.g:1331:2: ( ( rule__XListLiteral__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1331:2: ( ( rule__XListLiteral__Group__0 ) )
+            // InternalCubeDSL.g:1332:3: ( rule__XListLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1333:3: ( rule__XListLiteral__Group__0 )
+            // InternalCubeDSL.g:1333: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"
+    // InternalCubeDSL.g:1342:1: entryRuleXClosure : ruleXClosure EOF ;
+    public final void entryRuleXClosure() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1343:1: ( ruleXClosure EOF )
+            // InternalCubeDSL.g:1344: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"
+    // InternalCubeDSL.g:1351:1: ruleXClosure : ( ( rule__XClosure__Group__0 ) ) ;
+    public final void ruleXClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1355:2: ( ( ( rule__XClosure__Group__0 ) ) )
+            // InternalCubeDSL.g:1356:2: ( ( rule__XClosure__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1356:2: ( ( rule__XClosure__Group__0 ) )
+            // InternalCubeDSL.g:1357:3: ( rule__XClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1358:3: ( rule__XClosure__Group__0 )
+            // InternalCubeDSL.g:1358: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"
+    // InternalCubeDSL.g:1367:1: entryRuleXExpressionInClosure : ruleXExpressionInClosure EOF ;
+    public final void entryRuleXExpressionInClosure() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1368:1: ( ruleXExpressionInClosure EOF )
+            // InternalCubeDSL.g:1369: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"
+    // InternalCubeDSL.g:1376:1: ruleXExpressionInClosure : ( ( rule__XExpressionInClosure__Group__0 ) ) ;
+    public final void ruleXExpressionInClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1380:2: ( ( ( rule__XExpressionInClosure__Group__0 ) ) )
+            // InternalCubeDSL.g:1381:2: ( ( rule__XExpressionInClosure__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1381:2: ( ( rule__XExpressionInClosure__Group__0 ) )
+            // InternalCubeDSL.g:1382:3: ( rule__XExpressionInClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1383:3: ( rule__XExpressionInClosure__Group__0 )
+            // InternalCubeDSL.g:1383: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"
+    // InternalCubeDSL.g:1392:1: entryRuleXShortClosure : ruleXShortClosure EOF ;
+    public final void entryRuleXShortClosure() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1393:1: ( ruleXShortClosure EOF )
+            // InternalCubeDSL.g:1394: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"
+    // InternalCubeDSL.g:1401:1: ruleXShortClosure : ( ( rule__XShortClosure__Group__0 ) ) ;
+    public final void ruleXShortClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1405:2: ( ( ( rule__XShortClosure__Group__0 ) ) )
+            // InternalCubeDSL.g:1406:2: ( ( rule__XShortClosure__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1406:2: ( ( rule__XShortClosure__Group__0 ) )
+            // InternalCubeDSL.g:1407:3: ( rule__XShortClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1408:3: ( rule__XShortClosure__Group__0 )
+            // InternalCubeDSL.g:1408: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"
+    // InternalCubeDSL.g:1417:1: entryRuleXParenthesizedExpression : ruleXParenthesizedExpression EOF ;
+    public final void entryRuleXParenthesizedExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1418:1: ( ruleXParenthesizedExpression EOF )
+            // InternalCubeDSL.g:1419: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"
+    // InternalCubeDSL.g:1426:1: ruleXParenthesizedExpression : ( ( rule__XParenthesizedExpression__Group__0 ) ) ;
+    public final void ruleXParenthesizedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1430:2: ( ( ( rule__XParenthesizedExpression__Group__0 ) ) )
+            // InternalCubeDSL.g:1431:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1431:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            // InternalCubeDSL.g:1432:3: ( rule__XParenthesizedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1433:3: ( rule__XParenthesizedExpression__Group__0 )
+            // InternalCubeDSL.g:1433: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"
+    // InternalCubeDSL.g:1442:1: entryRuleXIfExpression : ruleXIfExpression EOF ;
+    public final void entryRuleXIfExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1443:1: ( ruleXIfExpression EOF )
+            // InternalCubeDSL.g:1444: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"
+    // InternalCubeDSL.g:1451:1: ruleXIfExpression : ( ( rule__XIfExpression__Group__0 ) ) ;
+    public final void ruleXIfExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1455:2: ( ( ( rule__XIfExpression__Group__0 ) ) )
+            // InternalCubeDSL.g:1456:2: ( ( rule__XIfExpression__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1456:2: ( ( rule__XIfExpression__Group__0 ) )
+            // InternalCubeDSL.g:1457:3: ( rule__XIfExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1458:3: ( rule__XIfExpression__Group__0 )
+            // InternalCubeDSL.g:1458: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"
+    // InternalCubeDSL.g:1467:1: entryRuleXSwitchExpression : ruleXSwitchExpression EOF ;
+    public final void entryRuleXSwitchExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1468:1: ( ruleXSwitchExpression EOF )
+            // InternalCubeDSL.g:1469: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"
+    // InternalCubeDSL.g:1476:1: ruleXSwitchExpression : ( ( rule__XSwitchExpression__Group__0 ) ) ;
+    public final void ruleXSwitchExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1480:2: ( ( ( rule__XSwitchExpression__Group__0 ) ) )
+            // InternalCubeDSL.g:1481:2: ( ( rule__XSwitchExpression__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1481:2: ( ( rule__XSwitchExpression__Group__0 ) )
+            // InternalCubeDSL.g:1482:3: ( rule__XSwitchExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1483:3: ( rule__XSwitchExpression__Group__0 )
+            // InternalCubeDSL.g:1483: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"
+    // InternalCubeDSL.g:1492:1: entryRuleXCasePart : ruleXCasePart EOF ;
+    public final void entryRuleXCasePart() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1493:1: ( ruleXCasePart EOF )
+            // InternalCubeDSL.g:1494: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"
+    // InternalCubeDSL.g:1501:1: ruleXCasePart : ( ( rule__XCasePart__Group__0 ) ) ;
+    public final void ruleXCasePart() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1505:2: ( ( ( rule__XCasePart__Group__0 ) ) )
+            // InternalCubeDSL.g:1506:2: ( ( rule__XCasePart__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1506:2: ( ( rule__XCasePart__Group__0 ) )
+            // InternalCubeDSL.g:1507:3: ( rule__XCasePart__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1508:3: ( rule__XCasePart__Group__0 )
+            // InternalCubeDSL.g:1508: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"
+    // InternalCubeDSL.g:1517:1: entryRuleXForLoopExpression : ruleXForLoopExpression EOF ;
+    public final void entryRuleXForLoopExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1518:1: ( ruleXForLoopExpression EOF )
+            // InternalCubeDSL.g:1519: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"
+    // InternalCubeDSL.g:1526:1: ruleXForLoopExpression : ( ( rule__XForLoopExpression__Group__0 ) ) ;
+    public final void ruleXForLoopExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1530:2: ( ( ( rule__XForLoopExpression__Group__0 ) ) )
+            // InternalCubeDSL.g:1531:2: ( ( rule__XForLoopExpression__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1531:2: ( ( rule__XForLoopExpression__Group__0 ) )
+            // InternalCubeDSL.g:1532:3: ( rule__XForLoopExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1533:3: ( rule__XForLoopExpression__Group__0 )
+            // InternalCubeDSL.g:1533: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"
+    // InternalCubeDSL.g:1542:1: entryRuleXBasicForLoopExpression : ruleXBasicForLoopExpression EOF ;
+    public final void entryRuleXBasicForLoopExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1543:1: ( ruleXBasicForLoopExpression EOF )
+            // InternalCubeDSL.g:1544: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"
+    // InternalCubeDSL.g:1551:1: ruleXBasicForLoopExpression : ( ( rule__XBasicForLoopExpression__Group__0 ) ) ;
+    public final void ruleXBasicForLoopExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1555:2: ( ( ( rule__XBasicForLoopExpression__Group__0 ) ) )
+            // InternalCubeDSL.g:1556:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1556:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            // InternalCubeDSL.g:1557:3: ( rule__XBasicForLoopExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1558:3: ( rule__XBasicForLoopExpression__Group__0 )
+            // InternalCubeDSL.g:1558: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"
+    // InternalCubeDSL.g:1567:1: entryRuleXWhileExpression : ruleXWhileExpression EOF ;
+    public final void entryRuleXWhileExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1568:1: ( ruleXWhileExpression EOF )
+            // InternalCubeDSL.g:1569: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"
+    // InternalCubeDSL.g:1576:1: ruleXWhileExpression : ( ( rule__XWhileExpression__Group__0 ) ) ;
+    public final void ruleXWhileExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1580:2: ( ( ( rule__XWhileExpression__Group__0 ) ) )
+            // InternalCubeDSL.g:1581:2: ( ( rule__XWhileExpression__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1581:2: ( ( rule__XWhileExpression__Group__0 ) )
+            // InternalCubeDSL.g:1582:3: ( rule__XWhileExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1583:3: ( rule__XWhileExpression__Group__0 )
+            // InternalCubeDSL.g:1583: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"
+    // InternalCubeDSL.g:1592:1: entryRuleXDoWhileExpression : ruleXDoWhileExpression EOF ;
+    public final void entryRuleXDoWhileExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1593:1: ( ruleXDoWhileExpression EOF )
+            // InternalCubeDSL.g:1594: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"
+    // InternalCubeDSL.g:1601:1: ruleXDoWhileExpression : ( ( rule__XDoWhileExpression__Group__0 ) ) ;
+    public final void ruleXDoWhileExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1605:2: ( ( ( rule__XDoWhileExpression__Group__0 ) ) )
+            // InternalCubeDSL.g:1606:2: ( ( rule__XDoWhileExpression__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1606:2: ( ( rule__XDoWhileExpression__Group__0 ) )
+            // InternalCubeDSL.g:1607:3: ( rule__XDoWhileExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1608:3: ( rule__XDoWhileExpression__Group__0 )
+            // InternalCubeDSL.g:1608: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"
+    // InternalCubeDSL.g:1617:1: entryRuleXBlockExpression : ruleXBlockExpression EOF ;
+    public final void entryRuleXBlockExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1618:1: ( ruleXBlockExpression EOF )
+            // InternalCubeDSL.g:1619: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"
+    // InternalCubeDSL.g:1626:1: ruleXBlockExpression : ( ( rule__XBlockExpression__Group__0 ) ) ;
+    public final void ruleXBlockExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1630:2: ( ( ( rule__XBlockExpression__Group__0 ) ) )
+            // InternalCubeDSL.g:1631:2: ( ( rule__XBlockExpression__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1631:2: ( ( rule__XBlockExpression__Group__0 ) )
+            // InternalCubeDSL.g:1632:3: ( rule__XBlockExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1633:3: ( rule__XBlockExpression__Group__0 )
+            // InternalCubeDSL.g:1633: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"
+    // InternalCubeDSL.g:1642:1: entryRuleXExpressionOrVarDeclaration : ruleXExpressionOrVarDeclaration EOF ;
+    public final void entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1643:1: ( ruleXExpressionOrVarDeclaration EOF )
+            // InternalCubeDSL.g:1644: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"
+    // InternalCubeDSL.g:1651:1: ruleXExpressionOrVarDeclaration : ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) ;
+    public final void ruleXExpressionOrVarDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1655:2: ( ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) )
+            // InternalCubeDSL.g:1656:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            {
+            // InternalCubeDSL.g:1656:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            // InternalCubeDSL.g:1657:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:1658:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            // InternalCubeDSL.g:1658: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"
+    // InternalCubeDSL.g:1667:1: entryRuleXVariableDeclaration : ruleXVariableDeclaration EOF ;
+    public final void entryRuleXVariableDeclaration() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1668:1: ( ruleXVariableDeclaration EOF )
+            // InternalCubeDSL.g:1669: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"
+    // InternalCubeDSL.g:1676:1: ruleXVariableDeclaration : ( ( rule__XVariableDeclaration__Group__0 ) ) ;
+    public final void ruleXVariableDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1680:2: ( ( ( rule__XVariableDeclaration__Group__0 ) ) )
+            // InternalCubeDSL.g:1681:2: ( ( rule__XVariableDeclaration__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1681:2: ( ( rule__XVariableDeclaration__Group__0 ) )
+            // InternalCubeDSL.g:1682:3: ( rule__XVariableDeclaration__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1683:3: ( rule__XVariableDeclaration__Group__0 )
+            // InternalCubeDSL.g:1683: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"
+    // InternalCubeDSL.g:1692:1: entryRuleJvmFormalParameter : ruleJvmFormalParameter EOF ;
+    public final void entryRuleJvmFormalParameter() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1693:1: ( ruleJvmFormalParameter EOF )
+            // InternalCubeDSL.g:1694: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"
+    // InternalCubeDSL.g:1701:1: ruleJvmFormalParameter : ( ( rule__JvmFormalParameter__Group__0 ) ) ;
+    public final void ruleJvmFormalParameter() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1705:2: ( ( ( rule__JvmFormalParameter__Group__0 ) ) )
+            // InternalCubeDSL.g:1706:2: ( ( rule__JvmFormalParameter__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1706:2: ( ( rule__JvmFormalParameter__Group__0 ) )
+            // InternalCubeDSL.g:1707:3: ( rule__JvmFormalParameter__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1708:3: ( rule__JvmFormalParameter__Group__0 )
+            // InternalCubeDSL.g:1708: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"
+    // InternalCubeDSL.g:1717:1: entryRuleFullJvmFormalParameter : ruleFullJvmFormalParameter EOF ;
+    public final void entryRuleFullJvmFormalParameter() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1718:1: ( ruleFullJvmFormalParameter EOF )
+            // InternalCubeDSL.g:1719: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"
+    // InternalCubeDSL.g:1726:1: ruleFullJvmFormalParameter : ( ( rule__FullJvmFormalParameter__Group__0 ) ) ;
+    public final void ruleFullJvmFormalParameter() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1730:2: ( ( ( rule__FullJvmFormalParameter__Group__0 ) ) )
+            // InternalCubeDSL.g:1731:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1731:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            // InternalCubeDSL.g:1732:3: ( rule__FullJvmFormalParameter__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1733:3: ( rule__FullJvmFormalParameter__Group__0 )
+            // InternalCubeDSL.g:1733: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"
+    // InternalCubeDSL.g:1742:1: entryRuleXFeatureCall : ruleXFeatureCall EOF ;
+    public final void entryRuleXFeatureCall() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1743:1: ( ruleXFeatureCall EOF )
+            // InternalCubeDSL.g:1744: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"
+    // InternalCubeDSL.g:1751:1: ruleXFeatureCall : ( ( rule__XFeatureCall__Group__0 ) ) ;
+    public final void ruleXFeatureCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1755:2: ( ( ( rule__XFeatureCall__Group__0 ) ) )
+            // InternalCubeDSL.g:1756:2: ( ( rule__XFeatureCall__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1756:2: ( ( rule__XFeatureCall__Group__0 ) )
+            // InternalCubeDSL.g:1757:3: ( rule__XFeatureCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1758:3: ( rule__XFeatureCall__Group__0 )
+            // InternalCubeDSL.g:1758: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"
+    // InternalCubeDSL.g:1767:1: entryRuleFeatureCallID : ruleFeatureCallID EOF ;
+    public final void entryRuleFeatureCallID() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1768:1: ( ruleFeatureCallID EOF )
+            // InternalCubeDSL.g:1769: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"
+    // InternalCubeDSL.g:1776:1: ruleFeatureCallID : ( ( rule__FeatureCallID__Alternatives ) ) ;
+    public final void ruleFeatureCallID() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1780:2: ( ( ( rule__FeatureCallID__Alternatives ) ) )
+            // InternalCubeDSL.g:1781:2: ( ( rule__FeatureCallID__Alternatives ) )
+            {
+            // InternalCubeDSL.g:1781:2: ( ( rule__FeatureCallID__Alternatives ) )
+            // InternalCubeDSL.g:1782:3: ( rule__FeatureCallID__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFeatureCallIDAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:1783:3: ( rule__FeatureCallID__Alternatives )
+            // InternalCubeDSL.g:1783: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"
+    // InternalCubeDSL.g:1792:1: entryRuleIdOrSuper : ruleIdOrSuper EOF ;
+    public final void entryRuleIdOrSuper() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1793:1: ( ruleIdOrSuper EOF )
+            // InternalCubeDSL.g:1794: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"
+    // InternalCubeDSL.g:1801:1: ruleIdOrSuper : ( ( rule__IdOrSuper__Alternatives ) ) ;
+    public final void ruleIdOrSuper() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1805:2: ( ( ( rule__IdOrSuper__Alternatives ) ) )
+            // InternalCubeDSL.g:1806:2: ( ( rule__IdOrSuper__Alternatives ) )
+            {
+            // InternalCubeDSL.g:1806:2: ( ( rule__IdOrSuper__Alternatives ) )
+            // InternalCubeDSL.g:1807:3: ( rule__IdOrSuper__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getIdOrSuperAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:1808:3: ( rule__IdOrSuper__Alternatives )
+            // InternalCubeDSL.g:1808: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"
+    // InternalCubeDSL.g:1817:1: entryRuleXConstructorCall : ruleXConstructorCall EOF ;
+    public final void entryRuleXConstructorCall() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1818:1: ( ruleXConstructorCall EOF )
+            // InternalCubeDSL.g:1819: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"
+    // InternalCubeDSL.g:1826:1: ruleXConstructorCall : ( ( rule__XConstructorCall__Group__0 ) ) ;
+    public final void ruleXConstructorCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1830:2: ( ( ( rule__XConstructorCall__Group__0 ) ) )
+            // InternalCubeDSL.g:1831:2: ( ( rule__XConstructorCall__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1831:2: ( ( rule__XConstructorCall__Group__0 ) )
+            // InternalCubeDSL.g:1832:3: ( rule__XConstructorCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1833:3: ( rule__XConstructorCall__Group__0 )
+            // InternalCubeDSL.g:1833: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"
+    // InternalCubeDSL.g:1842:1: entryRuleXBooleanLiteral : ruleXBooleanLiteral EOF ;
+    public final void entryRuleXBooleanLiteral() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1843:1: ( ruleXBooleanLiteral EOF )
+            // InternalCubeDSL.g:1844: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"
+    // InternalCubeDSL.g:1851:1: ruleXBooleanLiteral : ( ( rule__XBooleanLiteral__Group__0 ) ) ;
+    public final void ruleXBooleanLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1855:2: ( ( ( rule__XBooleanLiteral__Group__0 ) ) )
+            // InternalCubeDSL.g:1856:2: ( ( rule__XBooleanLiteral__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1856:2: ( ( rule__XBooleanLiteral__Group__0 ) )
+            // InternalCubeDSL.g:1857:3: ( rule__XBooleanLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1858:3: ( rule__XBooleanLiteral__Group__0 )
+            // InternalCubeDSL.g:1858: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"
+    // InternalCubeDSL.g:1867:1: entryRuleXNullLiteral : ruleXNullLiteral EOF ;
+    public final void entryRuleXNullLiteral() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1868:1: ( ruleXNullLiteral EOF )
+            // InternalCubeDSL.g:1869: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"
+    // InternalCubeDSL.g:1876:1: ruleXNullLiteral : ( ( rule__XNullLiteral__Group__0 ) ) ;
+    public final void ruleXNullLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1880:2: ( ( ( rule__XNullLiteral__Group__0 ) ) )
+            // InternalCubeDSL.g:1881:2: ( ( rule__XNullLiteral__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1881:2: ( ( rule__XNullLiteral__Group__0 ) )
+            // InternalCubeDSL.g:1882:3: ( rule__XNullLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNullLiteralAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1883:3: ( rule__XNullLiteral__Group__0 )
+            // InternalCubeDSL.g:1883: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"
+    // InternalCubeDSL.g:1892:1: entryRuleXNumberLiteral : ruleXNumberLiteral EOF ;
+    public final void entryRuleXNumberLiteral() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1893:1: ( ruleXNumberLiteral EOF )
+            // InternalCubeDSL.g:1894: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"
+    // InternalCubeDSL.g:1901:1: ruleXNumberLiteral : ( ( rule__XNumberLiteral__Group__0 ) ) ;
+    public final void ruleXNumberLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1905:2: ( ( ( rule__XNumberLiteral__Group__0 ) ) )
+            // InternalCubeDSL.g:1906:2: ( ( rule__XNumberLiteral__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1906:2: ( ( rule__XNumberLiteral__Group__0 ) )
+            // InternalCubeDSL.g:1907:3: ( rule__XNumberLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNumberLiteralAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1908:3: ( rule__XNumberLiteral__Group__0 )
+            // InternalCubeDSL.g:1908: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"
+    // InternalCubeDSL.g:1917:1: entryRuleXStringLiteral : ruleXStringLiteral EOF ;
+    public final void entryRuleXStringLiteral() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1918:1: ( ruleXStringLiteral EOF )
+            // InternalCubeDSL.g:1919: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"
+    // InternalCubeDSL.g:1926:1: ruleXStringLiteral : ( ( rule__XStringLiteral__Group__0 ) ) ;
+    public final void ruleXStringLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1930:2: ( ( ( rule__XStringLiteral__Group__0 ) ) )
+            // InternalCubeDSL.g:1931:2: ( ( rule__XStringLiteral__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1931:2: ( ( rule__XStringLiteral__Group__0 ) )
+            // InternalCubeDSL.g:1932:3: ( rule__XStringLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXStringLiteralAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1933:3: ( rule__XStringLiteral__Group__0 )
+            // InternalCubeDSL.g:1933: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"
+    // InternalCubeDSL.g:1942:1: entryRuleXTypeLiteral : ruleXTypeLiteral EOF ;
+    public final void entryRuleXTypeLiteral() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1943:1: ( ruleXTypeLiteral EOF )
+            // InternalCubeDSL.g:1944: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"
+    // InternalCubeDSL.g:1951:1: ruleXTypeLiteral : ( ( rule__XTypeLiteral__Group__0 ) ) ;
+    public final void ruleXTypeLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1955:2: ( ( ( rule__XTypeLiteral__Group__0 ) ) )
+            // InternalCubeDSL.g:1956:2: ( ( rule__XTypeLiteral__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1956:2: ( ( rule__XTypeLiteral__Group__0 ) )
+            // InternalCubeDSL.g:1957:3: ( rule__XTypeLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1958:3: ( rule__XTypeLiteral__Group__0 )
+            // InternalCubeDSL.g:1958: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"
+    // InternalCubeDSL.g:1967:1: entryRuleXThrowExpression : ruleXThrowExpression EOF ;
+    public final void entryRuleXThrowExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1968:1: ( ruleXThrowExpression EOF )
+            // InternalCubeDSL.g:1969: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"
+    // InternalCubeDSL.g:1976:1: ruleXThrowExpression : ( ( rule__XThrowExpression__Group__0 ) ) ;
+    public final void ruleXThrowExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:1980:2: ( ( ( rule__XThrowExpression__Group__0 ) ) )
+            // InternalCubeDSL.g:1981:2: ( ( rule__XThrowExpression__Group__0 ) )
+            {
+            // InternalCubeDSL.g:1981:2: ( ( rule__XThrowExpression__Group__0 ) )
+            // InternalCubeDSL.g:1982:3: ( rule__XThrowExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:1983:3: ( rule__XThrowExpression__Group__0 )
+            // InternalCubeDSL.g:1983: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"
+    // InternalCubeDSL.g:1992:1: entryRuleXReturnExpression : ruleXReturnExpression EOF ;
+    public final void entryRuleXReturnExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:1993:1: ( ruleXReturnExpression EOF )
+            // InternalCubeDSL.g:1994: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"
+    // InternalCubeDSL.g:2001:1: ruleXReturnExpression : ( ( rule__XReturnExpression__Group__0 ) ) ;
+    public final void ruleXReturnExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2005:2: ( ( ( rule__XReturnExpression__Group__0 ) ) )
+            // InternalCubeDSL.g:2006:2: ( ( rule__XReturnExpression__Group__0 ) )
+            {
+            // InternalCubeDSL.g:2006:2: ( ( rule__XReturnExpression__Group__0 ) )
+            // InternalCubeDSL.g:2007:3: ( rule__XReturnExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:2008:3: ( rule__XReturnExpression__Group__0 )
+            // InternalCubeDSL.g:2008: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"
+    // InternalCubeDSL.g:2017:1: entryRuleXTryCatchFinallyExpression : ruleXTryCatchFinallyExpression EOF ;
+    public final void entryRuleXTryCatchFinallyExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:2018:1: ( ruleXTryCatchFinallyExpression EOF )
+            // InternalCubeDSL.g:2019: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"
+    // InternalCubeDSL.g:2026:1: ruleXTryCatchFinallyExpression : ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) ;
+    public final void ruleXTryCatchFinallyExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2030:2: ( ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) )
+            // InternalCubeDSL.g:2031:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            {
+            // InternalCubeDSL.g:2031:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            // InternalCubeDSL.g:2032:3: ( rule__XTryCatchFinallyExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:2033:3: ( rule__XTryCatchFinallyExpression__Group__0 )
+            // InternalCubeDSL.g:2033: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"
+    // InternalCubeDSL.g:2042:1: entryRuleXSynchronizedExpression : ruleXSynchronizedExpression EOF ;
+    public final void entryRuleXSynchronizedExpression() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:2043:1: ( ruleXSynchronizedExpression EOF )
+            // InternalCubeDSL.g:2044: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"
+    // InternalCubeDSL.g:2051:1: ruleXSynchronizedExpression : ( ( rule__XSynchronizedExpression__Group__0 ) ) ;
+    public final void ruleXSynchronizedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2055:2: ( ( ( rule__XSynchronizedExpression__Group__0 ) ) )
+            // InternalCubeDSL.g:2056:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            {
+            // InternalCubeDSL.g:2056:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            // InternalCubeDSL.g:2057:3: ( rule__XSynchronizedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:2058:3: ( rule__XSynchronizedExpression__Group__0 )
+            // InternalCubeDSL.g:2058: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"
+    // InternalCubeDSL.g:2067:1: entryRuleXCatchClause : ruleXCatchClause EOF ;
+    public final void entryRuleXCatchClause() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:2068:1: ( ruleXCatchClause EOF )
+            // InternalCubeDSL.g:2069: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"
+    // InternalCubeDSL.g:2076:1: ruleXCatchClause : ( ( rule__XCatchClause__Group__0 ) ) ;
+    public final void ruleXCatchClause() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2080:2: ( ( ( rule__XCatchClause__Group__0 ) ) )
+            // InternalCubeDSL.g:2081:2: ( ( rule__XCatchClause__Group__0 ) )
+            {
+            // InternalCubeDSL.g:2081:2: ( ( rule__XCatchClause__Group__0 ) )
+            // InternalCubeDSL.g:2082:3: ( rule__XCatchClause__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:2083:3: ( rule__XCatchClause__Group__0 )
+            // InternalCubeDSL.g:2083: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"
+    // InternalCubeDSL.g:2092:1: entryRuleQualifiedName : ruleQualifiedName EOF ;
+    public final void entryRuleQualifiedName() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:2093:1: ( ruleQualifiedName EOF )
+            // InternalCubeDSL.g:2094: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"
+    // InternalCubeDSL.g:2101:1: ruleQualifiedName : ( ( rule__QualifiedName__Group__0 ) ) ;
+    public final void ruleQualifiedName() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2105:2: ( ( ( rule__QualifiedName__Group__0 ) ) )
+            // InternalCubeDSL.g:2106:2: ( ( rule__QualifiedName__Group__0 ) )
+            {
+            // InternalCubeDSL.g:2106:2: ( ( rule__QualifiedName__Group__0 ) )
+            // InternalCubeDSL.g:2107:3: ( rule__QualifiedName__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:2108:3: ( rule__QualifiedName__Group__0 )
+            // InternalCubeDSL.g:2108: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"
+    // InternalCubeDSL.g:2117:1: entryRuleNumber : ruleNumber EOF ;
+    public final void entryRuleNumber() throws RecognitionException {
+         
+        	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+
+        try {
+            // InternalCubeDSL.g:2121:1: ( ruleNumber EOF )
+            // InternalCubeDSL.g:2122: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"
+    // InternalCubeDSL.g:2132:1: ruleNumber : ( ( rule__Number__Alternatives ) ) ;
+    public final void ruleNumber() throws RecognitionException {
+
+        		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2137:2: ( ( ( rule__Number__Alternatives ) ) )
+            // InternalCubeDSL.g:2138:2: ( ( rule__Number__Alternatives ) )
+            {
+            // InternalCubeDSL.g:2138:2: ( ( rule__Number__Alternatives ) )
+            // InternalCubeDSL.g:2139:3: ( rule__Number__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:2140:3: ( rule__Number__Alternatives )
+            // InternalCubeDSL.g:2140: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"
+    // InternalCubeDSL.g:2150:1: entryRuleJvmTypeReference : ruleJvmTypeReference EOF ;
+    public final void entryRuleJvmTypeReference() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:2151:1: ( ruleJvmTypeReference EOF )
+            // InternalCubeDSL.g:2152: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"
+    // InternalCubeDSL.g:2159:1: ruleJvmTypeReference : ( ( rule__JvmTypeReference__Alternatives ) ) ;
+    public final void ruleJvmTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2163:2: ( ( ( rule__JvmTypeReference__Alternatives ) ) )
+            // InternalCubeDSL.g:2164:2: ( ( rule__JvmTypeReference__Alternatives ) )
+            {
+            // InternalCubeDSL.g:2164:2: ( ( rule__JvmTypeReference__Alternatives ) )
+            // InternalCubeDSL.g:2165:3: ( rule__JvmTypeReference__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:2166:3: ( rule__JvmTypeReference__Alternatives )
+            // InternalCubeDSL.g:2166: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"
+    // InternalCubeDSL.g:2175:1: entryRuleArrayBrackets : ruleArrayBrackets EOF ;
+    public final void entryRuleArrayBrackets() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:2176:1: ( ruleArrayBrackets EOF )
+            // InternalCubeDSL.g:2177: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"
+    // InternalCubeDSL.g:2184:1: ruleArrayBrackets : ( ( rule__ArrayBrackets__Group__0 ) ) ;
+    public final void ruleArrayBrackets() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2188:2: ( ( ( rule__ArrayBrackets__Group__0 ) ) )
+            // InternalCubeDSL.g:2189:2: ( ( rule__ArrayBrackets__Group__0 ) )
+            {
+            // InternalCubeDSL.g:2189:2: ( ( rule__ArrayBrackets__Group__0 ) )
+            // InternalCubeDSL.g:2190:3: ( rule__ArrayBrackets__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getArrayBracketsAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:2191:3: ( rule__ArrayBrackets__Group__0 )
+            // InternalCubeDSL.g:2191: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"
+    // InternalCubeDSL.g:2200:1: entryRuleXFunctionTypeRef : ruleXFunctionTypeRef EOF ;
+    public final void entryRuleXFunctionTypeRef() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:2201:1: ( ruleXFunctionTypeRef EOF )
+            // InternalCubeDSL.g:2202: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"
+    // InternalCubeDSL.g:2209:1: ruleXFunctionTypeRef : ( ( rule__XFunctionTypeRef__Group__0 ) ) ;
+    public final void ruleXFunctionTypeRef() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2213:2: ( ( ( rule__XFunctionTypeRef__Group__0 ) ) )
+            // InternalCubeDSL.g:2214:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            {
+            // InternalCubeDSL.g:2214:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            // InternalCubeDSL.g:2215:3: ( rule__XFunctionTypeRef__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:2216:3: ( rule__XFunctionTypeRef__Group__0 )
+            // InternalCubeDSL.g:2216: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"
+    // InternalCubeDSL.g:2225:1: entryRuleJvmParameterizedTypeReference : ruleJvmParameterizedTypeReference EOF ;
+    public final void entryRuleJvmParameterizedTypeReference() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:2226:1: ( ruleJvmParameterizedTypeReference EOF )
+            // InternalCubeDSL.g:2227: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"
+    // InternalCubeDSL.g:2234:1: ruleJvmParameterizedTypeReference : ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) ;
+    public final void ruleJvmParameterizedTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2238:2: ( ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) )
+            // InternalCubeDSL.g:2239:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            {
+            // InternalCubeDSL.g:2239:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            // InternalCubeDSL.g:2240:3: ( rule__JvmParameterizedTypeReference__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:2241:3: ( rule__JvmParameterizedTypeReference__Group__0 )
+            // InternalCubeDSL.g:2241: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"
+    // InternalCubeDSL.g:2250:1: entryRuleJvmArgumentTypeReference : ruleJvmArgumentTypeReference EOF ;
+    public final void entryRuleJvmArgumentTypeReference() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:2251:1: ( ruleJvmArgumentTypeReference EOF )
+            // InternalCubeDSL.g:2252: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"
+    // InternalCubeDSL.g:2259:1: ruleJvmArgumentTypeReference : ( ( rule__JvmArgumentTypeReference__Alternatives ) ) ;
+    public final void ruleJvmArgumentTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2263:2: ( ( ( rule__JvmArgumentTypeReference__Alternatives ) ) )
+            // InternalCubeDSL.g:2264:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            {
+            // InternalCubeDSL.g:2264:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            // InternalCubeDSL.g:2265:3: ( rule__JvmArgumentTypeReference__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:2266:3: ( rule__JvmArgumentTypeReference__Alternatives )
+            // InternalCubeDSL.g:2266: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"
+    // InternalCubeDSL.g:2275:1: entryRuleJvmWildcardTypeReference : ruleJvmWildcardTypeReference EOF ;
+    public final void entryRuleJvmWildcardTypeReference() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:2276:1: ( ruleJvmWildcardTypeReference EOF )
+            // InternalCubeDSL.g:2277: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"
+    // InternalCubeDSL.g:2284:1: ruleJvmWildcardTypeReference : ( ( rule__JvmWildcardTypeReference__Group__0 ) ) ;
+    public final void ruleJvmWildcardTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2288:2: ( ( ( rule__JvmWildcardTypeReference__Group__0 ) ) )
+            // InternalCubeDSL.g:2289:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            {
+            // InternalCubeDSL.g:2289:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            // InternalCubeDSL.g:2290:3: ( rule__JvmWildcardTypeReference__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:2291:3: ( rule__JvmWildcardTypeReference__Group__0 )
+            // InternalCubeDSL.g:2291: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"
+    // InternalCubeDSL.g:2300:1: entryRuleJvmUpperBound : ruleJvmUpperBound EOF ;
+    public final void entryRuleJvmUpperBound() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:2301:1: ( ruleJvmUpperBound EOF )
+            // InternalCubeDSL.g:2302: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"
+    // InternalCubeDSL.g:2309:1: ruleJvmUpperBound : ( ( rule__JvmUpperBound__Group__0 ) ) ;
+    public final void ruleJvmUpperBound() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2313:2: ( ( ( rule__JvmUpperBound__Group__0 ) ) )
+            // InternalCubeDSL.g:2314:2: ( ( rule__JvmUpperBound__Group__0 ) )
+            {
+            // InternalCubeDSL.g:2314:2: ( ( rule__JvmUpperBound__Group__0 ) )
+            // InternalCubeDSL.g:2315:3: ( rule__JvmUpperBound__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:2316:3: ( rule__JvmUpperBound__Group__0 )
+            // InternalCubeDSL.g:2316: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"
+    // InternalCubeDSL.g:2325:1: entryRuleJvmUpperBoundAnded : ruleJvmUpperBoundAnded EOF ;
+    public final void entryRuleJvmUpperBoundAnded() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:2326:1: ( ruleJvmUpperBoundAnded EOF )
+            // InternalCubeDSL.g:2327: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"
+    // InternalCubeDSL.g:2334:1: ruleJvmUpperBoundAnded : ( ( rule__JvmUpperBoundAnded__Group__0 ) ) ;
+    public final void ruleJvmUpperBoundAnded() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2338:2: ( ( ( rule__JvmUpperBoundAnded__Group__0 ) ) )
+            // InternalCubeDSL.g:2339:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            {
+            // InternalCubeDSL.g:2339:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            // InternalCubeDSL.g:2340:3: ( rule__JvmUpperBoundAnded__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:2341:3: ( rule__JvmUpperBoundAnded__Group__0 )
+            // InternalCubeDSL.g:2341: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"
+    // InternalCubeDSL.g:2350:1: entryRuleJvmLowerBound : ruleJvmLowerBound EOF ;
+    public final void entryRuleJvmLowerBound() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:2351:1: ( ruleJvmLowerBound EOF )
+            // InternalCubeDSL.g:2352: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"
+    // InternalCubeDSL.g:2359:1: ruleJvmLowerBound : ( ( rule__JvmLowerBound__Group__0 ) ) ;
+    public final void ruleJvmLowerBound() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2363:2: ( ( ( rule__JvmLowerBound__Group__0 ) ) )
+            // InternalCubeDSL.g:2364:2: ( ( rule__JvmLowerBound__Group__0 ) )
+            {
+            // InternalCubeDSL.g:2364:2: ( ( rule__JvmLowerBound__Group__0 ) )
+            // InternalCubeDSL.g:2365:3: ( rule__JvmLowerBound__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:2366:3: ( rule__JvmLowerBound__Group__0 )
+            // InternalCubeDSL.g:2366: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"
+    // InternalCubeDSL.g:2375:1: entryRuleJvmLowerBoundAnded : ruleJvmLowerBoundAnded EOF ;
+    public final void entryRuleJvmLowerBoundAnded() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:2376:1: ( ruleJvmLowerBoundAnded EOF )
+            // InternalCubeDSL.g:2377: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"
+    // InternalCubeDSL.g:2384:1: ruleJvmLowerBoundAnded : ( ( rule__JvmLowerBoundAnded__Group__0 ) ) ;
+    public final void ruleJvmLowerBoundAnded() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2388:2: ( ( ( rule__JvmLowerBoundAnded__Group__0 ) ) )
+            // InternalCubeDSL.g:2389:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            {
+            // InternalCubeDSL.g:2389:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            // InternalCubeDSL.g:2390:3: ( rule__JvmLowerBoundAnded__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:2391:3: ( rule__JvmLowerBoundAnded__Group__0 )
+            // InternalCubeDSL.g:2391: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"
+    // InternalCubeDSL.g:2400:1: entryRuleQualifiedNameWithWildcard : ruleQualifiedNameWithWildcard EOF ;
+    public final void entryRuleQualifiedNameWithWildcard() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:2401:1: ( ruleQualifiedNameWithWildcard EOF )
+            // InternalCubeDSL.g:2402: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"
+    // InternalCubeDSL.g:2409:1: ruleQualifiedNameWithWildcard : ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) ;
+    public final void ruleQualifiedNameWithWildcard() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2413:2: ( ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) )
+            // InternalCubeDSL.g:2414:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            {
+            // InternalCubeDSL.g:2414:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            // InternalCubeDSL.g:2415:3: ( rule__QualifiedNameWithWildcard__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:2416:3: ( rule__QualifiedNameWithWildcard__Group__0 )
+            // InternalCubeDSL.g:2416: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"
+    // InternalCubeDSL.g:2425:1: entryRuleValidID : ruleValidID EOF ;
+    public final void entryRuleValidID() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:2426:1: ( ruleValidID EOF )
+            // InternalCubeDSL.g:2427: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"
+    // InternalCubeDSL.g:2434:1: ruleValidID : ( RULE_ID ) ;
+    public final void ruleValidID() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2438:2: ( ( RULE_ID ) )
+            // InternalCubeDSL.g:2439:2: ( RULE_ID )
+            {
+            // InternalCubeDSL.g:2439:2: ( RULE_ID )
+            // InternalCubeDSL.g:2440: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"
+    // InternalCubeDSL.g:2450:1: entryRuleXImportSection : ruleXImportSection EOF ;
+    public final void entryRuleXImportSection() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:2451:1: ( ruleXImportSection EOF )
+            // InternalCubeDSL.g:2452: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"
+    // InternalCubeDSL.g:2459:1: ruleXImportSection : ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) ;
+    public final void ruleXImportSection() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2463:2: ( ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) )
+            // InternalCubeDSL.g:2464:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
+            {
+            // InternalCubeDSL.g:2464:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
+            // InternalCubeDSL.g:2465:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
+            {
+            // InternalCubeDSL.g:2465:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) )
+            // InternalCubeDSL.g:2466:4: ( rule__XImportSection__ImportDeclarationsAssignment )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
+            }
+            // InternalCubeDSL.g:2467:4: ( rule__XImportSection__ImportDeclarationsAssignment )
+            // InternalCubeDSL.g:2467:5: rule__XImportSection__ImportDeclarationsAssignment
+            {
+            pushFollow(FOLLOW_3);
+            rule__XImportSection__ImportDeclarationsAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
+            }
+
+            }
+
+            // InternalCubeDSL.g:2470:3: ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
+            // InternalCubeDSL.g:2471:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
+            }
+            // InternalCubeDSL.g:2472:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
+            loop1:
+            do {
+                int alt1=2;
+                int LA1_0 = input.LA(1);
+
+                if ( (LA1_0==47) ) {
+                    alt1=1;
+                }
+
+
+                switch (alt1) {
+            	case 1 :
+            	    // InternalCubeDSL.g:2472: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"
+    // InternalCubeDSL.g:2482:1: entryRuleQualifiedNameInStaticImport : ruleQualifiedNameInStaticImport EOF ;
+    public final void entryRuleQualifiedNameInStaticImport() throws RecognitionException {
+        try {
+            // InternalCubeDSL.g:2483:1: ( ruleQualifiedNameInStaticImport EOF )
+            // InternalCubeDSL.g:2484: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"
+    // InternalCubeDSL.g:2491:1: ruleQualifiedNameInStaticImport : ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) ;
+    public final void ruleQualifiedNameInStaticImport() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2495:2: ( ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) )
+            // InternalCubeDSL.g:2496:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            {
+            // InternalCubeDSL.g:2496:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            // InternalCubeDSL.g:2497:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            {
+            // InternalCubeDSL.g:2497:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) )
+            // InternalCubeDSL.g:2498:4: ( rule__QualifiedNameInStaticImport__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:2499:4: ( rule__QualifiedNameInStaticImport__Group__0 )
+            // InternalCubeDSL.g:2499: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()); 
+            }
+
+            }
+
+            // InternalCubeDSL.g:2502:3: ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            // InternalCubeDSL.g:2503:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+            // InternalCubeDSL.g:2504: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==43) ) {
+                        alt2=1;
+                    }
+
+
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // InternalCubeDSL.g:2504: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 "ruleCubeAggregatorEnum"
+    // InternalCubeDSL.g:2514:1: ruleCubeAggregatorEnum : ( ( rule__CubeAggregatorEnum__Alternatives ) ) ;
+    public final void ruleCubeAggregatorEnum() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2518:1: ( ( ( rule__CubeAggregatorEnum__Alternatives ) ) )
+            // InternalCubeDSL.g:2519:2: ( ( rule__CubeAggregatorEnum__Alternatives ) )
+            {
+            // InternalCubeDSL.g:2519:2: ( ( rule__CubeAggregatorEnum__Alternatives ) )
+            // InternalCubeDSL.g:2520:3: ( rule__CubeAggregatorEnum__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeAggregatorEnumAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:2521:3: ( rule__CubeAggregatorEnum__Alternatives )
+            // InternalCubeDSL.g:2521:4: rule__CubeAggregatorEnum__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeAggregatorEnum__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeAggregatorEnumAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeAggregatorEnum"
+
+
+    // $ANTLR start "ruleCubeLevelPropType"
+    // InternalCubeDSL.g:2530:1: ruleCubeLevelPropType : ( ( rule__CubeLevelPropType__Alternatives ) ) ;
+    public final void ruleCubeLevelPropType() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2534:1: ( ( ( rule__CubeLevelPropType__Alternatives ) ) )
+            // InternalCubeDSL.g:2535:2: ( ( rule__CubeLevelPropType__Alternatives ) )
+            {
+            // InternalCubeDSL.g:2535:2: ( ( rule__CubeLevelPropType__Alternatives ) )
+            // InternalCubeDSL.g:2536:3: ( rule__CubeLevelPropType__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelPropTypeAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:2537:3: ( rule__CubeLevelPropType__Alternatives )
+            // InternalCubeDSL.g:2537:4: rule__CubeLevelPropType__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeLevelPropType__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelPropTypeAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeLevelPropType"
+
+
+    // $ANTLR start "ruleCubeLevelLevelType"
+    // InternalCubeDSL.g:2546:1: ruleCubeLevelLevelType : ( ( rule__CubeLevelLevelType__Alternatives ) ) ;
+    public final void ruleCubeLevelLevelType() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2550:1: ( ( ( rule__CubeLevelLevelType__Alternatives ) ) )
+            // InternalCubeDSL.g:2551:2: ( ( rule__CubeLevelLevelType__Alternatives ) )
+            {
+            // InternalCubeDSL.g:2551:2: ( ( rule__CubeLevelLevelType__Alternatives ) )
+            // InternalCubeDSL.g:2552:3: ( rule__CubeLevelLevelType__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelLevelTypeAccess().getAlternatives()); 
+            }
+            // InternalCubeDSL.g:2553:3: ( rule__CubeLevelLevelType__Alternatives )
+            // InternalCubeDSL.g:2553:4: rule__CubeLevelLevelType__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeLevelLevelType__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelLevelTypeAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleCubeLevelLevelType"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Alternatives_2"
+    // InternalCubeDSL.g:2561: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 {
+            // InternalCubeDSL.g:2565:1: ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) )
+            int alt3=4;
+            alt3 = dfa3.predict(input);
+            switch (alt3) {
+                case 1 :
+                    // InternalCubeDSL.g:2566:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    {
+                    // InternalCubeDSL.g:2566:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    // InternalCubeDSL.g:2567:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getGroup_2_0()); 
+                    }
+                    // InternalCubeDSL.g:2568:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    // InternalCubeDSL.g:2568: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 :
+                    // InternalCubeDSL.g:2572:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    {
+                    // InternalCubeDSL.g:2572:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    // InternalCubeDSL.g:2573:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_1()); 
+                    }
+                    // InternalCubeDSL.g:2574:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    // InternalCubeDSL.g:2574: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 :
+                    // InternalCubeDSL.g:2578:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    {
+                    // InternalCubeDSL.g:2578:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    // InternalCubeDSL.g:2579:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_2_2()); 
+                    }
+                    // InternalCubeDSL.g:2580:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    // InternalCubeDSL.g:2580: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 :
+                    // InternalCubeDSL.g:2584:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    {
+                    // InternalCubeDSL.g:2584:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    // InternalCubeDSL.g:2585:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getGroup_2_3()); 
+                    }
+                    // InternalCubeDSL.g:2586:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    // InternalCubeDSL.g:2586: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"
+    // InternalCubeDSL.g:2594: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 {
+            // InternalCubeDSL.g:2598:1: ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) )
+            int alt4=2;
+            int LA4_0 = input.LA(1);
+
+            if ( (LA4_0==36) ) {
+                alt4=1;
+            }
+            else if ( (LA4_0==RULE_ID) ) {
+                alt4=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 4, 0, input);
+
+                throw nvae;
+            }
+            switch (alt4) {
+                case 1 :
+                    // InternalCubeDSL.g:2599:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    {
+                    // InternalCubeDSL.g:2599:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    // InternalCubeDSL.g:2600:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_2_0_3_0()); 
+                    }
+                    // InternalCubeDSL.g:2601:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    // InternalCubeDSL.g:2601: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 :
+                    // InternalCubeDSL.g:2605:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    {
+                    // InternalCubeDSL.g:2605:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    // InternalCubeDSL.g:2606:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_2_0_3_1()); 
+                    }
+                    // InternalCubeDSL.g:2607:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    // InternalCubeDSL.g:2607: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"
+    // InternalCubeDSL.g:2615: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 {
+            // InternalCubeDSL.g:2619:1: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) )
+            int alt5=2;
+            alt5 = dfa5.predict(input);
+            switch (alt5) {
+                case 1 :
+                    // InternalCubeDSL.g:2620:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    {
+                    // InternalCubeDSL.g:2620:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // InternalCubeDSL.g:2621:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
+                    }
+                    // InternalCubeDSL.g:2622:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // InternalCubeDSL.g:2622: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 :
+                    // InternalCubeDSL.g:2626:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    {
+                    // InternalCubeDSL.g:2626:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // InternalCubeDSL.g:2627:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); 
+                    }
+                    // InternalCubeDSL.g:2628:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // InternalCubeDSL.g:2628: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"
+    // InternalCubeDSL.g:2636: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 {
+            // InternalCubeDSL.g:2640:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) )
+            int alt6=2;
+            alt6 = dfa6.predict(input);
+            switch (alt6) {
+                case 1 :
+                    // InternalCubeDSL.g:2641:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    {
+                    // InternalCubeDSL.g:2641:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    // InternalCubeDSL.g:2642:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
+                    }
+                    // InternalCubeDSL.g:2643:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    // InternalCubeDSL.g:2643: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 :
+                    // InternalCubeDSL.g:2647:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    {
+                    // InternalCubeDSL.g:2647:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    // InternalCubeDSL.g:2648:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); 
+                    }
+                    // InternalCubeDSL.g:2649:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    // InternalCubeDSL.g:2649: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"
+    // InternalCubeDSL.g:2657:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );
+    public final void rule__XAnnotationElementValue__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2661:1: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) )
+            int alt7=2;
+            alt7 = dfa7.predict(input);
+            switch (alt7) {
+                case 1 :
+                    // InternalCubeDSL.g:2662:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    {
+                    // InternalCubeDSL.g:2662:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    // InternalCubeDSL.g:2663:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
+                    }
+                    // InternalCubeDSL.g:2664:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    // InternalCubeDSL.g:2664: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 :
+                    // InternalCubeDSL.g:2668:2: ( ruleXAnnotationOrExpression )
+                    {
+                    // InternalCubeDSL.g:2668:2: ( ruleXAnnotationOrExpression )
+                    // InternalCubeDSL.g:2669: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"
+    // InternalCubeDSL.g:2678:1: rule__XAnnotationOrExpression__Alternatives : ( ( ruleXAnnotation ) | ( ruleXExpression ) );
+    public final void rule__XAnnotationOrExpression__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2682:1: ( ( ruleXAnnotation ) | ( ruleXExpression ) )
+            int alt8=2;
+            int LA8_0 = input.LA(1);
+
+            if ( (LA8_0==87) ) {
+                alt8=1;
+            }
+            else if ( ((LA8_0>=RULE_ID && LA8_0<=RULE_DECIMAL)||LA8_0==27||(LA8_0>=34 && LA8_0<=35)||LA8_0==40||(LA8_0>=45 && LA8_0<=50)||LA8_0==74||LA8_0==88||(LA8_0>=92 && LA8_0<=93)||LA8_0==96||LA8_0==98||(LA8_0>=102 && LA8_0<=110)||LA8_0==112||LA8_0==131) ) {
+                alt8=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 8, 0, input);
+
+                throw nvae;
+            }
+            switch (alt8) {
+                case 1 :
+                    // InternalCubeDSL.g:2683:2: ( ruleXAnnotation )
+                    {
+                    // InternalCubeDSL.g:2683:2: ( ruleXAnnotation )
+                    // InternalCubeDSL.g:2684: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 :
+                    // InternalCubeDSL.g:2689:2: ( ruleXExpression )
+                    {
+                    // InternalCubeDSL.g:2689:2: ( ruleXExpression )
+                    // InternalCubeDSL.g:2690: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"
+    // InternalCubeDSL.g:2699: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 {
+            // InternalCubeDSL.g:2703:1: ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) )
+            int alt9=2;
+            switch ( input.LA(1) ) {
+            case RULE_ID:
+                {
+                int LA9_1 = input.LA(2);
+
+                if ( (LA9_1==13) ) {
+                    alt9=1;
+                }
+                else if ( (LA9_1==EOF||(LA9_1>=RULE_ID && LA9_1<=RULE_DECIMAL)||(LA9_1>=14 && LA9_1<=50)||(LA9_1>=74 && LA9_1<=75)||LA9_1==86||(LA9_1>=88 && LA9_1<=113)||(LA9_1>=127 && LA9_1<=128)||(LA9_1>=130 && LA9_1<=131)) ) {
+                    alt9=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 9, 1, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 45:
+                {
+                int LA9_2 = input.LA(2);
+
+                if ( (LA9_2==EOF||(LA9_2>=RULE_ID && LA9_2<=RULE_DECIMAL)||(LA9_2>=14 && LA9_2<=50)||(LA9_2>=74 && LA9_2<=75)||LA9_2==86||(LA9_2>=88 && LA9_2<=113)||(LA9_2>=127 && LA9_2<=128)||(LA9_2>=130 && LA9_2<=131)) ) {
+                    alt9=2;
+                }
+                else if ( (LA9_2==13) ) {
+                    alt9=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 9, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 46:
+                {
+                int LA9_3 = input.LA(2);
+
+                if ( (LA9_3==13) ) {
+                    alt9=1;
+                }
+                else if ( (LA9_3==EOF||(LA9_3>=RULE_ID && LA9_3<=RULE_DECIMAL)||(LA9_3>=14 && LA9_3<=50)||(LA9_3>=74 && LA9_3<=75)||LA9_3==86||(LA9_3>=88 && LA9_3<=113)||(LA9_3>=127 && LA9_3<=128)||(LA9_3>=130 && LA9_3<=131)) ) {
+                    alt9=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 9, 3, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 47:
+                {
+                int LA9_4 = input.LA(2);
+
+                if ( (LA9_4==EOF||(LA9_4>=RULE_ID && LA9_4<=RULE_DECIMAL)||(LA9_4>=14 && LA9_4<=50)||(LA9_4>=74 && LA9_4<=75)||LA9_4==86||(LA9_4>=88 && LA9_4<=113)||(LA9_4>=127 && LA9_4<=128)||(LA9_4>=130 && LA9_4<=131)) ) {
+                    alt9=2;
+                }
+                else if ( (LA9_4==13) ) {
+                    alt9=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 9, 4, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 48:
+                {
+                int LA9_5 = input.LA(2);
+
+                if ( (LA9_5==13) ) {
+                    alt9=1;
+                }
+                else if ( (LA9_5==EOF||(LA9_5>=RULE_ID && LA9_5<=RULE_DECIMAL)||(LA9_5>=14 && LA9_5<=50)||(LA9_5>=74 && LA9_5<=75)||LA9_5==86||(LA9_5>=88 && LA9_5<=113)||(LA9_5>=127 && LA9_5<=128)||(LA9_5>=130 && LA9_5<=131)) ) {
+                    alt9=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 9, 5, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case RULE_STRING:
+            case RULE_HEX:
+            case RULE_INT:
+            case RULE_DECIMAL:
+            case 27:
+            case 34:
+            case 35:
+            case 40:
+            case 49:
+            case 50:
+            case 74:
+            case 88:
+            case 92:
+            case 93:
+            case 96:
+            case 98:
+            case 102:
+            case 103:
+            case 104:
+            case 105:
+            case 106:
+            case 107:
+            case 108:
+            case 109:
+            case 110:
+            case 112:
+            case 131:
+                {
+                alt9=2;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 9, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt9) {
+                case 1 :
+                    // InternalCubeDSL.g:2704:2: ( ( rule__XAssignment__Group_0__0 ) )
+                    {
+                    // InternalCubeDSL.g:2704:2: ( ( rule__XAssignment__Group_0__0 ) )
+                    // InternalCubeDSL.g:2705:3: ( rule__XAssignment__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAssignmentAccess().getGroup_0()); 
+                    }
+                    // InternalCubeDSL.g:2706:3: ( rule__XAssignment__Group_0__0 )
+                    // InternalCubeDSL.g:2706: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 :
+                    // InternalCubeDSL.g:2710:2: ( ( rule__XAssignment__Group_1__0 ) )
+                    {
+                    // InternalCubeDSL.g:2710:2: ( ( rule__XAssignment__Group_1__0 ) )
+                    // InternalCubeDSL.g:2711:3: ( rule__XAssignment__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAssignmentAccess().getGroup_1()); 
+                    }
+                    // InternalCubeDSL.g:2712:3: ( rule__XAssignment__Group_1__0 )
+                    // InternalCubeDSL.g:2712: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"
+    // InternalCubeDSL.g:2720: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 {
+            // InternalCubeDSL.g:2724:1: ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) )
+            int alt10=7;
+            switch ( input.LA(1) ) {
+            case 16:
+                {
+                alt10=1;
+                }
+                break;
+            case 17:
+                {
+                alt10=2;
+                }
+                break;
+            case 18:
+                {
+                alt10=3;
+                }
+                break;
+            case 19:
+                {
+                alt10=4;
+                }
+                break;
+            case 20:
+                {
+                alt10=5;
+                }
+                break;
+            case 27:
+                {
+                alt10=6;
+                }
+                break;
+            case 26:
+                {
+                alt10=7;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 10, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt10) {
+                case 1 :
+                    // InternalCubeDSL.g:2725:2: ( '+=' )
+                    {
+                    // InternalCubeDSL.g:2725:2: ( '+=' )
+                    // InternalCubeDSL.g:2726:3: '+='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
+                    }
+                    match(input,16,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:2731:2: ( '-=' )
+                    {
+                    // InternalCubeDSL.g:2731:2: ( '-=' )
+                    // InternalCubeDSL.g:2732:3: '-='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
+                    }
+                    match(input,17,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalCubeDSL.g:2737:2: ( '*=' )
+                    {
+                    // InternalCubeDSL.g:2737:2: ( '*=' )
+                    // InternalCubeDSL.g:2738:3: '*='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
+                    }
+                    match(input,18,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalCubeDSL.g:2743:2: ( '/=' )
+                    {
+                    // InternalCubeDSL.g:2743:2: ( '/=' )
+                    // InternalCubeDSL.g:2744:3: '/='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
+                    }
+                    match(input,19,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalCubeDSL.g:2749:2: ( '%=' )
+                    {
+                    // InternalCubeDSL.g:2749:2: ( '%=' )
+                    // InternalCubeDSL.g:2750:3: '%='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
+                    }
+                    match(input,20,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalCubeDSL.g:2755:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    {
+                    // InternalCubeDSL.g:2755:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    // InternalCubeDSL.g:2756:3: ( rule__OpMultiAssign__Group_5__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getGroup_5()); 
+                    }
+                    // InternalCubeDSL.g:2757:3: ( rule__OpMultiAssign__Group_5__0 )
+                    // InternalCubeDSL.g:2757: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 :
+                    // InternalCubeDSL.g:2761:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    {
+                    // InternalCubeDSL.g:2761:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    // InternalCubeDSL.g:2762:3: ( rule__OpMultiAssign__Group_6__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getGroup_6()); 
+                    }
+                    // InternalCubeDSL.g:2763:3: ( rule__OpMultiAssign__Group_6__0 )
+                    // InternalCubeDSL.g:2763: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"
+    // InternalCubeDSL.g:2771:1: rule__OpEquality__Alternatives : ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) );
+    public final void rule__OpEquality__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2775:1: ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) )
+            int alt11=4;
+            switch ( input.LA(1) ) {
+            case 21:
+                {
+                alt11=1;
+                }
+                break;
+            case 22:
+                {
+                alt11=2;
+                }
+                break;
+            case 23:
+                {
+                alt11=3;
+                }
+                break;
+            case 24:
+                {
+                alt11=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 11, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt11) {
+                case 1 :
+                    // InternalCubeDSL.g:2776:2: ( '==' )
+                    {
+                    // InternalCubeDSL.g:2776:2: ( '==' )
+                    // InternalCubeDSL.g:2777:3: '=='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
+                    }
+                    match(input,21,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:2782:2: ( '!=' )
+                    {
+                    // InternalCubeDSL.g:2782:2: ( '!=' )
+                    // InternalCubeDSL.g:2783:3: '!='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
+                    }
+                    match(input,22,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalCubeDSL.g:2788:2: ( '===' )
+                    {
+                    // InternalCubeDSL.g:2788:2: ( '===' )
+                    // InternalCubeDSL.g:2789:3: '==='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
+                    }
+                    match(input,23,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalCubeDSL.g:2794:2: ( '!==' )
+                    {
+                    // InternalCubeDSL.g:2794:2: ( '!==' )
+                    // InternalCubeDSL.g:2795:3: '!=='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
+                    }
+                    match(input,24,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"
+    // InternalCubeDSL.g:2804: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 {
+            // InternalCubeDSL.g:2808:1: ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) )
+            int alt12=2;
+            int LA12_0 = input.LA(1);
+
+            if ( (LA12_0==94) ) {
+                alt12=1;
+            }
+            else if ( ((LA12_0>=25 && LA12_0<=27)) ) {
+                alt12=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 12, 0, input);
+
+                throw nvae;
+            }
+            switch (alt12) {
+                case 1 :
+                    // InternalCubeDSL.g:2809:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    {
+                    // InternalCubeDSL.g:2809:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    // InternalCubeDSL.g:2810:3: ( rule__XRelationalExpression__Group_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); 
+                    }
+                    // InternalCubeDSL.g:2811:3: ( rule__XRelationalExpression__Group_1_0__0 )
+                    // InternalCubeDSL.g:2811: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 :
+                    // InternalCubeDSL.g:2815:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    {
+                    // InternalCubeDSL.g:2815:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    // InternalCubeDSL.g:2816:3: ( rule__XRelationalExpression__Group_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); 
+                    }
+                    // InternalCubeDSL.g:2817:3: ( rule__XRelationalExpression__Group_1_1__0 )
+                    // InternalCubeDSL.g:2817: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"
+    // InternalCubeDSL.g:2825:1: rule__OpCompare__Alternatives : ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) );
+    public final void rule__OpCompare__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2829:1: ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) )
+            int alt13=4;
+            switch ( input.LA(1) ) {
+            case 25:
+                {
+                alt13=1;
+                }
+                break;
+            case 27:
+                {
+                int LA13_2 = input.LA(2);
+
+                if ( (LA13_2==EOF||(LA13_2>=RULE_ID && LA13_2<=RULE_DECIMAL)||LA13_2==27||(LA13_2>=34 && LA13_2<=35)||LA13_2==40||(LA13_2>=45 && LA13_2<=50)||LA13_2==74||LA13_2==88||(LA13_2>=92 && LA13_2<=93)||LA13_2==96||LA13_2==98||(LA13_2>=102 && LA13_2<=110)||LA13_2==112||LA13_2==131) ) {
+                    alt13=4;
+                }
+                else if ( (LA13_2==13) ) {
+                    alt13=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 13, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 26:
+                {
+                alt13=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 13, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt13) {
+                case 1 :
+                    // InternalCubeDSL.g:2830:2: ( '>=' )
+                    {
+                    // InternalCubeDSL.g:2830:2: ( '>=' )
+                    // InternalCubeDSL.g:2831:3: '>='
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
+                    }
+                    match(input,25,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:2836:2: ( ( rule__OpCompare__Group_1__0 ) )
+                    {
+                    // InternalCubeDSL.g:2836:2: ( ( rule__OpCompare__Group_1__0 ) )
+                    // InternalCubeDSL.g:2837:3: ( rule__OpCompare__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpCompareAccess().getGroup_1()); 
+                    }
+                    // InternalCubeDSL.g:2838:3: ( rule__OpCompare__Group_1__0 )
+                    // InternalCubeDSL.g:2838: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 :
+                    // InternalCubeDSL.g:2842:2: ( '>' )
+                    {
+                    // InternalCubeDSL.g:2842:2: ( '>' )
+                    // InternalCubeDSL.g:2843:3: '>'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
+                    }
+                    match(input,26,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalCubeDSL.g:2848:2: ( '<' )
+                    {
+                    // InternalCubeDSL.g:2848:2: ( '<' )
+                    // InternalCubeDSL.g:2849:3: '<'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
+                    }
+                    match(input,27,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"
+    // InternalCubeDSL.g:2858: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 {
+            // InternalCubeDSL.g:2862:1: ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) )
+            int alt14=9;
+            alt14 = dfa14.predict(input);
+            switch (alt14) {
+                case 1 :
+                    // InternalCubeDSL.g:2863:2: ( '->' )
+                    {
+                    // InternalCubeDSL.g:2863:2: ( '->' )
+                    // InternalCubeDSL.g:2864:3: '->'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
+                    }
+                    match(input,28,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getHyphenMinusGreaterThanSignKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:2869:2: ( '..<' )
+                    {
+                    // InternalCubeDSL.g:2869:2: ( '..<' )
+                    // InternalCubeDSL.g:2870:3: '..<'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
+                    }
+                    match(input,29,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getFullStopFullStopLessThanSignKeyword_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalCubeDSL.g:2875:2: ( ( rule__OpOther__Group_2__0 ) )
+                    {
+                    // InternalCubeDSL.g:2875:2: ( ( rule__OpOther__Group_2__0 ) )
+                    // InternalCubeDSL.g:2876:3: ( rule__OpOther__Group_2__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_2()); 
+                    }
+                    // InternalCubeDSL.g:2877:3: ( rule__OpOther__Group_2__0 )
+                    // InternalCubeDSL.g:2877: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 :
+                    // InternalCubeDSL.g:2881:2: ( '..' )
+                    {
+                    // InternalCubeDSL.g:2881:2: ( '..' )
+                    // InternalCubeDSL.g:2882:3: '..'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); 
+                    }
+                    match(input,30,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalCubeDSL.g:2887:2: ( '=>' )
+                    {
+                    // InternalCubeDSL.g:2887:2: ( '=>' )
+                    // InternalCubeDSL.g:2888:3: '=>'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); 
+                    }
+                    match(input,31,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalCubeDSL.g:2893:2: ( ( rule__OpOther__Group_5__0 ) )
+                    {
+                    // InternalCubeDSL.g:2893:2: ( ( rule__OpOther__Group_5__0 ) )
+                    // InternalCubeDSL.g:2894:3: ( rule__OpOther__Group_5__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_5()); 
+                    }
+                    // InternalCubeDSL.g:2895:3: ( rule__OpOther__Group_5__0 )
+                    // InternalCubeDSL.g:2895: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 :
+                    // InternalCubeDSL.g:2899:2: ( ( rule__OpOther__Group_6__0 ) )
+                    {
+                    // InternalCubeDSL.g:2899:2: ( ( rule__OpOther__Group_6__0 ) )
+                    // InternalCubeDSL.g:2900:3: ( rule__OpOther__Group_6__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_6()); 
+                    }
+                    // InternalCubeDSL.g:2901:3: ( rule__OpOther__Group_6__0 )
+                    // InternalCubeDSL.g:2901: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 :
+                    // InternalCubeDSL.g:2905:2: ( '<>' )
+                    {
+                    // InternalCubeDSL.g:2905:2: ( '<>' )
+                    // InternalCubeDSL.g:2906:3: '<>'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); 
+                    }
+                    match(input,32,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // InternalCubeDSL.g:2911:2: ( '?:' )
+                    {
+                    // InternalCubeDSL.g:2911:2: ( '?:' )
+                    // InternalCubeDSL.g:2912:3: '?:'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8()); 
+                    }
+                    match(input,33,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"
+    // InternalCubeDSL.g:2921: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 {
+            // InternalCubeDSL.g:2925:1: ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) )
+            int alt15=2;
+            int LA15_0 = input.LA(1);
+
+            if ( (LA15_0==26) ) {
+                int LA15_1 = input.LA(2);
+
+                if ( (LA15_1==26) ) {
+                    alt15=1;
+                }
+                else if ( (LA15_1==EOF||(LA15_1>=RULE_ID && LA15_1<=RULE_DECIMAL)||LA15_1==27||(LA15_1>=34 && LA15_1<=35)||LA15_1==40||(LA15_1>=45 && LA15_1<=50)||LA15_1==74||LA15_1==88||(LA15_1>=92 && LA15_1<=93)||LA15_1==96||LA15_1==98||(LA15_1>=102 && LA15_1<=110)||LA15_1==112||LA15_1==131) ) {
+                    alt15=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 15, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 15, 0, input);
+
+                throw nvae;
+            }
+            switch (alt15) {
+                case 1 :
+                    // InternalCubeDSL.g:2926:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
+                    {
+                    // InternalCubeDSL.g:2926:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
+                    // InternalCubeDSL.g:2927:3: ( rule__OpOther__Group_5_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); 
+                    }
+                    // InternalCubeDSL.g:2928:3: ( rule__OpOther__Group_5_1_0__0 )
+                    // InternalCubeDSL.g:2928: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 :
+                    // InternalCubeDSL.g:2932:2: ( '>' )
+                    {
+                    // InternalCubeDSL.g:2932:2: ( '>' )
+                    // InternalCubeDSL.g:2933:3: '>'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); 
+                    }
+                    match(input,26,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"
+    // InternalCubeDSL.g:2942: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 {
+            // InternalCubeDSL.g:2946:1: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) )
+            int alt16=3;
+            int LA16_0 = input.LA(1);
+
+            if ( (LA16_0==27) ) {
+                int LA16_1 = input.LA(2);
+
+                if ( (synpred34_InternalCubeDSL()) ) {
+                    alt16=1;
+                }
+                else if ( (synpred35_InternalCubeDSL()) ) {
+                    alt16=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 16, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA16_0==31) ) {
+                alt16=3;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 16, 0, input);
+
+                throw nvae;
+            }
+            switch (alt16) {
+                case 1 :
+                    // InternalCubeDSL.g:2947:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+                    {
+                    // InternalCubeDSL.g:2947:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+                    // InternalCubeDSL.g:2948:3: ( rule__OpOther__Group_6_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); 
+                    }
+                    // InternalCubeDSL.g:2949:3: ( rule__OpOther__Group_6_1_0__0 )
+                    // InternalCubeDSL.g:2949: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 :
+                    // InternalCubeDSL.g:2953:2: ( '<' )
+                    {
+                    // InternalCubeDSL.g:2953:2: ( '<' )
+                    // InternalCubeDSL.g:2954:3: '<'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
+                    }
+                    match(input,27,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalCubeDSL.g:2959:2: ( '=>' )
+                    {
+                    // InternalCubeDSL.g:2959:2: ( '=>' )
+                    // InternalCubeDSL.g:2960:3: '=>'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2()); 
+                    }
+                    match(input,31,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"
+    // InternalCubeDSL.g:2969:1: rule__OpAdd__Alternatives : ( ( '+' ) | ( '-' ) );
+    public final void rule__OpAdd__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2973:1: ( ( '+' ) | ( '-' ) )
+            int alt17=2;
+            int LA17_0 = input.LA(1);
+
+            if ( (LA17_0==34) ) {
+                alt17=1;
+            }
+            else if ( (LA17_0==35) ) {
+                alt17=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 17, 0, input);
+
+                throw nvae;
+            }
+            switch (alt17) {
+                case 1 :
+                    // InternalCubeDSL.g:2974:2: ( '+' )
+                    {
+                    // InternalCubeDSL.g:2974:2: ( '+' )
+                    // InternalCubeDSL.g:2975:3: '+'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
+                    }
+                    match(input,34,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:2980:2: ( '-' )
+                    {
+                    // InternalCubeDSL.g:2980:2: ( '-' )
+                    // InternalCubeDSL.g:2981:3: '-'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
+                    }
+                    match(input,35,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"
+    // InternalCubeDSL.g:2990:1: rule__OpMulti__Alternatives : ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) );
+    public final void rule__OpMulti__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:2994:1: ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) )
+            int alt18=4;
+            switch ( input.LA(1) ) {
+            case 36:
+                {
+                alt18=1;
+                }
+                break;
+            case 37:
+                {
+                alt18=2;
+                }
+                break;
+            case 38:
+                {
+                alt18=3;
+                }
+                break;
+            case 39:
+                {
+                alt18=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 18, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt18) {
+                case 1 :
+                    // InternalCubeDSL.g:2995:2: ( '*' )
+                    {
+                    // InternalCubeDSL.g:2995:2: ( '*' )
+                    // InternalCubeDSL.g:2996:3: '*'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
+                    }
+                    match(input,36,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAccess().getAsteriskKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:3001:2: ( '**' )
+                    {
+                    // InternalCubeDSL.g:3001:2: ( '**' )
+                    // InternalCubeDSL.g:3002:3: '**'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
+                    }
+                    match(input,37,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalCubeDSL.g:3007:2: ( '/' )
+                    {
+                    // InternalCubeDSL.g:3007:2: ( '/' )
+                    // InternalCubeDSL.g:3008:3: '/'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
+                    }
+                    match(input,38,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalCubeDSL.g:3013:2: ( '%' )
+                    {
+                    // InternalCubeDSL.g:3013:2: ( '%' )
+                    // InternalCubeDSL.g:3014:3: '%'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
+                    }
+                    match(input,39,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"
+    // InternalCubeDSL.g:3023:1: rule__XUnaryOperation__Alternatives : ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) );
+    public final void rule__XUnaryOperation__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3027:1: ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) )
+            int alt19=2;
+            int LA19_0 = input.LA(1);
+
+            if ( ((LA19_0>=34 && LA19_0<=35)||LA19_0==40) ) {
+                alt19=1;
+            }
+            else if ( ((LA19_0>=RULE_ID && LA19_0<=RULE_DECIMAL)||LA19_0==27||(LA19_0>=45 && LA19_0<=50)||LA19_0==74||LA19_0==88||(LA19_0>=92 && LA19_0<=93)||LA19_0==96||LA19_0==98||(LA19_0>=102 && LA19_0<=110)||LA19_0==112||LA19_0==131) ) {
+                alt19=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 19, 0, input);
+
+                throw nvae;
+            }
+            switch (alt19) {
+                case 1 :
+                    // InternalCubeDSL.g:3028:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
+                    {
+                    // InternalCubeDSL.g:3028:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
+                    // InternalCubeDSL.g:3029:3: ( rule__XUnaryOperation__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXUnaryOperationAccess().getGroup_0()); 
+                    }
+                    // InternalCubeDSL.g:3030:3: ( rule__XUnaryOperation__Group_0__0 )
+                    // InternalCubeDSL.g:3030: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 :
+                    // InternalCubeDSL.g:3034:2: ( ruleXCastedExpression )
+                    {
+                    // InternalCubeDSL.g:3034:2: ( ruleXCastedExpression )
+                    // InternalCubeDSL.g:3035: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"
+    // InternalCubeDSL.g:3044:1: rule__OpUnary__Alternatives : ( ( '!' ) | ( '-' ) | ( '+' ) );
+    public final void rule__OpUnary__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3048:1: ( ( '!' ) | ( '-' ) | ( '+' ) )
+            int alt20=3;
+            switch ( input.LA(1) ) {
+            case 40:
+                {
+                alt20=1;
+                }
+                break;
+            case 35:
+                {
+                alt20=2;
+                }
+                break;
+            case 34:
+                {
+                alt20=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 20, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt20) {
+                case 1 :
+                    // InternalCubeDSL.g:3049:2: ( '!' )
+                    {
+                    // InternalCubeDSL.g:3049:2: ( '!' )
+                    // InternalCubeDSL.g:3050:3: '!'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
+                    }
+                    match(input,40,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:3055:2: ( '-' )
+                    {
+                    // InternalCubeDSL.g:3055:2: ( '-' )
+                    // InternalCubeDSL.g:3056:3: '-'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
+                    }
+                    match(input,35,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalCubeDSL.g:3061:2: ( '+' )
+                    {
+                    // InternalCubeDSL.g:3061:2: ( '+' )
+                    // InternalCubeDSL.g:3062:3: '+'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
+                    }
+                    match(input,34,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"
+    // InternalCubeDSL.g:3071:1: rule__OpPostfix__Alternatives : ( ( '++' ) | ( '--' ) );
+    public final void rule__OpPostfix__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3075:1: ( ( '++' ) | ( '--' ) )
+            int alt21=2;
+            int LA21_0 = input.LA(1);
+
+            if ( (LA21_0==41) ) {
+                alt21=1;
+            }
+            else if ( (LA21_0==42) ) {
+                alt21=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 21, 0, input);
+
+                throw nvae;
+            }
+            switch (alt21) {
+                case 1 :
+                    // InternalCubeDSL.g:3076:2: ( '++' )
+                    {
+                    // InternalCubeDSL.g:3076:2: ( '++' )
+                    // InternalCubeDSL.g:3077:3: '++'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); 
+                    }
+                    match(input,41,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:3082:2: ( '--' )
+                    {
+                    // InternalCubeDSL.g:3082:2: ( '--' )
+                    // InternalCubeDSL.g:3083:3: '--'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1()); 
+                    }
+                    match(input,42,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"
+    // InternalCubeDSL.g:3092: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 {
+            // InternalCubeDSL.g:3096:1: ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) )
+            int alt22=2;
+            alt22 = dfa22.predict(input);
+            switch (alt22) {
+                case 1 :
+                    // InternalCubeDSL.g:3097:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
+                    {
+                    // InternalCubeDSL.g:3097:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
+                    // InternalCubeDSL.g:3098:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); 
+                    }
+                    // InternalCubeDSL.g:3099:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
+                    // InternalCubeDSL.g:3099: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 :
+                    // InternalCubeDSL.g:3103:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
+                    {
+                    // InternalCubeDSL.g:3103:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
+                    // InternalCubeDSL.g:3104:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); 
+                    }
+                    // InternalCubeDSL.g:3105:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
+                    // InternalCubeDSL.g:3105: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"
+    // InternalCubeDSL.g:3113: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 {
+            // InternalCubeDSL.g:3117:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) )
+            int alt23=2;
+            int LA23_0 = input.LA(1);
+
+            if ( (LA23_0==43) ) {
+                alt23=1;
+            }
+            else if ( (LA23_0==127) ) {
+                alt23=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 23, 0, input);
+
+                throw nvae;
+            }
+            switch (alt23) {
+                case 1 :
+                    // InternalCubeDSL.g:3118:2: ( '.' )
+                    {
+                    // InternalCubeDSL.g:3118:2: ( '.' )
+                    // InternalCubeDSL.g:3119:3: '.'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0()); 
+                    }
+                    match(input,43,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:3124:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
+                    {
+                    // InternalCubeDSL.g:3124:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
+                    // InternalCubeDSL.g:3125:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1()); 
+                    }
+                    // InternalCubeDSL.g:3126:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
+                    // InternalCubeDSL.g:3126: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"
+    // InternalCubeDSL.g:3134: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 {
+            // InternalCubeDSL.g:3138:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) )
+            int alt24=3;
+            switch ( input.LA(1) ) {
+            case 43:
+                {
+                alt24=1;
+                }
+                break;
+            case 128:
+                {
+                alt24=2;
+                }
+                break;
+            case 127:
+                {
+                alt24=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 24, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt24) {
+                case 1 :
+                    // InternalCubeDSL.g:3139:2: ( '.' )
+                    {
+                    // InternalCubeDSL.g:3139:2: ( '.' )
+                    // InternalCubeDSL.g:3140:3: '.'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0()); 
+                    }
+                    match(input,43,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:3145:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
+                    {
+                    // InternalCubeDSL.g:3145:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
+                    // InternalCubeDSL.g:3146:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1()); 
+                    }
+                    // InternalCubeDSL.g:3147:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
+                    // InternalCubeDSL.g:3147: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 :
+                    // InternalCubeDSL.g:3151:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
+                    {
+                    // InternalCubeDSL.g:3151:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
+                    // InternalCubeDSL.g:3152:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2()); 
+                    }
+                    // InternalCubeDSL.g:3153:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
+                    // InternalCubeDSL.g:3153: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"
+    // InternalCubeDSL.g:3161: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 {
+            // InternalCubeDSL.g:3165:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) )
+            int alt25=2;
+            alt25 = dfa25.predict(input);
+            switch (alt25) {
+                case 1 :
+                    // InternalCubeDSL.g:3166:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+                    {
+                    // InternalCubeDSL.g:3166:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+                    // InternalCubeDSL.g:3167:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); 
+                    }
+                    // InternalCubeDSL.g:3168:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+                    // InternalCubeDSL.g:3168: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 :
+                    // InternalCubeDSL.g:3172:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
+                    {
+                    // InternalCubeDSL.g:3172:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
+                    // InternalCubeDSL.g:3173:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1()); 
+                    }
+                    // InternalCubeDSL.g:3174:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
+                    // InternalCubeDSL.g:3174: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"
+    // InternalCubeDSL.g:3182: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 {
+            // InternalCubeDSL.g:3186:1: ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) )
+            int alt26=15;
+            alt26 = dfa26.predict(input);
+            switch (alt26) {
+                case 1 :
+                    // InternalCubeDSL.g:3187:2: ( ruleXConstructorCall )
+                    {
+                    // InternalCubeDSL.g:3187:2: ( ruleXConstructorCall )
+                    // InternalCubeDSL.g:3188: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 :
+                    // InternalCubeDSL.g:3193:2: ( ruleXBlockExpression )
+                    {
+                    // InternalCubeDSL.g:3193:2: ( ruleXBlockExpression )
+                    // InternalCubeDSL.g:3194: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 :
+                    // InternalCubeDSL.g:3199:2: ( ruleXSwitchExpression )
+                    {
+                    // InternalCubeDSL.g:3199:2: ( ruleXSwitchExpression )
+                    // InternalCubeDSL.g:3200: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 :
+                    // InternalCubeDSL.g:3205:2: ( ( ruleXSynchronizedExpression ) )
+                    {
+                    // InternalCubeDSL.g:3205:2: ( ( ruleXSynchronizedExpression ) )
+                    // InternalCubeDSL.g:3206:3: ( ruleXSynchronizedExpression )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); 
+                    }
+                    // InternalCubeDSL.g:3207:3: ( ruleXSynchronizedExpression )
+                    // InternalCubeDSL.g:3207:4: ruleXSynchronizedExpression
+                    {
+                    pushFollow(FOLLOW_2);
+                    ruleXSynchronizedExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalCubeDSL.g:3211:2: ( ruleXFeatureCall )
+                    {
+                    // InternalCubeDSL.g:3211:2: ( ruleXFeatureCall )
+                    // InternalCubeDSL.g:3212: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 :
+                    // InternalCubeDSL.g:3217:2: ( ruleXLiteral )
+                    {
+                    // InternalCubeDSL.g:3217:2: ( ruleXLiteral )
+                    // InternalCubeDSL.g:3218: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 :
+                    // InternalCubeDSL.g:3223:2: ( ruleXIfExpression )
+                    {
+                    // InternalCubeDSL.g:3223:2: ( ruleXIfExpression )
+                    // InternalCubeDSL.g:3224: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 :
+                    // InternalCubeDSL.g:3229:2: ( ( ruleXForLoopExpression ) )
+                    {
+                    // InternalCubeDSL.g:3229:2: ( ( ruleXForLoopExpression ) )
+                    // InternalCubeDSL.g:3230:3: ( ruleXForLoopExpression )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
+                    }
+                    // InternalCubeDSL.g:3231:3: ( ruleXForLoopExpression )
+                    // InternalCubeDSL.g:3231:4: ruleXForLoopExpression
+                    {
+                    pushFollow(FOLLOW_2);
+                    ruleXForLoopExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // InternalCubeDSL.g:3235:2: ( ruleXBasicForLoopExpression )
+                    {
+                    // InternalCubeDSL.g:3235:2: ( ruleXBasicForLoopExpression )
+                    // InternalCubeDSL.g:3236: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 :
+                    // InternalCubeDSL.g:3241:2: ( ruleXWhileExpression )
+                    {
+                    // InternalCubeDSL.g:3241:2: ( ruleXWhileExpression )
+                    // InternalCubeDSL.g:3242: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 :
+                    // InternalCubeDSL.g:3247:2: ( ruleXDoWhileExpression )
+                    {
+                    // InternalCubeDSL.g:3247:2: ( ruleXDoWhileExpression )
+                    // InternalCubeDSL.g:3248: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 :
+                    // InternalCubeDSL.g:3253:2: ( ruleXThrowExpression )
+                    {
+                    // InternalCubeDSL.g:3253:2: ( ruleXThrowExpression )
+                    // InternalCubeDSL.g:3254: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 :
+                    // InternalCubeDSL.g:3259:2: ( ruleXReturnExpression )
+                    {
+                    // InternalCubeDSL.g:3259:2: ( ruleXReturnExpression )
+                    // InternalCubeDSL.g:3260: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 :
+                    // InternalCubeDSL.g:3265:2: ( ruleXTryCatchFinallyExpression )
+                    {
+                    // InternalCubeDSL.g:3265:2: ( ruleXTryCatchFinallyExpression )
+                    // InternalCubeDSL.g:3266: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 :
+                    // InternalCubeDSL.g:3271:2: ( ruleXParenthesizedExpression )
+                    {
+                    // InternalCubeDSL.g:3271:2: ( ruleXParenthesizedExpression )
+                    // InternalCubeDSL.g:3272: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"
+    // InternalCubeDSL.g:3281:1: rule__XLiteral__Alternatives : ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) );
+    public final void rule__XLiteral__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3285:1: ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) )
+            int alt27=7;
+            switch ( input.LA(1) ) {
+            case 92:
+                {
+                alt27=1;
+                }
+                break;
+            case 93:
+                {
+                alt27=2;
+                }
+                break;
+            case 50:
+            case 131:
+                {
+                alt27=3;
+                }
+                break;
+            case RULE_HEX:
+            case RULE_INT:
+            case RULE_DECIMAL:
+                {
+                alt27=4;
+                }
+                break;
+            case 106:
+                {
+                alt27=5;
+                }
+                break;
+            case RULE_STRING:
+                {
+                alt27=6;
+                }
+                break;
+            case 107:
+                {
+                alt27=7;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 27, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt27) {
+                case 1 :
+                    // InternalCubeDSL.g:3286:2: ( ruleXCollectionLiteral )
+                    {
+                    // InternalCubeDSL.g:3286:2: ( ruleXCollectionLiteral )
+                    // InternalCubeDSL.g:3287: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 :
+                    // InternalCubeDSL.g:3292:2: ( ( ruleXClosure ) )
+                    {
+                    // InternalCubeDSL.g:3292:2: ( ( ruleXClosure ) )
+                    // InternalCubeDSL.g:3293:3: ( ruleXClosure )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); 
+                    }
+                    // InternalCubeDSL.g:3294:3: ( ruleXClosure )
+                    // InternalCubeDSL.g:3294:4: ruleXClosure
+                    {
+                    pushFollow(FOLLOW_2);
+                    ruleXClosure();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalCubeDSL.g:3298:2: ( ruleXBooleanLiteral )
+                    {
+                    // InternalCubeDSL.g:3298:2: ( ruleXBooleanLiteral )
+                    // InternalCubeDSL.g:3299: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 :
+                    // InternalCubeDSL.g:3304:2: ( ruleXNumberLiteral )
+                    {
+                    // InternalCubeDSL.g:3304:2: ( ruleXNumberLiteral )
+                    // InternalCubeDSL.g:3305: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 :
+                    // InternalCubeDSL.g:3310:2: ( ruleXNullLiteral )
+                    {
+                    // InternalCubeDSL.g:3310:2: ( ruleXNullLiteral )
+                    // InternalCubeDSL.g:3311: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 :
+                    // InternalCubeDSL.g:3316:2: ( ruleXStringLiteral )
+                    {
+                    // InternalCubeDSL.g:3316:2: ( ruleXStringLiteral )
+                    // InternalCubeDSL.g:3317: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 :
+                    // InternalCubeDSL.g:3322:2: ( ruleXTypeLiteral )
+                    {
+                    // InternalCubeDSL.g:3322:2: ( ruleXTypeLiteral )
+                    // InternalCubeDSL.g:3323: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"
+    // InternalCubeDSL.g:3332:1: rule__XCollectionLiteral__Alternatives : ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) );
+    public final void rule__XCollectionLiteral__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3336:1: ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) )
+            int alt28=2;
+            int LA28_0 = input.LA(1);
+
+            if ( (LA28_0==92) ) {
+                int LA28_1 = input.LA(2);
+
+                if ( (LA28_1==93) ) {
+                    alt28=2;
+                }
+                else if ( (LA28_1==74) ) {
+                    alt28=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 28, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 28, 0, input);
+
+                throw nvae;
+            }
+            switch (alt28) {
+                case 1 :
+                    // InternalCubeDSL.g:3337:2: ( ruleXSetLiteral )
+                    {
+                    // InternalCubeDSL.g:3337:2: ( ruleXSetLiteral )
+                    // InternalCubeDSL.g:3338: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 :
+                    // InternalCubeDSL.g:3343:2: ( ruleXListLiteral )
+                    {
+                    // InternalCubeDSL.g:3343:2: ( ruleXListLiteral )
+                    // InternalCubeDSL.g:3344: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"
+    // InternalCubeDSL.g:3353: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 {
+            // InternalCubeDSL.g:3357:1: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) )
+            int alt29=2;
+            alt29 = dfa29.predict(input);
+            switch (alt29) {
+                case 1 :
+                    // InternalCubeDSL.g:3358:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+                    {
+                    // InternalCubeDSL.g:3358:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+                    // InternalCubeDSL.g:3359:3: ( rule__XSwitchExpression__Group_2_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); 
+                    }
+                    // InternalCubeDSL.g:3360:3: ( rule__XSwitchExpression__Group_2_0__0 )
+                    // InternalCubeDSL.g:3360: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 :
+                    // InternalCubeDSL.g:3364:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
+                    {
+                    // InternalCubeDSL.g:3364:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
+                    // InternalCubeDSL.g:3365:3: ( rule__XSwitchExpression__Group_2_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1()); 
+                    }
+                    // InternalCubeDSL.g:3366:3: ( rule__XSwitchExpression__Group_2_1__0 )
+                    // InternalCubeDSL.g:3366: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"
+    // InternalCubeDSL.g:3374: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 {
+            // InternalCubeDSL.g:3378:1: ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) )
+            int alt30=2;
+            int LA30_0 = input.LA(1);
+
+            if ( (LA30_0==99) ) {
+                alt30=1;
+            }
+            else if ( (LA30_0==90) ) {
+                alt30=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 30, 0, input);
+
+                throw nvae;
+            }
+            switch (alt30) {
+                case 1 :
+                    // InternalCubeDSL.g:3379:2: ( ( rule__XCasePart__Group_3_0__0 ) )
+                    {
+                    // InternalCubeDSL.g:3379:2: ( ( rule__XCasePart__Group_3_0__0 ) )
+                    // InternalCubeDSL.g:3380:3: ( rule__XCasePart__Group_3_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXCasePartAccess().getGroup_3_0()); 
+                    }
+                    // InternalCubeDSL.g:3381:3: ( rule__XCasePart__Group_3_0__0 )
+                    // InternalCubeDSL.g:3381: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 :
+                    // InternalCubeDSL.g:3385:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
+                    {
+                    // InternalCubeDSL.g:3385:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
+                    // InternalCubeDSL.g:3386:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1()); 
+                    }
+                    // InternalCubeDSL.g:3387:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
+                    // InternalCubeDSL.g:3387: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"
+    // InternalCubeDSL.g:3395:1: rule__XExpressionOrVarDeclaration__Alternatives : ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) );
+    public final void rule__XExpressionOrVarDeclaration__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3399:1: ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) )
+            int alt31=2;
+            int LA31_0 = input.LA(1);
+
+            if ( (LA31_0==44||LA31_0==130) ) {
+                alt31=1;
+            }
+            else if ( ((LA31_0>=RULE_ID && LA31_0<=RULE_DECIMAL)||LA31_0==27||(LA31_0>=34 && LA31_0<=35)||LA31_0==40||(LA31_0>=45 && LA31_0<=50)||LA31_0==74||LA31_0==88||(LA31_0>=92 && LA31_0<=93)||LA31_0==96||LA31_0==98||(LA31_0>=102 && LA31_0<=110)||LA31_0==112||LA31_0==131) ) {
+                alt31=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 31, 0, input);
+
+                throw nvae;
+            }
+            switch (alt31) {
+                case 1 :
+                    // InternalCubeDSL.g:3400:2: ( ruleXVariableDeclaration )
+                    {
+                    // InternalCubeDSL.g:3400:2: ( ruleXVariableDeclaration )
+                    // InternalCubeDSL.g:3401: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 :
+                    // InternalCubeDSL.g:3406:2: ( ruleXExpression )
+                    {
+                    // InternalCubeDSL.g:3406:2: ( ruleXExpression )
+                    // InternalCubeDSL.g:3407: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"
+    // InternalCubeDSL.g:3416:1: rule__XVariableDeclaration__Alternatives_1 : ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) );
+    public final void rule__XVariableDeclaration__Alternatives_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3420:1: ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) )
+            int alt32=2;
+            int LA32_0 = input.LA(1);
+
+            if ( (LA32_0==130) ) {
+                alt32=1;
+            }
+            else if ( (LA32_0==44) ) {
+                alt32=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 32, 0, input);
+
+                throw nvae;
+            }
+            switch (alt32) {
+                case 1 :
+                    // InternalCubeDSL.g:3421:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
+                    {
+                    // InternalCubeDSL.g:3421:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
+                    // InternalCubeDSL.g:3422:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0()); 
+                    }
+                    // InternalCubeDSL.g:3423:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
+                    // InternalCubeDSL.g:3423: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 :
+                    // InternalCubeDSL.g:3427:2: ( 'val' )
+                    {
+                    // InternalCubeDSL.g:3427:2: ( 'val' )
+                    // InternalCubeDSL.g:3428:3: 'val'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1()); 
+                    }
+                    match(input,44,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"
+    // InternalCubeDSL.g:3437: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 {
+            // InternalCubeDSL.g:3441:1: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) )
+            int alt33=2;
+            int LA33_0 = input.LA(1);
+
+            if ( (LA33_0==RULE_ID) ) {
+                int LA33_1 = input.LA(2);
+
+                if ( (synpred74_InternalCubeDSL()) ) {
+                    alt33=1;
+                }
+                else if ( (true) ) {
+                    alt33=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 33, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA33_0==31||LA33_0==88) ) {
+                alt33=1;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 33, 0, input);
+
+                throw nvae;
+            }
+            switch (alt33) {
+                case 1 :
+                    // InternalCubeDSL.g:3442:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+                    {
+                    // InternalCubeDSL.g:3442:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+                    // InternalCubeDSL.g:3443:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); 
+                    }
+                    // InternalCubeDSL.g:3444:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+                    // InternalCubeDSL.g:3444: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 :
+                    // InternalCubeDSL.g:3448:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
+                    {
+                    // InternalCubeDSL.g:3448:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
+                    // InternalCubeDSL.g:3449:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1()); 
+                    }
+                    // InternalCubeDSL.g:3450:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
+                    // InternalCubeDSL.g:3450: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"
+    // InternalCubeDSL.g:3458: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 {
+            // InternalCubeDSL.g:3462:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) )
+            int alt34=2;
+            alt34 = dfa34.predict(input);
+            switch (alt34) {
+                case 1 :
+                    // InternalCubeDSL.g:3463:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+                    {
+                    // InternalCubeDSL.g:3463:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+                    // InternalCubeDSL.g:3464:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); 
+                    }
+                    // InternalCubeDSL.g:3465:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+                    // InternalCubeDSL.g:3465: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 :
+                    // InternalCubeDSL.g:3469:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
+                    {
+                    // InternalCubeDSL.g:3469:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
+                    // InternalCubeDSL.g:3470:3: ( rule__XFeatureCall__Group_3_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1()); 
+                    }
+                    // InternalCubeDSL.g:3471:3: ( rule__XFeatureCall__Group_3_1_1__0 )
+                    // InternalCubeDSL.g:3471: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"
+    // InternalCubeDSL.g:3479:1: rule__FeatureCallID__Alternatives : ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) );
+    public final void rule__FeatureCallID__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3483:1: ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) )
+            int alt35=5;
+            switch ( input.LA(1) ) {
+            case RULE_ID:
+                {
+                alt35=1;
+                }
+                break;
+            case 45:
+                {
+                alt35=2;
+                }
+                break;
+            case 46:
+                {
+                alt35=3;
+                }
+                break;
+            case 47:
+                {
+                alt35=4;
+                }
+                break;
+            case 48:
+                {
+                alt35=5;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 35, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt35) {
+                case 1 :
+                    // InternalCubeDSL.g:3484:2: ( ruleValidID )
+                    {
+                    // InternalCubeDSL.g:3484:2: ( ruleValidID )
+                    // InternalCubeDSL.g:3485: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 :
+                    // InternalCubeDSL.g:3490:2: ( 'extends' )
+                    {
+                    // InternalCubeDSL.g:3490:2: ( 'extends' )
+                    // InternalCubeDSL.g:3491:3: 'extends'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); 
+                    }
+                    match(input,45,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalCubeDSL.g:3496:2: ( 'static' )
+                    {
+                    // InternalCubeDSL.g:3496:2: ( 'static' )
+                    // InternalCubeDSL.g:3497:3: 'static'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); 
+                    }
+                    match(input,46,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalCubeDSL.g:3502:2: ( 'import' )
+                    {
+                    // InternalCubeDSL.g:3502:2: ( 'import' )
+                    // InternalCubeDSL.g:3503:3: 'import'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); 
+                    }
+                    match(input,47,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getFeatureCallIDAccess().getImportKeyword_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalCubeDSL.g:3508:2: ( 'extension' )
+                    {
+                    // InternalCubeDSL.g:3508:2: ( 'extension' )
+                    // InternalCubeDSL.g:3509:3: 'extension'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getFeatureCallIDAccess().getExtensionKeyword_4()); 
+                    }
+                    match(input,48,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"
+    // InternalCubeDSL.g:3518:1: rule__IdOrSuper__Alternatives : ( ( ruleFeatureCallID ) | ( 'super' ) );
+    public final void rule__IdOrSuper__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3522:1: ( ( ruleFeatureCallID ) | ( 'super' ) )
+            int alt36=2;
+            int LA36_0 = input.LA(1);
+
+            if ( (LA36_0==RULE_ID||(LA36_0>=45 && LA36_0<=48)) ) {
+                alt36=1;
+            }
+            else if ( (LA36_0==49) ) {
+                alt36=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 36, 0, input);
+
+                throw nvae;
+            }
+            switch (alt36) {
+                case 1 :
+                    // InternalCubeDSL.g:3523:2: ( ruleFeatureCallID )
+                    {
+                    // InternalCubeDSL.g:3523:2: ( ruleFeatureCallID )
+                    // InternalCubeDSL.g:3524: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 :
+                    // InternalCubeDSL.g:3529:2: ( 'super' )
+                    {
+                    // InternalCubeDSL.g:3529:2: ( 'super' )
+                    // InternalCubeDSL.g:3530:3: 'super'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getIdOrSuperAccess().getSuperKeyword_1()); 
+                    }
+                    match(input,49,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"
+    // InternalCubeDSL.g:3539: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 {
+            // InternalCubeDSL.g:3543:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) )
+            int alt37=2;
+            alt37 = dfa37.predict(input);
+            switch (alt37) {
+                case 1 :
+                    // InternalCubeDSL.g:3544:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+                    {
+                    // InternalCubeDSL.g:3544:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+                    // InternalCubeDSL.g:3545:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); 
+                    }
+                    // InternalCubeDSL.g:3546:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+                    // InternalCubeDSL.g:3546: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 :
+                    // InternalCubeDSL.g:3550:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
+                    {
+                    // InternalCubeDSL.g:3550:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
+                    // InternalCubeDSL.g:3551:3: ( rule__XConstructorCall__Group_4_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1()); 
+                    }
+                    // InternalCubeDSL.g:3552:3: ( rule__XConstructorCall__Group_4_1_1__0 )
+                    // InternalCubeDSL.g:3552: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"
+    // InternalCubeDSL.g:3560:1: rule__XBooleanLiteral__Alternatives_1 : ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) );
+    public final void rule__XBooleanLiteral__Alternatives_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3564:1: ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) )
+            int alt38=2;
+            int LA38_0 = input.LA(1);
+
+            if ( (LA38_0==50) ) {
+                alt38=1;
+            }
+            else if ( (LA38_0==131) ) {
+                alt38=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 38, 0, input);
+
+                throw nvae;
+            }
+            switch (alt38) {
+                case 1 :
+                    // InternalCubeDSL.g:3565:2: ( 'false' )
+                    {
+                    // InternalCubeDSL.g:3565:2: ( 'false' )
+                    // InternalCubeDSL.g:3566:3: 'false'
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()); 
+                    }
+                    match(input,50,FOLLOW_2); if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:3571:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
+                    {
+                    // InternalCubeDSL.g:3571:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
+                    // InternalCubeDSL.g:3572:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1()); 
+                    }
+                    // InternalCubeDSL.g:3573:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
+                    // InternalCubeDSL.g:3573: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"
+    // InternalCubeDSL.g:3581: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 {
+            // InternalCubeDSL.g:3585:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) )
+            int alt39=2;
+            int LA39_0 = input.LA(1);
+
+            if ( (LA39_0==113) ) {
+                alt39=1;
+            }
+            else if ( (LA39_0==111) ) {
+                alt39=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 39, 0, input);
+
+                throw nvae;
+            }
+            switch (alt39) {
+                case 1 :
+                    // InternalCubeDSL.g:3586:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
+                    {
+                    // InternalCubeDSL.g:3586:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
+                    // InternalCubeDSL.g:3587:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0()); 
+                    }
+                    // InternalCubeDSL.g:3588:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
+                    // InternalCubeDSL.g:3588: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 :
+                    // InternalCubeDSL.g:3592:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
+                    {
+                    // InternalCubeDSL.g:3592:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
+                    // InternalCubeDSL.g:3593:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1()); 
+                    }
+                    // InternalCubeDSL.g:3594:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
+                    // InternalCubeDSL.g:3594: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"
+    // InternalCubeDSL.g:3602:1: rule__Number__Alternatives : ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) );
+    public final void rule__Number__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3606:1: ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) )
+            int alt40=2;
+            int LA40_0 = input.LA(1);
+
+            if ( (LA40_0==RULE_HEX) ) {
+                alt40=1;
+            }
+            else if ( ((LA40_0>=RULE_INT && LA40_0<=RULE_DECIMAL)) ) {
+                alt40=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 40, 0, input);
+
+                throw nvae;
+            }
+            switch (alt40) {
+                case 1 :
+                    // InternalCubeDSL.g:3607:2: ( RULE_HEX )
+                    {
+                    // InternalCubeDSL.g:3607:2: ( RULE_HEX )
+                    // InternalCubeDSL.g:3608: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 :
+                    // InternalCubeDSL.g:3613:2: ( ( rule__Number__Group_1__0 ) )
+                    {
+                    // InternalCubeDSL.g:3613:2: ( ( rule__Number__Group_1__0 ) )
+                    // InternalCubeDSL.g:3614:3: ( rule__Number__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getNumberAccess().getGroup_1()); 
+                    }
+                    // InternalCubeDSL.g:3615:3: ( rule__Number__Group_1__0 )
+                    // InternalCubeDSL.g:3615: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"
+    // InternalCubeDSL.g:3623:1: rule__Number__Alternatives_1_0 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
+    public final void rule__Number__Alternatives_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3627:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
+            int alt41=2;
+            int LA41_0 = input.LA(1);
+
+            if ( (LA41_0==RULE_INT) ) {
+                alt41=1;
+            }
+            else if ( (LA41_0==RULE_DECIMAL) ) {
+                alt41=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 41, 0, input);
+
+                throw nvae;
+            }
+            switch (alt41) {
+                case 1 :
+                    // InternalCubeDSL.g:3628:2: ( RULE_INT )
+                    {
+                    // InternalCubeDSL.g:3628:2: ( RULE_INT )
+                    // InternalCubeDSL.g:3629: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 :
+                    // InternalCubeDSL.g:3634:2: ( RULE_DECIMAL )
+                    {
+                    // InternalCubeDSL.g:3634:2: ( RULE_DECIMAL )
+                    // InternalCubeDSL.g:3635: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"
+    // InternalCubeDSL.g:3644: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 {
+            // InternalCubeDSL.g:3648:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
+            int alt42=2;
+            int LA42_0 = input.LA(1);
+
+            if ( (LA42_0==RULE_INT) ) {
+                alt42=1;
+            }
+            else if ( (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 :
+                    // InternalCubeDSL.g:3649:2: ( RULE_INT )
+                    {
+                    // InternalCubeDSL.g:3649:2: ( RULE_INT )
+                    // InternalCubeDSL.g:3650: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 :
+                    // InternalCubeDSL.g:3655:2: ( RULE_DECIMAL )
+                    {
+                    // InternalCubeDSL.g:3655:2: ( RULE_DECIMAL )
+                    // InternalCubeDSL.g:3656: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"
+    // InternalCubeDSL.g:3665:1: rule__JvmTypeReference__Alternatives : ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) );
+    public final void rule__JvmTypeReference__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3669:1: ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) )
+            int alt43=2;
+            int LA43_0 = input.LA(1);
+
+            if ( (LA43_0==RULE_ID) ) {
+                alt43=1;
+            }
+            else if ( (LA43_0==31||LA43_0==88) ) {
+                alt43=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 43, 0, input);
+
+                throw nvae;
+            }
+            switch (alt43) {
+                case 1 :
+                    // InternalCubeDSL.g:3670:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
+                    {
+                    // InternalCubeDSL.g:3670:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
+                    // InternalCubeDSL.g:3671:3: ( rule__JvmTypeReference__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0()); 
+                    }
+                    // InternalCubeDSL.g:3672:3: ( rule__JvmTypeReference__Group_0__0 )
+                    // InternalCubeDSL.g:3672: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 :
+                    // InternalCubeDSL.g:3676:2: ( ruleXFunctionTypeRef )
+                    {
+                    // InternalCubeDSL.g:3676:2: ( ruleXFunctionTypeRef )
+                    // InternalCubeDSL.g:3677: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"
+    // InternalCubeDSL.g:3686:1: rule__JvmArgumentTypeReference__Alternatives : ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) );
+    public final void rule__JvmArgumentTypeReference__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3690:1: ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) )
+            int alt44=2;
+            int LA44_0 = input.LA(1);
+
+            if ( (LA44_0==RULE_ID||LA44_0==31||LA44_0==88) ) {
+                alt44=1;
+            }
+            else if ( (LA44_0==114) ) {
+                alt44=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 44, 0, input);
+
+                throw nvae;
+            }
+            switch (alt44) {
+                case 1 :
+                    // InternalCubeDSL.g:3691:2: ( ruleJvmTypeReference )
+                    {
+                    // InternalCubeDSL.g:3691:2: ( ruleJvmTypeReference )
+                    // InternalCubeDSL.g:3692: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 :
+                    // InternalCubeDSL.g:3697:2: ( ruleJvmWildcardTypeReference )
+                    {
+                    // InternalCubeDSL.g:3697:2: ( ruleJvmWildcardTypeReference )
+                    // InternalCubeDSL.g:3698: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"
+    // InternalCubeDSL.g:3707: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 {
+            // InternalCubeDSL.g:3711:1: ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) )
+            int alt45=2;
+            int LA45_0 = input.LA(1);
+
+            if ( (LA45_0==45) ) {
+                alt45=1;
+            }
+            else if ( (LA45_0==49) ) {
+                alt45=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 45, 0, input);
+
+                throw nvae;
+            }
+            switch (alt45) {
+                case 1 :
+                    // InternalCubeDSL.g:3712:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
+                    {
+                    // InternalCubeDSL.g:3712:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
+                    // InternalCubeDSL.g:3713:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0()); 
+                    }
+                    // InternalCubeDSL.g:3714:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
+                    // InternalCubeDSL.g:3714: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 :
+                    // InternalCubeDSL.g:3718:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
+                    {
+                    // InternalCubeDSL.g:3718:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
+                    // InternalCubeDSL.g:3719:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1()); 
+                    }
+                    // InternalCubeDSL.g:3720:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
+                    // InternalCubeDSL.g:3720: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__CubeAggregatorEnum__Alternatives"
+    // InternalCubeDSL.g:3728:1: rule__CubeAggregatorEnum__Alternatives : ( ( ( 'sum' ) ) | ( ( 'count' ) ) | ( ( 'min' ) ) | ( ( 'max' ) ) | ( ( 'avg' ) ) | ( ( 'distinct-count' ) ) );
+    public final void rule__CubeAggregatorEnum__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3732:1: ( ( ( 'sum' ) ) | ( ( 'count' ) ) | ( ( 'min' ) ) | ( ( 'max' ) ) | ( ( 'avg' ) ) | ( ( 'distinct-count' ) ) )
+            int alt46=6;
+            switch ( input.LA(1) ) {
+            case 51:
+                {
+                alt46=1;
+                }
+                break;
+            case 52:
+                {
+                alt46=2;
+                }
+                break;
+            case 53:
+                {
+                alt46=3;
+                }
+                break;
+            case 54:
+                {
+                alt46=4;
+                }
+                break;
+            case 55:
+                {
+                alt46=5;
+                }
+                break;
+            case 56:
+                {
+                alt46=6;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 46, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt46) {
+                case 1 :
+                    // InternalCubeDSL.g:3733:2: ( ( 'sum' ) )
+                    {
+                    // InternalCubeDSL.g:3733:2: ( ( 'sum' ) )
+                    // InternalCubeDSL.g:3734:3: ( 'sum' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeAggregatorEnumAccess().getSUMEnumLiteralDeclaration_0()); 
+                    }
+                    // InternalCubeDSL.g:3735:3: ( 'sum' )
+                    // InternalCubeDSL.g:3735:4: 'sum'
+                    {
+                    match(input,51,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeAggregatorEnumAccess().getSUMEnumLiteralDeclaration_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:3739:2: ( ( 'count' ) )
+                    {
+                    // InternalCubeDSL.g:3739:2: ( ( 'count' ) )
+                    // InternalCubeDSL.g:3740:3: ( 'count' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeAggregatorEnumAccess().getCOUNTEnumLiteralDeclaration_1()); 
+                    }
+                    // InternalCubeDSL.g:3741:3: ( 'count' )
+                    // InternalCubeDSL.g:3741:4: 'count'
+                    {
+                    match(input,52,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeAggregatorEnumAccess().getCOUNTEnumLiteralDeclaration_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalCubeDSL.g:3745:2: ( ( 'min' ) )
+                    {
+                    // InternalCubeDSL.g:3745:2: ( ( 'min' ) )
+                    // InternalCubeDSL.g:3746:3: ( 'min' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeAggregatorEnumAccess().getMINEnumLiteralDeclaration_2()); 
+                    }
+                    // InternalCubeDSL.g:3747:3: ( 'min' )
+                    // InternalCubeDSL.g:3747:4: 'min'
+                    {
+                    match(input,53,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeAggregatorEnumAccess().getMINEnumLiteralDeclaration_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalCubeDSL.g:3751:2: ( ( 'max' ) )
+                    {
+                    // InternalCubeDSL.g:3751:2: ( ( 'max' ) )
+                    // InternalCubeDSL.g:3752:3: ( 'max' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeAggregatorEnumAccess().getMAXEnumLiteralDeclaration_3()); 
+                    }
+                    // InternalCubeDSL.g:3753:3: ( 'max' )
+                    // InternalCubeDSL.g:3753:4: 'max'
+                    {
+                    match(input,54,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeAggregatorEnumAccess().getMAXEnumLiteralDeclaration_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalCubeDSL.g:3757:2: ( ( 'avg' ) )
+                    {
+                    // InternalCubeDSL.g:3757:2: ( ( 'avg' ) )
+                    // InternalCubeDSL.g:3758:3: ( 'avg' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeAggregatorEnumAccess().getAVGEnumLiteralDeclaration_4()); 
+                    }
+                    // InternalCubeDSL.g:3759:3: ( 'avg' )
+                    // InternalCubeDSL.g:3759:4: 'avg'
+                    {
+                    match(input,55,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeAggregatorEnumAccess().getAVGEnumLiteralDeclaration_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalCubeDSL.g:3763:2: ( ( 'distinct-count' ) )
+                    {
+                    // InternalCubeDSL.g:3763:2: ( ( 'distinct-count' ) )
+                    // InternalCubeDSL.g:3764:3: ( 'distinct-count' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeAggregatorEnumAccess().getDSCEnumLiteralDeclaration_5()); 
+                    }
+                    // InternalCubeDSL.g:3765:3: ( 'distinct-count' )
+                    // InternalCubeDSL.g:3765:4: 'distinct-count'
+                    {
+                    match(input,56,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeAggregatorEnumAccess().getDSCEnumLiteralDeclaration_5()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeAggregatorEnum__Alternatives"
+
+
+    // $ANTLR start "rule__CubeLevelPropType__Alternatives"
+    // InternalCubeDSL.g:3773:1: rule__CubeLevelPropType__Alternatives : ( ( ( 'String' ) ) | ( ( 'Numeric' ) ) | ( ( 'Integer' ) ) | ( ( 'Boolean' ) ) | ( ( 'Date' ) ) | ( ( 'Time' ) ) | ( ( 'Timestamp' ) ) );
+    public final void rule__CubeLevelPropType__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3777:1: ( ( ( 'String' ) ) | ( ( 'Numeric' ) ) | ( ( 'Integer' ) ) | ( ( 'Boolean' ) ) | ( ( 'Date' ) ) | ( ( 'Time' ) ) | ( ( 'Timestamp' ) ) )
+            int alt47=7;
+            switch ( input.LA(1) ) {
+            case 57:
+                {
+                alt47=1;
+                }
+                break;
+            case 58:
+                {
+                alt47=2;
+                }
+                break;
+            case 59:
+                {
+                alt47=3;
+                }
+                break;
+            case 60:
+                {
+                alt47=4;
+                }
+                break;
+            case 61:
+                {
+                alt47=5;
+                }
+                break;
+            case 62:
+                {
+                alt47=6;
+                }
+                break;
+            case 63:
+                {
+                alt47=7;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 47, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt47) {
+                case 1 :
+                    // InternalCubeDSL.g:3778:2: ( ( 'String' ) )
+                    {
+                    // InternalCubeDSL.g:3778:2: ( ( 'String' ) )
+                    // InternalCubeDSL.g:3779:3: ( 'String' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeLevelPropTypeAccess().getSTRINGEnumLiteralDeclaration_0()); 
+                    }
+                    // InternalCubeDSL.g:3780:3: ( 'String' )
+                    // InternalCubeDSL.g:3780:4: 'String'
+                    {
+                    match(input,57,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeLevelPropTypeAccess().getSTRINGEnumLiteralDeclaration_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:3784:2: ( ( 'Numeric' ) )
+                    {
+                    // InternalCubeDSL.g:3784:2: ( ( 'Numeric' ) )
+                    // InternalCubeDSL.g:3785:3: ( 'Numeric' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeLevelPropTypeAccess().getNUMERICEnumLiteralDeclaration_1()); 
+                    }
+                    // InternalCubeDSL.g:3786:3: ( 'Numeric' )
+                    // InternalCubeDSL.g:3786:4: 'Numeric'
+                    {
+                    match(input,58,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeLevelPropTypeAccess().getNUMERICEnumLiteralDeclaration_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalCubeDSL.g:3790:2: ( ( 'Integer' ) )
+                    {
+                    // InternalCubeDSL.g:3790:2: ( ( 'Integer' ) )
+                    // InternalCubeDSL.g:3791:3: ( 'Integer' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeLevelPropTypeAccess().getINTEGEREnumLiteralDeclaration_2()); 
+                    }
+                    // InternalCubeDSL.g:3792:3: ( 'Integer' )
+                    // InternalCubeDSL.g:3792:4: 'Integer'
+                    {
+                    match(input,59,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeLevelPropTypeAccess().getINTEGEREnumLiteralDeclaration_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalCubeDSL.g:3796:2: ( ( 'Boolean' ) )
+                    {
+                    // InternalCubeDSL.g:3796:2: ( ( 'Boolean' ) )
+                    // InternalCubeDSL.g:3797:3: ( 'Boolean' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeLevelPropTypeAccess().getBOOLEANEnumLiteralDeclaration_3()); 
+                    }
+                    // InternalCubeDSL.g:3798:3: ( 'Boolean' )
+                    // InternalCubeDSL.g:3798:4: 'Boolean'
+                    {
+                    match(input,60,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeLevelPropTypeAccess().getBOOLEANEnumLiteralDeclaration_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalCubeDSL.g:3802:2: ( ( 'Date' ) )
+                    {
+                    // InternalCubeDSL.g:3802:2: ( ( 'Date' ) )
+                    // InternalCubeDSL.g:3803:3: ( 'Date' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeLevelPropTypeAccess().getDATEEnumLiteralDeclaration_4()); 
+                    }
+                    // InternalCubeDSL.g:3804:3: ( 'Date' )
+                    // InternalCubeDSL.g:3804:4: 'Date'
+                    {
+                    match(input,61,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeLevelPropTypeAccess().getDATEEnumLiteralDeclaration_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalCubeDSL.g:3808:2: ( ( 'Time' ) )
+                    {
+                    // InternalCubeDSL.g:3808:2: ( ( 'Time' ) )
+                    // InternalCubeDSL.g:3809:3: ( 'Time' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeLevelPropTypeAccess().getTIMEEnumLiteralDeclaration_5()); 
+                    }
+                    // InternalCubeDSL.g:3810:3: ( 'Time' )
+                    // InternalCubeDSL.g:3810:4: 'Time'
+                    {
+                    match(input,62,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeLevelPropTypeAccess().getTIMEEnumLiteralDeclaration_5()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // InternalCubeDSL.g:3814:2: ( ( 'Timestamp' ) )
+                    {
+                    // InternalCubeDSL.g:3814:2: ( ( 'Timestamp' ) )
+                    // InternalCubeDSL.g:3815:3: ( 'Timestamp' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeLevelPropTypeAccess().getTIMESTAMPEnumLiteralDeclaration_6()); 
+                    }
+                    // InternalCubeDSL.g:3816:3: ( 'Timestamp' )
+                    // InternalCubeDSL.g:3816:4: 'Timestamp'
+                    {
+                    match(input,63,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeLevelPropTypeAccess().getTIMESTAMPEnumLiteralDeclaration_6()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevelPropType__Alternatives"
+
+
+    // $ANTLR start "rule__CubeLevelLevelType__Alternatives"
+    // InternalCubeDSL.g:3824:1: rule__CubeLevelLevelType__Alternatives : ( ( ( 'Time' ) ) | ( ( 'TimeYears' ) ) | ( ( 'TimeHalfYears' ) ) | ( ( 'TimeQuarters' ) ) | ( ( 'TimeMonths' ) ) | ( ( 'TimeWeeks' ) ) | ( ( 'TimeDays' ) ) | ( ( 'TimeHours' ) ) | ( ( 'TimeMinutes' ) ) | ( ( 'TimeSeconds' ) ) );
+    public final void rule__CubeLevelLevelType__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3828:1: ( ( ( 'Time' ) ) | ( ( 'TimeYears' ) ) | ( ( 'TimeHalfYears' ) ) | ( ( 'TimeQuarters' ) ) | ( ( 'TimeMonths' ) ) | ( ( 'TimeWeeks' ) ) | ( ( 'TimeDays' ) ) | ( ( 'TimeHours' ) ) | ( ( 'TimeMinutes' ) ) | ( ( 'TimeSeconds' ) ) )
+            int alt48=10;
+            switch ( input.LA(1) ) {
+            case 62:
+                {
+                alt48=1;
+                }
+                break;
+            case 64:
+                {
+                alt48=2;
+                }
+                break;
+            case 65:
+                {
+                alt48=3;
+                }
+                break;
+            case 66:
+                {
+                alt48=4;
+                }
+                break;
+            case 67:
+                {
+                alt48=5;
+                }
+                break;
+            case 68:
+                {
+                alt48=6;
+                }
+                break;
+            case 69:
+                {
+                alt48=7;
+                }
+                break;
+            case 70:
+                {
+                alt48=8;
+                }
+                break;
+            case 71:
+                {
+                alt48=9;
+                }
+                break;
+            case 72:
+                {
+                alt48=10;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 48, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt48) {
+                case 1 :
+                    // InternalCubeDSL.g:3829:2: ( ( 'Time' ) )
+                    {
+                    // InternalCubeDSL.g:3829:2: ( ( 'Time' ) )
+                    // InternalCubeDSL.g:3830:3: ( 'Time' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0()); 
+                    }
+                    // InternalCubeDSL.g:3831:3: ( 'Time' )
+                    // InternalCubeDSL.g:3831:4: 'Time'
+                    {
+                    match(input,62,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:3835:2: ( ( 'TimeYears' ) )
+                    {
+                    // InternalCubeDSL.g:3835:2: ( ( 'TimeYears' ) )
+                    // InternalCubeDSL.g:3836:3: ( 'TimeYears' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_YEARSEnumLiteralDeclaration_1()); 
+                    }
+                    // InternalCubeDSL.g:3837:3: ( 'TimeYears' )
+                    // InternalCubeDSL.g:3837:4: 'TimeYears'
+                    {
+                    match(input,64,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_YEARSEnumLiteralDeclaration_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalCubeDSL.g:3841:2: ( ( 'TimeHalfYears' ) )
+                    {
+                    // InternalCubeDSL.g:3841:2: ( ( 'TimeHalfYears' ) )
+                    // InternalCubeDSL.g:3842:3: ( 'TimeHalfYears' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HALF_YEARSEnumLiteralDeclaration_2()); 
+                    }
+                    // InternalCubeDSL.g:3843:3: ( 'TimeHalfYears' )
+                    // InternalCubeDSL.g:3843:4: 'TimeHalfYears'
+                    {
+                    match(input,65,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HALF_YEARSEnumLiteralDeclaration_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalCubeDSL.g:3847:2: ( ( 'TimeQuarters' ) )
+                    {
+                    // InternalCubeDSL.g:3847:2: ( ( 'TimeQuarters' ) )
+                    // InternalCubeDSL.g:3848:3: ( 'TimeQuarters' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_QUARTERSEnumLiteralDeclaration_3()); 
+                    }
+                    // InternalCubeDSL.g:3849:3: ( 'TimeQuarters' )
+                    // InternalCubeDSL.g:3849:4: 'TimeQuarters'
+                    {
+                    match(input,66,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_QUARTERSEnumLiteralDeclaration_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalCubeDSL.g:3853:2: ( ( 'TimeMonths' ) )
+                    {
+                    // InternalCubeDSL.g:3853:2: ( ( 'TimeMonths' ) )
+                    // InternalCubeDSL.g:3854:3: ( 'TimeMonths' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MONTHSEnumLiteralDeclaration_4()); 
+                    }
+                    // InternalCubeDSL.g:3855:3: ( 'TimeMonths' )
+                    // InternalCubeDSL.g:3855:4: 'TimeMonths'
+                    {
+                    match(input,67,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MONTHSEnumLiteralDeclaration_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalCubeDSL.g:3859:2: ( ( 'TimeWeeks' ) )
+                    {
+                    // InternalCubeDSL.g:3859:2: ( ( 'TimeWeeks' ) )
+                    // InternalCubeDSL.g:3860:3: ( 'TimeWeeks' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_WEEKSEnumLiteralDeclaration_5()); 
+                    }
+                    // InternalCubeDSL.g:3861:3: ( 'TimeWeeks' )
+                    // InternalCubeDSL.g:3861:4: 'TimeWeeks'
+                    {
+                    match(input,68,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_WEEKSEnumLiteralDeclaration_5()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // InternalCubeDSL.g:3865:2: ( ( 'TimeDays' ) )
+                    {
+                    // InternalCubeDSL.g:3865:2: ( ( 'TimeDays' ) )
+                    // InternalCubeDSL.g:3866:3: ( 'TimeDays' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_DAYSEnumLiteralDeclaration_6()); 
+                    }
+                    // InternalCubeDSL.g:3867:3: ( 'TimeDays' )
+                    // InternalCubeDSL.g:3867:4: 'TimeDays'
+                    {
+                    match(input,69,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_DAYSEnumLiteralDeclaration_6()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // InternalCubeDSL.g:3871:2: ( ( 'TimeHours' ) )
+                    {
+                    // InternalCubeDSL.g:3871:2: ( ( 'TimeHours' ) )
+                    // InternalCubeDSL.g:3872:3: ( 'TimeHours' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HOURSEnumLiteralDeclaration_7()); 
+                    }
+                    // InternalCubeDSL.g:3873:3: ( 'TimeHours' )
+                    // InternalCubeDSL.g:3873:4: 'TimeHours'
+                    {
+                    match(input,70,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HOURSEnumLiteralDeclaration_7()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // InternalCubeDSL.g:3877:2: ( ( 'TimeMinutes' ) )
+                    {
+                    // InternalCubeDSL.g:3877:2: ( ( 'TimeMinutes' ) )
+                    // InternalCubeDSL.g:3878:3: ( 'TimeMinutes' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MINUTESEnumLiteralDeclaration_8()); 
+                    }
+                    // InternalCubeDSL.g:3879:3: ( 'TimeMinutes' )
+                    // InternalCubeDSL.g:3879:4: 'TimeMinutes'
+                    {
+                    match(input,71,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MINUTESEnumLiteralDeclaration_8()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 10 :
+                    // InternalCubeDSL.g:3883:2: ( ( 'TimeSeconds' ) )
+                    {
+                    // InternalCubeDSL.g:3883:2: ( ( 'TimeSeconds' ) )
+                    // InternalCubeDSL.g:3884:3: ( 'TimeSeconds' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9()); 
+                    }
+                    // InternalCubeDSL.g:3885:3: ( 'TimeSeconds' )
+                    // InternalCubeDSL.g:3885:4: 'TimeSeconds'
+                    {
+                    match(input,72,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevelLevelType__Alternatives"
+
+
+    // $ANTLR start "rule__CubeModel__Group__0"
+    // InternalCubeDSL.g:3893:1: rule__CubeModel__Group__0 : rule__CubeModel__Group__0__Impl rule__CubeModel__Group__1 ;
+    public final void rule__CubeModel__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3897:1: ( rule__CubeModel__Group__0__Impl rule__CubeModel__Group__1 )
+            // InternalCubeDSL.g:3898:2: rule__CubeModel__Group__0__Impl rule__CubeModel__Group__1
+            {
+            pushFollow(FOLLOW_5);
+            rule__CubeModel__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeModel__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeModel__Group__0"
+
+
+    // $ANTLR start "rule__CubeModel__Group__0__Impl"
+    // InternalCubeDSL.g:3905:1: rule__CubeModel__Group__0__Impl : ( () ) ;
+    public final void rule__CubeModel__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3909:1: ( ( () ) )
+            // InternalCubeDSL.g:3910:1: ( () )
+            {
+            // InternalCubeDSL.g:3910:1: ( () )
+            // InternalCubeDSL.g:3911:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeModelAccess().getCubeModelAction_0()); 
+            }
+            // InternalCubeDSL.g:3912:2: ()
+            // InternalCubeDSL.g:3912:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeModelAccess().getCubeModelAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeModel__Group__0__Impl"
+
+
+    // $ANTLR start "rule__CubeModel__Group__1"
+    // InternalCubeDSL.g:3920:1: rule__CubeModel__Group__1 : rule__CubeModel__Group__1__Impl rule__CubeModel__Group__2 ;
+    public final void rule__CubeModel__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3924:1: ( rule__CubeModel__Group__1__Impl rule__CubeModel__Group__2 )
+            // InternalCubeDSL.g:3925:2: rule__CubeModel__Group__1__Impl rule__CubeModel__Group__2
+            {
+            pushFollow(FOLLOW_5);
+            rule__CubeModel__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeModel__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeModel__Group__1"
+
+
+    // $ANTLR start "rule__CubeModel__Group__1__Impl"
+    // InternalCubeDSL.g:3932:1: rule__CubeModel__Group__1__Impl : ( ( rule__CubeModel__ImportSectionAssignment_1 )? ) ;
+    public final void rule__CubeModel__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3936:1: ( ( ( rule__CubeModel__ImportSectionAssignment_1 )? ) )
+            // InternalCubeDSL.g:3937:1: ( ( rule__CubeModel__ImportSectionAssignment_1 )? )
+            {
+            // InternalCubeDSL.g:3937:1: ( ( rule__CubeModel__ImportSectionAssignment_1 )? )
+            // InternalCubeDSL.g:3938:2: ( rule__CubeModel__ImportSectionAssignment_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeModelAccess().getImportSectionAssignment_1()); 
+            }
+            // InternalCubeDSL.g:3939:2: ( rule__CubeModel__ImportSectionAssignment_1 )?
+            int alt49=2;
+            int LA49_0 = input.LA(1);
+
+            if ( (LA49_0==47) ) {
+                alt49=1;
+            }
+            switch (alt49) {
+                case 1 :
+                    // InternalCubeDSL.g:3939:3: rule__CubeModel__ImportSectionAssignment_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__CubeModel__ImportSectionAssignment_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeModelAccess().getImportSectionAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeModel__Group__1__Impl"
+
+
+    // $ANTLR start "rule__CubeModel__Group__2"
+    // InternalCubeDSL.g:3947:1: rule__CubeModel__Group__2 : rule__CubeModel__Group__2__Impl ;
+    public final void rule__CubeModel__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3951:1: ( rule__CubeModel__Group__2__Impl )
+            // InternalCubeDSL.g:3952:2: rule__CubeModel__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeModel__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeModel__Group__2"
+
+
+    // $ANTLR start "rule__CubeModel__Group__2__Impl"
+    // InternalCubeDSL.g:3958:1: rule__CubeModel__Group__2__Impl : ( ( rule__CubeModel__PckgAssignment_2 ) ) ;
+    public final void rule__CubeModel__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3962:1: ( ( ( rule__CubeModel__PckgAssignment_2 ) ) )
+            // InternalCubeDSL.g:3963:1: ( ( rule__CubeModel__PckgAssignment_2 ) )
+            {
+            // InternalCubeDSL.g:3963:1: ( ( rule__CubeModel__PckgAssignment_2 ) )
+            // InternalCubeDSL.g:3964:2: ( rule__CubeModel__PckgAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeModelAccess().getPckgAssignment_2()); 
+            }
+            // InternalCubeDSL.g:3965:2: ( rule__CubeModel__PckgAssignment_2 )
+            // InternalCubeDSL.g:3965:3: rule__CubeModel__PckgAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeModel__PckgAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeModelAccess().getPckgAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeModel__Group__2__Impl"
+
+
+    // $ANTLR start "rule__CubePackage__Group__0"
+    // InternalCubeDSL.g:3974:1: rule__CubePackage__Group__0 : rule__CubePackage__Group__0__Impl rule__CubePackage__Group__1 ;
+    public final void rule__CubePackage__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3978:1: ( rule__CubePackage__Group__0__Impl rule__CubePackage__Group__1 )
+            // InternalCubeDSL.g:3979:2: rule__CubePackage__Group__0__Impl rule__CubePackage__Group__1
+            {
+            pushFollow(FOLLOW_6);
+            rule__CubePackage__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubePackage__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubePackage__Group__0"
+
+
+    // $ANTLR start "rule__CubePackage__Group__0__Impl"
+    // InternalCubeDSL.g:3986:1: rule__CubePackage__Group__0__Impl : ( 'package' ) ;
+    public final void rule__CubePackage__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:3990:1: ( ( 'package' ) )
+            // InternalCubeDSL.g:3991:1: ( 'package' )
+            {
+            // InternalCubeDSL.g:3991:1: ( 'package' )
+            // InternalCubeDSL.g:3992:2: 'package'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubePackageAccess().getPackageKeyword_0()); 
+            }
+            match(input,73,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubePackageAccess().getPackageKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubePackage__Group__0__Impl"
+
+
+    // $ANTLR start "rule__CubePackage__Group__1"
+    // InternalCubeDSL.g:4001:1: rule__CubePackage__Group__1 : rule__CubePackage__Group__1__Impl rule__CubePackage__Group__2 ;
+    public final void rule__CubePackage__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4005:1: ( rule__CubePackage__Group__1__Impl rule__CubePackage__Group__2 )
+            // InternalCubeDSL.g:4006:2: rule__CubePackage__Group__1__Impl rule__CubePackage__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__CubePackage__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubePackage__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubePackage__Group__1"
+
+
+    // $ANTLR start "rule__CubePackage__Group__1__Impl"
+    // InternalCubeDSL.g:4013:1: rule__CubePackage__Group__1__Impl : ( ( rule__CubePackage__NameAssignment_1 ) ) ;
+    public final void rule__CubePackage__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4017:1: ( ( ( rule__CubePackage__NameAssignment_1 ) ) )
+            // InternalCubeDSL.g:4018:1: ( ( rule__CubePackage__NameAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:4018:1: ( ( rule__CubePackage__NameAssignment_1 ) )
+            // InternalCubeDSL.g:4019:2: ( rule__CubePackage__NameAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubePackageAccess().getNameAssignment_1()); 
+            }
+            // InternalCubeDSL.g:4020:2: ( rule__CubePackage__NameAssignment_1 )
+            // InternalCubeDSL.g:4020:3: rule__CubePackage__NameAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubePackage__NameAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubePackageAccess().getNameAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubePackage__Group__1__Impl"
+
+
+    // $ANTLR start "rule__CubePackage__Group__2"
+    // InternalCubeDSL.g:4028:1: rule__CubePackage__Group__2 : rule__CubePackage__Group__2__Impl ;
+    public final void rule__CubePackage__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4032:1: ( rule__CubePackage__Group__2__Impl )
+            // InternalCubeDSL.g:4033:2: rule__CubePackage__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubePackage__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubePackage__Group__2"
+
+
+    // $ANTLR start "rule__CubePackage__Group__2__Impl"
+    // InternalCubeDSL.g:4039:1: rule__CubePackage__Group__2__Impl : ( ( rule__CubePackage__Group_2__0 )? ) ;
+    public final void rule__CubePackage__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4043:1: ( ( ( rule__CubePackage__Group_2__0 )? ) )
+            // InternalCubeDSL.g:4044:1: ( ( rule__CubePackage__Group_2__0 )? )
+            {
+            // InternalCubeDSL.g:4044:1: ( ( rule__CubePackage__Group_2__0 )? )
+            // InternalCubeDSL.g:4045:2: ( rule__CubePackage__Group_2__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubePackageAccess().getGroup_2()); 
+            }
+            // InternalCubeDSL.g:4046:2: ( rule__CubePackage__Group_2__0 )?
+            int alt50=2;
+            int LA50_0 = input.LA(1);
+
+            if ( (LA50_0==74) ) {
+                alt50=1;
+            }
+            switch (alt50) {
+                case 1 :
+                    // InternalCubeDSL.g:4046:3: rule__CubePackage__Group_2__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__CubePackage__Group_2__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubePackageAccess().getGroup_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubePackage__Group__2__Impl"
+
+
+    // $ANTLR start "rule__CubePackage__Group_2__0"
+    // InternalCubeDSL.g:4055:1: rule__CubePackage__Group_2__0 : rule__CubePackage__Group_2__0__Impl rule__CubePackage__Group_2__1 ;
+    public final void rule__CubePackage__Group_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4059:1: ( rule__CubePackage__Group_2__0__Impl rule__CubePackage__Group_2__1 )
+            // InternalCubeDSL.g:4060:2: rule__CubePackage__Group_2__0__Impl rule__CubePackage__Group_2__1
+            {
+            pushFollow(FOLLOW_8);
+            rule__CubePackage__Group_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubePackage__Group_2__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubePackage__Group_2__0"
+
+
+    // $ANTLR start "rule__CubePackage__Group_2__0__Impl"
+    // InternalCubeDSL.g:4067:1: rule__CubePackage__Group_2__0__Impl : ( '{' ) ;
+    public final void rule__CubePackage__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4071:1: ( ( '{' ) )
+            // InternalCubeDSL.g:4072:1: ( '{' )
+            {
+            // InternalCubeDSL.g:4072:1: ( '{' )
+            // InternalCubeDSL.g:4073:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubePackageAccess().getLeftCurlyBracketKeyword_2_0()); 
+            }
+            match(input,74,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubePackageAccess().getLeftCurlyBracketKeyword_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubePackage__Group_2__0__Impl"
+
+
+    // $ANTLR start "rule__CubePackage__Group_2__1"
+    // InternalCubeDSL.g:4082:1: rule__CubePackage__Group_2__1 : rule__CubePackage__Group_2__1__Impl rule__CubePackage__Group_2__2 ;
+    public final void rule__CubePackage__Group_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4086:1: ( rule__CubePackage__Group_2__1__Impl rule__CubePackage__Group_2__2 )
+            // InternalCubeDSL.g:4087:2: rule__CubePackage__Group_2__1__Impl rule__CubePackage__Group_2__2
+            {
+            pushFollow(FOLLOW_8);
+            rule__CubePackage__Group_2__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubePackage__Group_2__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubePackage__Group_2__1"
+
+
+    // $ANTLR start "rule__CubePackage__Group_2__1__Impl"
+    // InternalCubeDSL.g:4094:1: rule__CubePackage__Group_2__1__Impl : ( ( rule__CubePackage__DimensionsAssignment_2_1 )* ) ;
+    public final void rule__CubePackage__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4098:1: ( ( ( rule__CubePackage__DimensionsAssignment_2_1 )* ) )
+            // InternalCubeDSL.g:4099:1: ( ( rule__CubePackage__DimensionsAssignment_2_1 )* )
+            {
+            // InternalCubeDSL.g:4099:1: ( ( rule__CubePackage__DimensionsAssignment_2_1 )* )
+            // InternalCubeDSL.g:4100:2: ( rule__CubePackage__DimensionsAssignment_2_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubePackageAccess().getDimensionsAssignment_2_1()); 
+            }
+            // InternalCubeDSL.g:4101:2: ( rule__CubePackage__DimensionsAssignment_2_1 )*
+            loop51:
+            do {
+                int alt51=2;
+                int LA51_0 = input.LA(1);
+
+                if ( (LA51_0==79) ) {
+                    alt51=1;
+                }
+
+
+                switch (alt51) {
+            	case 1 :
+            	    // InternalCubeDSL.g:4101:3: rule__CubePackage__DimensionsAssignment_2_1
+            	    {
+            	    pushFollow(FOLLOW_9);
+            	    rule__CubePackage__DimensionsAssignment_2_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop51;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubePackageAccess().getDimensionsAssignment_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubePackage__Group_2__1__Impl"
+
+
+    // $ANTLR start "rule__CubePackage__Group_2__2"
+    // InternalCubeDSL.g:4109:1: rule__CubePackage__Group_2__2 : rule__CubePackage__Group_2__2__Impl rule__CubePackage__Group_2__3 ;
+    public final void rule__CubePackage__Group_2__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4113:1: ( rule__CubePackage__Group_2__2__Impl rule__CubePackage__Group_2__3 )
+            // InternalCubeDSL.g:4114:2: rule__CubePackage__Group_2__2__Impl rule__CubePackage__Group_2__3
+            {
+            pushFollow(FOLLOW_8);
+            rule__CubePackage__Group_2__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubePackage__Group_2__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubePackage__Group_2__2"
+
+
+    // $ANTLR start "rule__CubePackage__Group_2__2__Impl"
+    // InternalCubeDSL.g:4121:1: rule__CubePackage__Group_2__2__Impl : ( ( rule__CubePackage__CubesAssignment_2_2 )* ) ;
+    public final void rule__CubePackage__Group_2__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4125:1: ( ( ( rule__CubePackage__CubesAssignment_2_2 )* ) )
+            // InternalCubeDSL.g:4126:1: ( ( rule__CubePackage__CubesAssignment_2_2 )* )
+            {
+            // InternalCubeDSL.g:4126:1: ( ( rule__CubePackage__CubesAssignment_2_2 )* )
+            // InternalCubeDSL.g:4127:2: ( rule__CubePackage__CubesAssignment_2_2 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubePackageAccess().getCubesAssignment_2_2()); 
+            }
+            // InternalCubeDSL.g:4128:2: ( rule__CubePackage__CubesAssignment_2_2 )*
+            loop52:
+            do {
+                int alt52=2;
+                int LA52_0 = input.LA(1);
+
+                if ( (LA52_0==76) ) {
+                    alt52=1;
+                }
+
+
+                switch (alt52) {
+            	case 1 :
+            	    // InternalCubeDSL.g:4128:3: rule__CubePackage__CubesAssignment_2_2
+            	    {
+            	    pushFollow(FOLLOW_10);
+            	    rule__CubePackage__CubesAssignment_2_2();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop52;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubePackageAccess().getCubesAssignment_2_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubePackage__Group_2__2__Impl"
+
+
+    // $ANTLR start "rule__CubePackage__Group_2__3"
+    // InternalCubeDSL.g:4136:1: rule__CubePackage__Group_2__3 : rule__CubePackage__Group_2__3__Impl ;
+    public final void rule__CubePackage__Group_2__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4140:1: ( rule__CubePackage__Group_2__3__Impl )
+            // InternalCubeDSL.g:4141:2: rule__CubePackage__Group_2__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubePackage__Group_2__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubePackage__Group_2__3"
+
+
+    // $ANTLR start "rule__CubePackage__Group_2__3__Impl"
+    // InternalCubeDSL.g:4147:1: rule__CubePackage__Group_2__3__Impl : ( '}' ) ;
+    public final void rule__CubePackage__Group_2__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4151:1: ( ( '}' ) )
+            // InternalCubeDSL.g:4152:1: ( '}' )
+            {
+            // InternalCubeDSL.g:4152:1: ( '}' )
+            // InternalCubeDSL.g:4153:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubePackageAccess().getRightCurlyBracketKeyword_2_3()); 
+            }
+            match(input,75,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubePackageAccess().getRightCurlyBracketKeyword_2_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubePackage__Group_2__3__Impl"
+
+
+    // $ANTLR start "rule__CubeType__Group__0"
+    // InternalCubeDSL.g:4163:1: rule__CubeType__Group__0 : rule__CubeType__Group__0__Impl rule__CubeType__Group__1 ;
+    public final void rule__CubeType__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4167:1: ( rule__CubeType__Group__0__Impl rule__CubeType__Group__1 )
+            // InternalCubeDSL.g:4168:2: rule__CubeType__Group__0__Impl rule__CubeType__Group__1
+            {
+            pushFollow(FOLLOW_6);
+            rule__CubeType__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeType__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeType__Group__0"
+
+
+    // $ANTLR start "rule__CubeType__Group__0__Impl"
+    // InternalCubeDSL.g:4175:1: rule__CubeType__Group__0__Impl : ( 'cube' ) ;
+    public final void rule__CubeType__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4179:1: ( ( 'cube' ) )
+            // InternalCubeDSL.g:4180:1: ( 'cube' )
+            {
+            // InternalCubeDSL.g:4180:1: ( 'cube' )
+            // InternalCubeDSL.g:4181:2: 'cube'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeAccess().getCubeKeyword_0()); 
+            }
+            match(input,76,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeAccess().getCubeKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeType__Group__0__Impl"
+
+
+    // $ANTLR start "rule__CubeType__Group__1"
+    // InternalCubeDSL.g:4190:1: rule__CubeType__Group__1 : rule__CubeType__Group__1__Impl rule__CubeType__Group__2 ;
+    public final void rule__CubeType__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4194:1: ( rule__CubeType__Group__1__Impl rule__CubeType__Group__2 )
+            // InternalCubeDSL.g:4195:2: rule__CubeType__Group__1__Impl rule__CubeType__Group__2
+            {
+            pushFollow(FOLLOW_11);
+            rule__CubeType__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeType__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeType__Group__1"
+
+
+    // $ANTLR start "rule__CubeType__Group__1__Impl"
+    // InternalCubeDSL.g:4202:1: rule__CubeType__Group__1__Impl : ( ( rule__CubeType__NameAssignment_1 ) ) ;
+    public final void rule__CubeType__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4206:1: ( ( ( rule__CubeType__NameAssignment_1 ) ) )
+            // InternalCubeDSL.g:4207:1: ( ( rule__CubeType__NameAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:4207:1: ( ( rule__CubeType__NameAssignment_1 ) )
+            // InternalCubeDSL.g:4208:2: ( rule__CubeType__NameAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeAccess().getNameAssignment_1()); 
+            }
+            // InternalCubeDSL.g:4209:2: ( rule__CubeType__NameAssignment_1 )
+            // InternalCubeDSL.g:4209:3: rule__CubeType__NameAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeType__NameAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeAccess().getNameAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeType__Group__1__Impl"
+
+
+    // $ANTLR start "rule__CubeType__Group__2"
+    // InternalCubeDSL.g:4217:1: rule__CubeType__Group__2 : rule__CubeType__Group__2__Impl rule__CubeType__Group__3 ;
+    public final void rule__CubeType__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4221:1: ( rule__CubeType__Group__2__Impl rule__CubeType__Group__3 )
+            // InternalCubeDSL.g:4222:2: rule__CubeType__Group__2__Impl rule__CubeType__Group__3
+            {
+            pushFollow(FOLLOW_11);
+            rule__CubeType__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeType__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeType__Group__2"
+
+
+    // $ANTLR start "rule__CubeType__Group__2__Impl"
+    // InternalCubeDSL.g:4229:1: rule__CubeType__Group__2__Impl : ( ( rule__CubeType__Group_2__0 )? ) ;
+    public final void rule__CubeType__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4233:1: ( ( ( rule__CubeType__Group_2__0 )? ) )
+            // InternalCubeDSL.g:4234:1: ( ( rule__CubeType__Group_2__0 )? )
+            {
+            // InternalCubeDSL.g:4234:1: ( ( rule__CubeType__Group_2__0 )? )
+            // InternalCubeDSL.g:4235:2: ( rule__CubeType__Group_2__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeAccess().getGroup_2()); 
+            }
+            // InternalCubeDSL.g:4236:2: ( rule__CubeType__Group_2__0 )?
+            int alt53=2;
+            int LA53_0 = input.LA(1);
+
+            if ( (LA53_0==116) ) {
+                alt53=1;
+            }
+            switch (alt53) {
+                case 1 :
+                    // InternalCubeDSL.g:4236:3: rule__CubeType__Group_2__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__CubeType__Group_2__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeAccess().getGroup_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeType__Group__2__Impl"
+
+
+    // $ANTLR start "rule__CubeType__Group__3"
+    // InternalCubeDSL.g:4244:1: rule__CubeType__Group__3 : rule__CubeType__Group__3__Impl rule__CubeType__Group__4 ;
+    public final void rule__CubeType__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4248:1: ( rule__CubeType__Group__3__Impl rule__CubeType__Group__4 )
+            // InternalCubeDSL.g:4249:2: rule__CubeType__Group__3__Impl rule__CubeType__Group__4
+            {
+            pushFollow(FOLLOW_12);
+            rule__CubeType__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeType__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeType__Group__3"
+
+
+    // $ANTLR start "rule__CubeType__Group__3__Impl"
+    // InternalCubeDSL.g:4256:1: rule__CubeType__Group__3__Impl : ( '{' ) ;
+    public final void rule__CubeType__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4260:1: ( ( '{' ) )
+            // InternalCubeDSL.g:4261:1: ( '{' )
+            {
+            // InternalCubeDSL.g:4261:1: ( '{' )
+            // InternalCubeDSL.g:4262:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeAccess().getLeftCurlyBracketKeyword_3()); 
+            }
+            match(input,74,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeAccess().getLeftCurlyBracketKeyword_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeType__Group__3__Impl"
+
+
+    // $ANTLR start "rule__CubeType__Group__4"
+    // InternalCubeDSL.g:4271:1: rule__CubeType__Group__4 : rule__CubeType__Group__4__Impl rule__CubeType__Group__5 ;
+    public final void rule__CubeType__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4275:1: ( rule__CubeType__Group__4__Impl rule__CubeType__Group__5 )
+            // InternalCubeDSL.g:4276:2: rule__CubeType__Group__4__Impl rule__CubeType__Group__5
+            {
+            pushFollow(FOLLOW_13);
+            rule__CubeType__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeType__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeType__Group__4"
+
+
+    // $ANTLR start "rule__CubeType__Group__4__Impl"
+    // InternalCubeDSL.g:4283:1: rule__CubeType__Group__4__Impl : ( ( rule__CubeType__CubeTypeEntityAssignment_4 ) ) ;
+    public final void rule__CubeType__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4287:1: ( ( ( rule__CubeType__CubeTypeEntityAssignment_4 ) ) )
+            // InternalCubeDSL.g:4288:1: ( ( rule__CubeType__CubeTypeEntityAssignment_4 ) )
+            {
+            // InternalCubeDSL.g:4288:1: ( ( rule__CubeType__CubeTypeEntityAssignment_4 ) )
+            // InternalCubeDSL.g:4289:2: ( rule__CubeType__CubeTypeEntityAssignment_4 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeAccess().getCubeTypeEntityAssignment_4()); 
+            }
+            // InternalCubeDSL.g:4290:2: ( rule__CubeType__CubeTypeEntityAssignment_4 )
+            // InternalCubeDSL.g:4290:3: rule__CubeType__CubeTypeEntityAssignment_4
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeType__CubeTypeEntityAssignment_4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeAccess().getCubeTypeEntityAssignment_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeType__Group__4__Impl"
+
+
+    // $ANTLR start "rule__CubeType__Group__5"
+    // InternalCubeDSL.g:4298:1: rule__CubeType__Group__5 : rule__CubeType__Group__5__Impl ;
+    public final void rule__CubeType__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4302:1: ( rule__CubeType__Group__5__Impl )
+            // InternalCubeDSL.g:4303:2: rule__CubeType__Group__5__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeType__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeType__Group__5"
+
+
+    // $ANTLR start "rule__CubeType__Group__5__Impl"
+    // InternalCubeDSL.g:4309:1: rule__CubeType__Group__5__Impl : ( '}' ) ;
+    public final void rule__CubeType__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4313:1: ( ( '}' ) )
+            // InternalCubeDSL.g:4314:1: ( '}' )
+            {
+            // InternalCubeDSL.g:4314:1: ( '}' )
+            // InternalCubeDSL.g:4315:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeAccess().getRightCurlyBracketKeyword_5()); 
+            }
+            match(input,75,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeAccess().getRightCurlyBracketKeyword_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeType__Group__5__Impl"
+
+
+    // $ANTLR start "rule__CubeType__Group_2__0"
+    // InternalCubeDSL.g:4325:1: rule__CubeType__Group_2__0 : rule__CubeType__Group_2__0__Impl rule__CubeType__Group_2__1 ;
+    public final void rule__CubeType__Group_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4329:1: ( rule__CubeType__Group_2__0__Impl rule__CubeType__Group_2__1 )
+            // InternalCubeDSL.g:4330:2: rule__CubeType__Group_2__0__Impl rule__CubeType__Group_2__1
+            {
+            pushFollow(FOLLOW_14);
+            rule__CubeType__Group_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeType__Group_2__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeType__Group_2__0"
+
+
+    // $ANTLR start "rule__CubeType__Group_2__0__Impl"
+    // InternalCubeDSL.g:4337:1: rule__CubeType__Group_2__0__Impl : ( ( rule__CubeType__DefaultMeasureAssignment_2_0 ) ) ;
+    public final void rule__CubeType__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4341:1: ( ( ( rule__CubeType__DefaultMeasureAssignment_2_0 ) ) )
+            // InternalCubeDSL.g:4342:1: ( ( rule__CubeType__DefaultMeasureAssignment_2_0 ) )
+            {
+            // InternalCubeDSL.g:4342:1: ( ( rule__CubeType__DefaultMeasureAssignment_2_0 ) )
+            // InternalCubeDSL.g:4343:2: ( rule__CubeType__DefaultMeasureAssignment_2_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeAccess().getDefaultMeasureAssignment_2_0()); 
+            }
+            // InternalCubeDSL.g:4344:2: ( rule__CubeType__DefaultMeasureAssignment_2_0 )
+            // InternalCubeDSL.g:4344:3: rule__CubeType__DefaultMeasureAssignment_2_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeType__DefaultMeasureAssignment_2_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeAccess().getDefaultMeasureAssignment_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeType__Group_2__0__Impl"
+
+
+    // $ANTLR start "rule__CubeType__Group_2__1"
+    // InternalCubeDSL.g:4352:1: rule__CubeType__Group_2__1 : rule__CubeType__Group_2__1__Impl ;
+    public final void rule__CubeType__Group_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4356:1: ( rule__CubeType__Group_2__1__Impl )
+            // InternalCubeDSL.g:4357:2: rule__CubeType__Group_2__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeType__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__CubeType__Group_2__1"
+
+
+    // $ANTLR start "rule__CubeType__Group_2__1__Impl"
+    // InternalCubeDSL.g:4363:1: rule__CubeType__Group_2__1__Impl : ( ( rule__CubeType__DefaultMeasureValueAssignment_2_1 ) ) ;
+    public final void rule__CubeType__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4367:1: ( ( ( rule__CubeType__DefaultMeasureValueAssignment_2_1 ) ) )
+            // InternalCubeDSL.g:4368:1: ( ( rule__CubeType__DefaultMeasureValueAssignment_2_1 ) )
+            {
+            // InternalCubeDSL.g:4368:1: ( ( rule__CubeType__DefaultMeasureValueAssignment_2_1 ) )
+            // InternalCubeDSL.g:4369:2: ( rule__CubeType__DefaultMeasureValueAssignment_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeAccess().getDefaultMeasureValueAssignment_2_1()); 
+            }
+            // InternalCubeDSL.g:4370:2: ( rule__CubeType__DefaultMeasureValueAssignment_2_1 )
+            // InternalCubeDSL.g:4370:3: rule__CubeType__DefaultMeasureValueAssignment_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeType__DefaultMeasureValueAssignment_2_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeAccess().getDefaultMeasureValueAssignment_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeType__Group_2__1__Impl"
+
+
+    // $ANTLR start "rule__CubeDimensionUsage__Group__0"
+    // InternalCubeDSL.g:4379:1: rule__CubeDimensionUsage__Group__0 : rule__CubeDimensionUsage__Group__0__Impl rule__CubeDimensionUsage__Group__1 ;
+    public final void rule__CubeDimensionUsage__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4383:1: ( rule__CubeDimensionUsage__Group__0__Impl rule__CubeDimensionUsage__Group__1 )
+            // InternalCubeDSL.g:4384:2: rule__CubeDimensionUsage__Group__0__Impl rule__CubeDimensionUsage__Group__1
+            {
+            pushFollow(FOLLOW_6);
+            rule__CubeDimensionUsage__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionUsage__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionUsage__Group__0"
+
+
+    // $ANTLR start "rule__CubeDimensionUsage__Group__0__Impl"
+    // InternalCubeDSL.g:4391:1: rule__CubeDimensionUsage__Group__0__Impl : ( 'dimensionUsage' ) ;
+    public final void rule__CubeDimensionUsage__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4395:1: ( ( 'dimensionUsage' ) )
+            // InternalCubeDSL.g:4396:1: ( 'dimensionUsage' )
+            {
+            // InternalCubeDSL.g:4396:1: ( 'dimensionUsage' )
+            // InternalCubeDSL.g:4397:2: 'dimensionUsage'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionUsageAccess().getDimensionUsageKeyword_0()); 
+            }
+            match(input,77,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionUsageAccess().getDimensionUsageKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionUsage__Group__0__Impl"
+
+
+    // $ANTLR start "rule__CubeDimensionUsage__Group__1"
+    // InternalCubeDSL.g:4406:1: rule__CubeDimensionUsage__Group__1 : rule__CubeDimensionUsage__Group__1__Impl rule__CubeDimensionUsage__Group__2 ;
+    public final void rule__CubeDimensionUsage__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4410:1: ( rule__CubeDimensionUsage__Group__1__Impl rule__CubeDimensionUsage__Group__2 )
+            // InternalCubeDSL.g:4411:2: rule__CubeDimensionUsage__Group__1__Impl rule__CubeDimensionUsage__Group__2
+            {
+            pushFollow(FOLLOW_15);
+            rule__CubeDimensionUsage__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionUsage__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionUsage__Group__1"
+
+
+    // $ANTLR start "rule__CubeDimensionUsage__Group__1__Impl"
+    // InternalCubeDSL.g:4418:1: rule__CubeDimensionUsage__Group__1__Impl : ( ( rule__CubeDimensionUsage__SourceValueAssignment_1 ) ) ;
+    public final void rule__CubeDimensionUsage__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4422:1: ( ( ( rule__CubeDimensionUsage__SourceValueAssignment_1 ) ) )
+            // InternalCubeDSL.g:4423:1: ( ( rule__CubeDimensionUsage__SourceValueAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:4423:1: ( ( rule__CubeDimensionUsage__SourceValueAssignment_1 ) )
+            // InternalCubeDSL.g:4424:2: ( rule__CubeDimensionUsage__SourceValueAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionUsageAccess().getSourceValueAssignment_1()); 
+            }
+            // InternalCubeDSL.g:4425:2: ( rule__CubeDimensionUsage__SourceValueAssignment_1 )
+            // InternalCubeDSL.g:4425:3: rule__CubeDimensionUsage__SourceValueAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionUsage__SourceValueAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionUsageAccess().getSourceValueAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionUsage__Group__1__Impl"
+
+
+    // $ANTLR start "rule__CubeDimensionUsage__Group__2"
+    // InternalCubeDSL.g:4433:1: rule__CubeDimensionUsage__Group__2 : rule__CubeDimensionUsage__Group__2__Impl rule__CubeDimensionUsage__Group__3 ;
+    public final void rule__CubeDimensionUsage__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4437:1: ( rule__CubeDimensionUsage__Group__2__Impl rule__CubeDimensionUsage__Group__3 )
+            // InternalCubeDSL.g:4438:2: rule__CubeDimensionUsage__Group__2__Impl rule__CubeDimensionUsage__Group__3
+            {
+            pushFollow(FOLLOW_6);
+            rule__CubeDimensionUsage__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionUsage__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionUsage__Group__2"
+
+
+    // $ANTLR start "rule__CubeDimensionUsage__Group__2__Impl"
+    // InternalCubeDSL.g:4445:1: rule__CubeDimensionUsage__Group__2__Impl : ( 'over' ) ;
+    public final void rule__CubeDimensionUsage__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4449:1: ( ( 'over' ) )
+            // InternalCubeDSL.g:4450:1: ( 'over' )
+            {
+            // InternalCubeDSL.g:4450:1: ( 'over' )
+            // InternalCubeDSL.g:4451:2: 'over'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionUsageAccess().getOverKeyword_2()); 
+            }
+            match(input,78,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionUsageAccess().getOverKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionUsage__Group__2__Impl"
+
+
+    // $ANTLR start "rule__CubeDimensionUsage__Group__3"
+    // InternalCubeDSL.g:4460:1: rule__CubeDimensionUsage__Group__3 : rule__CubeDimensionUsage__Group__3__Impl ;
+    public final void rule__CubeDimensionUsage__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4464:1: ( rule__CubeDimensionUsage__Group__3__Impl )
+            // InternalCubeDSL.g:4465:2: rule__CubeDimensionUsage__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionUsage__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionUsage__Group__3"
+
+
+    // $ANTLR start "rule__CubeDimensionUsage__Group__3__Impl"
+    // InternalCubeDSL.g:4471:1: rule__CubeDimensionUsage__Group__3__Impl : ( ( rule__CubeDimensionUsage__OverValueAssignment_3 ) ) ;
+    public final void rule__CubeDimensionUsage__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4475:1: ( ( ( rule__CubeDimensionUsage__OverValueAssignment_3 ) ) )
+            // InternalCubeDSL.g:4476:1: ( ( rule__CubeDimensionUsage__OverValueAssignment_3 ) )
+            {
+            // InternalCubeDSL.g:4476:1: ( ( rule__CubeDimensionUsage__OverValueAssignment_3 ) )
+            // InternalCubeDSL.g:4477:2: ( rule__CubeDimensionUsage__OverValueAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionUsageAccess().getOverValueAssignment_3()); 
+            }
+            // InternalCubeDSL.g:4478:2: ( rule__CubeDimensionUsage__OverValueAssignment_3 )
+            // InternalCubeDSL.g:4478:3: rule__CubeDimensionUsage__OverValueAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionUsage__OverValueAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionUsageAccess().getOverValueAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionUsage__Group__3__Impl"
+
+
+    // $ANTLR start "rule__CubeDimension__Group__0"
+    // InternalCubeDSL.g:4487:1: rule__CubeDimension__Group__0 : rule__CubeDimension__Group__0__Impl rule__CubeDimension__Group__1 ;
+    public final void rule__CubeDimension__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4491:1: ( rule__CubeDimension__Group__0__Impl rule__CubeDimension__Group__1 )
+            // InternalCubeDSL.g:4492:2: rule__CubeDimension__Group__0__Impl rule__CubeDimension__Group__1
+            {
+            pushFollow(FOLLOW_6);
+            rule__CubeDimension__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeDimension__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimension__Group__0"
+
+
+    // $ANTLR start "rule__CubeDimension__Group__0__Impl"
+    // InternalCubeDSL.g:4499:1: rule__CubeDimension__Group__0__Impl : ( 'dimension' ) ;
+    public final void rule__CubeDimension__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4503:1: ( ( 'dimension' ) )
+            // InternalCubeDSL.g:4504:1: ( 'dimension' )
+            {
+            // InternalCubeDSL.g:4504:1: ( 'dimension' )
+            // InternalCubeDSL.g:4505:2: 'dimension'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionAccess().getDimensionKeyword_0()); 
+            }
+            match(input,79,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionAccess().getDimensionKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimension__Group__0__Impl"
+
+
+    // $ANTLR start "rule__CubeDimension__Group__1"
+    // InternalCubeDSL.g:4514:1: rule__CubeDimension__Group__1 : rule__CubeDimension__Group__1__Impl rule__CubeDimension__Group__2 ;
+    public final void rule__CubeDimension__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4518:1: ( rule__CubeDimension__Group__1__Impl rule__CubeDimension__Group__2 )
+            // InternalCubeDSL.g:4519:2: rule__CubeDimension__Group__1__Impl rule__CubeDimension__Group__2
+            {
+            pushFollow(FOLLOW_16);
+            rule__CubeDimension__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeDimension__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimension__Group__1"
+
+
+    // $ANTLR start "rule__CubeDimension__Group__1__Impl"
+    // InternalCubeDSL.g:4526:1: rule__CubeDimension__Group__1__Impl : ( ( rule__CubeDimension__NameAssignment_1 ) ) ;
+    public final void rule__CubeDimension__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4530:1: ( ( ( rule__CubeDimension__NameAssignment_1 ) ) )
+            // InternalCubeDSL.g:4531:1: ( ( rule__CubeDimension__NameAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:4531:1: ( ( rule__CubeDimension__NameAssignment_1 ) )
+            // InternalCubeDSL.g:4532:2: ( rule__CubeDimension__NameAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionAccess().getNameAssignment_1()); 
+            }
+            // InternalCubeDSL.g:4533:2: ( rule__CubeDimension__NameAssignment_1 )
+            // InternalCubeDSL.g:4533:3: rule__CubeDimension__NameAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeDimension__NameAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionAccess().getNameAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimension__Group__1__Impl"
+
+
+    // $ANTLR start "rule__CubeDimension__Group__2"
+    // InternalCubeDSL.g:4541:1: rule__CubeDimension__Group__2 : rule__CubeDimension__Group__2__Impl rule__CubeDimension__Group__3 ;
+    public final void rule__CubeDimension__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4545:1: ( rule__CubeDimension__Group__2__Impl rule__CubeDimension__Group__3 )
+            // InternalCubeDSL.g:4546:2: rule__CubeDimension__Group__2__Impl rule__CubeDimension__Group__3
+            {
+            pushFollow(FOLLOW_16);
+            rule__CubeDimension__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeDimension__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimension__Group__2"
+
+
+    // $ANTLR start "rule__CubeDimension__Group__2__Impl"
+    // InternalCubeDSL.g:4553:1: rule__CubeDimension__Group__2__Impl : ( ( rule__CubeDimension__TypeTimeAssignment_2 )? ) ;
+    public final void rule__CubeDimension__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4557:1: ( ( ( rule__CubeDimension__TypeTimeAssignment_2 )? ) )
+            // InternalCubeDSL.g:4558:1: ( ( rule__CubeDimension__TypeTimeAssignment_2 )? )
+            {
+            // InternalCubeDSL.g:4558:1: ( ( rule__CubeDimension__TypeTimeAssignment_2 )? )
+            // InternalCubeDSL.g:4559:2: ( rule__CubeDimension__TypeTimeAssignment_2 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionAccess().getTypeTimeAssignment_2()); 
+            }
+            // InternalCubeDSL.g:4560:2: ( rule__CubeDimension__TypeTimeAssignment_2 )?
+            int alt54=2;
+            int LA54_0 = input.LA(1);
+
+            if ( (LA54_0==117) ) {
+                alt54=1;
+            }
+            switch (alt54) {
+                case 1 :
+                    // InternalCubeDSL.g:4560:3: rule__CubeDimension__TypeTimeAssignment_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__CubeDimension__TypeTimeAssignment_2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionAccess().getTypeTimeAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimension__Group__2__Impl"
+
+
+    // $ANTLR start "rule__CubeDimension__Group__3"
+    // InternalCubeDSL.g:4568:1: rule__CubeDimension__Group__3 : rule__CubeDimension__Group__3__Impl rule__CubeDimension__Group__4 ;
+    public final void rule__CubeDimension__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4572:1: ( rule__CubeDimension__Group__3__Impl rule__CubeDimension__Group__4 )
+            // InternalCubeDSL.g:4573:2: rule__CubeDimension__Group__3__Impl rule__CubeDimension__Group__4
+            {
+            pushFollow(FOLLOW_17);
+            rule__CubeDimension__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeDimension__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimension__Group__3"
+
+
+    // $ANTLR start "rule__CubeDimension__Group__3__Impl"
+    // InternalCubeDSL.g:4580:1: rule__CubeDimension__Group__3__Impl : ( '{' ) ;
+    public final void rule__CubeDimension__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4584:1: ( ( '{' ) )
+            // InternalCubeDSL.g:4585:1: ( '{' )
+            {
+            // InternalCubeDSL.g:4585:1: ( '{' )
+            // InternalCubeDSL.g:4586:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionAccess().getLeftCurlyBracketKeyword_3()); 
+            }
+            match(input,74,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionAccess().getLeftCurlyBracketKeyword_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimension__Group__3__Impl"
+
+
+    // $ANTLR start "rule__CubeDimension__Group__4"
+    // InternalCubeDSL.g:4595:1: rule__CubeDimension__Group__4 : rule__CubeDimension__Group__4__Impl rule__CubeDimension__Group__5 ;
+    public final void rule__CubeDimension__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4599:1: ( rule__CubeDimension__Group__4__Impl rule__CubeDimension__Group__5 )
+            // InternalCubeDSL.g:4600:2: rule__CubeDimension__Group__4__Impl rule__CubeDimension__Group__5
+            {
+            pushFollow(FOLLOW_17);
+            rule__CubeDimension__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeDimension__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimension__Group__4"
+
+
+    // $ANTLR start "rule__CubeDimension__Group__4__Impl"
+    // InternalCubeDSL.g:4607:1: rule__CubeDimension__Group__4__Impl : ( ( rule__CubeDimension__HierarchiesAssignment_4 )* ) ;
+    public final void rule__CubeDimension__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4611:1: ( ( ( rule__CubeDimension__HierarchiesAssignment_4 )* ) )
+            // InternalCubeDSL.g:4612:1: ( ( rule__CubeDimension__HierarchiesAssignment_4 )* )
+            {
+            // InternalCubeDSL.g:4612:1: ( ( rule__CubeDimension__HierarchiesAssignment_4 )* )
+            // InternalCubeDSL.g:4613:2: ( rule__CubeDimension__HierarchiesAssignment_4 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionAccess().getHierarchiesAssignment_4()); 
+            }
+            // InternalCubeDSL.g:4614:2: ( rule__CubeDimension__HierarchiesAssignment_4 )*
+            loop55:
+            do {
+                int alt55=2;
+                int LA55_0 = input.LA(1);
+
+                if ( (LA55_0==80) ) {
+                    alt55=1;
+                }
+
+
+                switch (alt55) {
+            	case 1 :
+            	    // InternalCubeDSL.g:4614:3: rule__CubeDimension__HierarchiesAssignment_4
+            	    {
+            	    pushFollow(FOLLOW_18);
+            	    rule__CubeDimension__HierarchiesAssignment_4();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop55;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionAccess().getHierarchiesAssignment_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimension__Group__4__Impl"
+
+
+    // $ANTLR start "rule__CubeDimension__Group__5"
+    // InternalCubeDSL.g:4622:1: rule__CubeDimension__Group__5 : rule__CubeDimension__Group__5__Impl ;
+    public final void rule__CubeDimension__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4626:1: ( rule__CubeDimension__Group__5__Impl )
+            // InternalCubeDSL.g:4627:2: rule__CubeDimension__Group__5__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeDimension__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimension__Group__5"
+
+
+    // $ANTLR start "rule__CubeDimension__Group__5__Impl"
+    // InternalCubeDSL.g:4633:1: rule__CubeDimension__Group__5__Impl : ( '}' ) ;
+    public final void rule__CubeDimension__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4637:1: ( ( '}' ) )
+            // InternalCubeDSL.g:4638:1: ( '}' )
+            {
+            // InternalCubeDSL.g:4638:1: ( '}' )
+            // InternalCubeDSL.g:4639:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionAccess().getRightCurlyBracketKeyword_5()); 
+            }
+            match(input,75,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionAccess().getRightCurlyBracketKeyword_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimension__Group__5__Impl"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group__0"
+    // InternalCubeDSL.g:4649:1: rule__CubeHierarchy__Group__0 : rule__CubeHierarchy__Group__0__Impl rule__CubeHierarchy__Group__1 ;
+    public final void rule__CubeHierarchy__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4653:1: ( rule__CubeHierarchy__Group__0__Impl rule__CubeHierarchy__Group__1 )
+            // InternalCubeDSL.g:4654:2: rule__CubeHierarchy__Group__0__Impl rule__CubeHierarchy__Group__1
+            {
+            pushFollow(FOLLOW_19);
+            rule__CubeHierarchy__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeHierarchy__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group__0"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group__0__Impl"
+    // InternalCubeDSL.g:4661:1: rule__CubeHierarchy__Group__0__Impl : ( () ) ;
+    public final void rule__CubeHierarchy__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4665:1: ( ( () ) )
+            // InternalCubeDSL.g:4666:1: ( () )
+            {
+            // InternalCubeDSL.g:4666:1: ( () )
+            // InternalCubeDSL.g:4667:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getCubeHierarchyAction_0()); 
+            }
+            // InternalCubeDSL.g:4668:2: ()
+            // InternalCubeDSL.g:4668:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getCubeHierarchyAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group__0__Impl"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group__1"
+    // InternalCubeDSL.g:4676:1: rule__CubeHierarchy__Group__1 : rule__CubeHierarchy__Group__1__Impl rule__CubeHierarchy__Group__2 ;
+    public final void rule__CubeHierarchy__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4680:1: ( rule__CubeHierarchy__Group__1__Impl rule__CubeHierarchy__Group__2 )
+            // InternalCubeDSL.g:4681:2: rule__CubeHierarchy__Group__1__Impl rule__CubeHierarchy__Group__2
+            {
+            pushFollow(FOLLOW_20);
+            rule__CubeHierarchy__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeHierarchy__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group__1"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group__1__Impl"
+    // InternalCubeDSL.g:4688:1: rule__CubeHierarchy__Group__1__Impl : ( 'hierarchy' ) ;
+    public final void rule__CubeHierarchy__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4692:1: ( ( 'hierarchy' ) )
+            // InternalCubeDSL.g:4693:1: ( 'hierarchy' )
+            {
+            // InternalCubeDSL.g:4693:1: ( 'hierarchy' )
+            // InternalCubeDSL.g:4694:2: 'hierarchy'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getHierarchyKeyword_1()); 
+            }
+            match(input,80,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getHierarchyKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group__1__Impl"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group__2"
+    // InternalCubeDSL.g:4703:1: rule__CubeHierarchy__Group__2 : rule__CubeHierarchy__Group__2__Impl rule__CubeHierarchy__Group__3 ;
+    public final void rule__CubeHierarchy__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4707:1: ( rule__CubeHierarchy__Group__2__Impl rule__CubeHierarchy__Group__3 )
+            // InternalCubeDSL.g:4708:2: rule__CubeHierarchy__Group__2__Impl rule__CubeHierarchy__Group__3
+            {
+            pushFollow(FOLLOW_20);
+            rule__CubeHierarchy__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeHierarchy__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group__2"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group__2__Impl"
+    // InternalCubeDSL.g:4715:1: rule__CubeHierarchy__Group__2__Impl : ( ( rule__CubeHierarchy__NameAssignment_2 )? ) ;
+    public final void rule__CubeHierarchy__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4719:1: ( ( ( rule__CubeHierarchy__NameAssignment_2 )? ) )
+            // InternalCubeDSL.g:4720:1: ( ( rule__CubeHierarchy__NameAssignment_2 )? )
+            {
+            // InternalCubeDSL.g:4720:1: ( ( rule__CubeHierarchy__NameAssignment_2 )? )
+            // InternalCubeDSL.g:4721:2: ( rule__CubeHierarchy__NameAssignment_2 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getNameAssignment_2()); 
+            }
+            // InternalCubeDSL.g:4722:2: ( rule__CubeHierarchy__NameAssignment_2 )?
+            int alt56=2;
+            int LA56_0 = input.LA(1);
+
+            if ( (LA56_0==RULE_ID) ) {
+                alt56=1;
+            }
+            switch (alt56) {
+                case 1 :
+                    // InternalCubeDSL.g:4722:3: rule__CubeHierarchy__NameAssignment_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__CubeHierarchy__NameAssignment_2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getNameAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group__2__Impl"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group__3"
+    // InternalCubeDSL.g:4730:1: rule__CubeHierarchy__Group__3 : rule__CubeHierarchy__Group__3__Impl rule__CubeHierarchy__Group__4 ;
+    public final void rule__CubeHierarchy__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4734:1: ( rule__CubeHierarchy__Group__3__Impl rule__CubeHierarchy__Group__4 )
+            // InternalCubeDSL.g:4735:2: rule__CubeHierarchy__Group__3__Impl rule__CubeHierarchy__Group__4
+            {
+            pushFollow(FOLLOW_20);
+            rule__CubeHierarchy__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeHierarchy__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group__3"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group__3__Impl"
+    // InternalCubeDSL.g:4742:1: rule__CubeHierarchy__Group__3__Impl : ( ( rule__CubeHierarchy__HasAllAssignment_3 )? ) ;
+    public final void rule__CubeHierarchy__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4746:1: ( ( ( rule__CubeHierarchy__HasAllAssignment_3 )? ) )
+            // InternalCubeDSL.g:4747:1: ( ( rule__CubeHierarchy__HasAllAssignment_3 )? )
+            {
+            // InternalCubeDSL.g:4747:1: ( ( rule__CubeHierarchy__HasAllAssignment_3 )? )
+            // InternalCubeDSL.g:4748:2: ( rule__CubeHierarchy__HasAllAssignment_3 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getHasAllAssignment_3()); 
+            }
+            // InternalCubeDSL.g:4749:2: ( rule__CubeHierarchy__HasAllAssignment_3 )?
+            int alt57=2;
+            int LA57_0 = input.LA(1);
+
+            if ( (LA57_0==118) ) {
+                alt57=1;
+            }
+            switch (alt57) {
+                case 1 :
+                    // InternalCubeDSL.g:4749:3: rule__CubeHierarchy__HasAllAssignment_3
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__CubeHierarchy__HasAllAssignment_3();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getHasAllAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group__3__Impl"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group__4"
+    // InternalCubeDSL.g:4757:1: rule__CubeHierarchy__Group__4 : rule__CubeHierarchy__Group__4__Impl rule__CubeHierarchy__Group__5 ;
+    public final void rule__CubeHierarchy__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4761:1: ( rule__CubeHierarchy__Group__4__Impl rule__CubeHierarchy__Group__5 )
+            // InternalCubeDSL.g:4762:2: rule__CubeHierarchy__Group__4__Impl rule__CubeHierarchy__Group__5
+            {
+            pushFollow(FOLLOW_20);
+            rule__CubeHierarchy__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeHierarchy__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group__4"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group__4__Impl"
+    // InternalCubeDSL.g:4769:1: rule__CubeHierarchy__Group__4__Impl : ( ( rule__CubeHierarchy__Group_4__0 )? ) ;
+    public final void rule__CubeHierarchy__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4773:1: ( ( ( rule__CubeHierarchy__Group_4__0 )? ) )
+            // InternalCubeDSL.g:4774:1: ( ( rule__CubeHierarchy__Group_4__0 )? )
+            {
+            // InternalCubeDSL.g:4774:1: ( ( rule__CubeHierarchy__Group_4__0 )? )
+            // InternalCubeDSL.g:4775:2: ( rule__CubeHierarchy__Group_4__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getGroup_4()); 
+            }
+            // InternalCubeDSL.g:4776:2: ( rule__CubeHierarchy__Group_4__0 )?
+            int alt58=2;
+            int LA58_0 = input.LA(1);
+
+            if ( (LA58_0==119) ) {
+                alt58=1;
+            }
+            switch (alt58) {
+                case 1 :
+                    // InternalCubeDSL.g:4776:3: rule__CubeHierarchy__Group_4__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__CubeHierarchy__Group_4__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getGroup_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group__4__Impl"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group__5"
+    // InternalCubeDSL.g:4784:1: rule__CubeHierarchy__Group__5 : rule__CubeHierarchy__Group__5__Impl rule__CubeHierarchy__Group__6 ;
+    public final void rule__CubeHierarchy__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4788:1: ( rule__CubeHierarchy__Group__5__Impl rule__CubeHierarchy__Group__6 )
+            // InternalCubeDSL.g:4789:2: rule__CubeHierarchy__Group__5__Impl rule__CubeHierarchy__Group__6
+            {
+            pushFollow(FOLLOW_20);
+            rule__CubeHierarchy__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeHierarchy__Group__6();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group__5"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group__5__Impl"
+    // InternalCubeDSL.g:4796:1: rule__CubeHierarchy__Group__5__Impl : ( ( rule__CubeHierarchy__Group_5__0 )? ) ;
+    public final void rule__CubeHierarchy__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4800:1: ( ( ( rule__CubeHierarchy__Group_5__0 )? ) )
+            // InternalCubeDSL.g:4801:1: ( ( rule__CubeHierarchy__Group_5__0 )? )
+            {
+            // InternalCubeDSL.g:4801:1: ( ( rule__CubeHierarchy__Group_5__0 )? )
+            // InternalCubeDSL.g:4802:2: ( rule__CubeHierarchy__Group_5__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getGroup_5()); 
+            }
+            // InternalCubeDSL.g:4803:2: ( rule__CubeHierarchy__Group_5__0 )?
+            int alt59=2;
+            int LA59_0 = input.LA(1);
+
+            if ( (LA59_0==120) ) {
+                alt59=1;
+            }
+            switch (alt59) {
+                case 1 :
+                    // InternalCubeDSL.g:4803:3: rule__CubeHierarchy__Group_5__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__CubeHierarchy__Group_5__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getGroup_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group__5__Impl"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group__6"
+    // InternalCubeDSL.g:4811:1: rule__CubeHierarchy__Group__6 : rule__CubeHierarchy__Group__6__Impl rule__CubeHierarchy__Group__7 ;
+    public final void rule__CubeHierarchy__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4815:1: ( rule__CubeHierarchy__Group__6__Impl rule__CubeHierarchy__Group__7 )
+            // InternalCubeDSL.g:4816:2: rule__CubeHierarchy__Group__6__Impl rule__CubeHierarchy__Group__7
+            {
+            pushFollow(FOLLOW_12);
+            rule__CubeHierarchy__Group__6__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeHierarchy__Group__7();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group__6"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group__6__Impl"
+    // InternalCubeDSL.g:4823:1: rule__CubeHierarchy__Group__6__Impl : ( '{' ) ;
+    public final void rule__CubeHierarchy__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4827:1: ( ( '{' ) )
+            // InternalCubeDSL.g:4828:1: ( '{' )
+            {
+            // InternalCubeDSL.g:4828:1: ( '{' )
+            // InternalCubeDSL.g:4829:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getLeftCurlyBracketKeyword_6()); 
+            }
+            match(input,74,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getLeftCurlyBracketKeyword_6()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group__6__Impl"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group__7"
+    // InternalCubeDSL.g:4838:1: rule__CubeHierarchy__Group__7 : rule__CubeHierarchy__Group__7__Impl rule__CubeHierarchy__Group__8 ;
+    public final void rule__CubeHierarchy__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4842:1: ( rule__CubeHierarchy__Group__7__Impl rule__CubeHierarchy__Group__8 )
+            // InternalCubeDSL.g:4843:2: rule__CubeHierarchy__Group__7__Impl rule__CubeHierarchy__Group__8
+            {
+            pushFollow(FOLLOW_13);
+            rule__CubeHierarchy__Group__7__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeHierarchy__Group__8();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group__7"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group__7__Impl"
+    // InternalCubeDSL.g:4850:1: rule__CubeHierarchy__Group__7__Impl : ( ( rule__CubeHierarchy__CubeDimEntityAssignment_7 ) ) ;
+    public final void rule__CubeHierarchy__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4854:1: ( ( ( rule__CubeHierarchy__CubeDimEntityAssignment_7 ) ) )
+            // InternalCubeDSL.g:4855:1: ( ( rule__CubeHierarchy__CubeDimEntityAssignment_7 ) )
+            {
+            // InternalCubeDSL.g:4855:1: ( ( rule__CubeHierarchy__CubeDimEntityAssignment_7 ) )
+            // InternalCubeDSL.g:4856:2: ( rule__CubeHierarchy__CubeDimEntityAssignment_7 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getCubeDimEntityAssignment_7()); 
+            }
+            // InternalCubeDSL.g:4857:2: ( rule__CubeHierarchy__CubeDimEntityAssignment_7 )
+            // InternalCubeDSL.g:4857:3: rule__CubeHierarchy__CubeDimEntityAssignment_7
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeHierarchy__CubeDimEntityAssignment_7();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getCubeDimEntityAssignment_7()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group__7__Impl"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group__8"
+    // InternalCubeDSL.g:4865:1: rule__CubeHierarchy__Group__8 : rule__CubeHierarchy__Group__8__Impl ;
+    public final void rule__CubeHierarchy__Group__8() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4869:1: ( rule__CubeHierarchy__Group__8__Impl )
+            // InternalCubeDSL.g:4870:2: rule__CubeHierarchy__Group__8__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeHierarchy__Group__8__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group__8"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group__8__Impl"
+    // InternalCubeDSL.g:4876:1: rule__CubeHierarchy__Group__8__Impl : ( '}' ) ;
+    public final void rule__CubeHierarchy__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4880:1: ( ( '}' ) )
+            // InternalCubeDSL.g:4881:1: ( '}' )
+            {
+            // InternalCubeDSL.g:4881:1: ( '}' )
+            // InternalCubeDSL.g:4882:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getRightCurlyBracketKeyword_8()); 
+            }
+            match(input,75,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getRightCurlyBracketKeyword_8()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group__8__Impl"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group_4__0"
+    // InternalCubeDSL.g:4892:1: rule__CubeHierarchy__Group_4__0 : rule__CubeHierarchy__Group_4__0__Impl rule__CubeHierarchy__Group_4__1 ;
+    public final void rule__CubeHierarchy__Group_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4896:1: ( rule__CubeHierarchy__Group_4__0__Impl rule__CubeHierarchy__Group_4__1 )
+            // InternalCubeDSL.g:4897:2: rule__CubeHierarchy__Group_4__0__Impl rule__CubeHierarchy__Group_4__1
+            {
+            pushFollow(FOLLOW_14);
+            rule__CubeHierarchy__Group_4__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeHierarchy__Group_4__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group_4__0"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group_4__0__Impl"
+    // InternalCubeDSL.g:4904:1: rule__CubeHierarchy__Group_4__0__Impl : ( ( rule__CubeHierarchy__AllMemberNameAssignment_4_0 ) ) ;
+    public final void rule__CubeHierarchy__Group_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4908:1: ( ( ( rule__CubeHierarchy__AllMemberNameAssignment_4_0 ) ) )
+            // InternalCubeDSL.g:4909:1: ( ( rule__CubeHierarchy__AllMemberNameAssignment_4_0 ) )
+            {
+            // InternalCubeDSL.g:4909:1: ( ( rule__CubeHierarchy__AllMemberNameAssignment_4_0 ) )
+            // InternalCubeDSL.g:4910:2: ( rule__CubeHierarchy__AllMemberNameAssignment_4_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getAllMemberNameAssignment_4_0()); 
+            }
+            // InternalCubeDSL.g:4911:2: ( rule__CubeHierarchy__AllMemberNameAssignment_4_0 )
+            // InternalCubeDSL.g:4911:3: rule__CubeHierarchy__AllMemberNameAssignment_4_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeHierarchy__AllMemberNameAssignment_4_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getAllMemberNameAssignment_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group_4__0__Impl"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group_4__1"
+    // InternalCubeDSL.g:4919:1: rule__CubeHierarchy__Group_4__1 : rule__CubeHierarchy__Group_4__1__Impl ;
+    public final void rule__CubeHierarchy__Group_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4923:1: ( rule__CubeHierarchy__Group_4__1__Impl )
+            // InternalCubeDSL.g:4924:2: rule__CubeHierarchy__Group_4__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeHierarchy__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__CubeHierarchy__Group_4__1"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group_4__1__Impl"
+    // InternalCubeDSL.g:4930:1: rule__CubeHierarchy__Group_4__1__Impl : ( ( rule__CubeHierarchy__AllMemberNameValueAssignment_4_1 ) ) ;
+    public final void rule__CubeHierarchy__Group_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4934:1: ( ( ( rule__CubeHierarchy__AllMemberNameValueAssignment_4_1 ) ) )
+            // InternalCubeDSL.g:4935:1: ( ( rule__CubeHierarchy__AllMemberNameValueAssignment_4_1 ) )
+            {
+            // InternalCubeDSL.g:4935:1: ( ( rule__CubeHierarchy__AllMemberNameValueAssignment_4_1 ) )
+            // InternalCubeDSL.g:4936:2: ( rule__CubeHierarchy__AllMemberNameValueAssignment_4_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getAllMemberNameValueAssignment_4_1()); 
+            }
+            // InternalCubeDSL.g:4937:2: ( rule__CubeHierarchy__AllMemberNameValueAssignment_4_1 )
+            // InternalCubeDSL.g:4937:3: rule__CubeHierarchy__AllMemberNameValueAssignment_4_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeHierarchy__AllMemberNameValueAssignment_4_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getAllMemberNameValueAssignment_4_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group_4__1__Impl"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group_5__0"
+    // InternalCubeDSL.g:4946:1: rule__CubeHierarchy__Group_5__0 : rule__CubeHierarchy__Group_5__0__Impl rule__CubeHierarchy__Group_5__1 ;
+    public final void rule__CubeHierarchy__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4950:1: ( rule__CubeHierarchy__Group_5__0__Impl rule__CubeHierarchy__Group_5__1 )
+            // InternalCubeDSL.g:4951:2: rule__CubeHierarchy__Group_5__0__Impl rule__CubeHierarchy__Group_5__1
+            {
+            pushFollow(FOLLOW_14);
+            rule__CubeHierarchy__Group_5__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeHierarchy__Group_5__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group_5__0"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group_5__0__Impl"
+    // InternalCubeDSL.g:4958:1: rule__CubeHierarchy__Group_5__0__Impl : ( ( rule__CubeHierarchy__DefaultMemberAssignment_5_0 ) ) ;
+    public final void rule__CubeHierarchy__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4962:1: ( ( ( rule__CubeHierarchy__DefaultMemberAssignment_5_0 ) ) )
+            // InternalCubeDSL.g:4963:1: ( ( rule__CubeHierarchy__DefaultMemberAssignment_5_0 ) )
+            {
+            // InternalCubeDSL.g:4963:1: ( ( rule__CubeHierarchy__DefaultMemberAssignment_5_0 ) )
+            // InternalCubeDSL.g:4964:2: ( rule__CubeHierarchy__DefaultMemberAssignment_5_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getDefaultMemberAssignment_5_0()); 
+            }
+            // InternalCubeDSL.g:4965:2: ( rule__CubeHierarchy__DefaultMemberAssignment_5_0 )
+            // InternalCubeDSL.g:4965:3: rule__CubeHierarchy__DefaultMemberAssignment_5_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeHierarchy__DefaultMemberAssignment_5_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getDefaultMemberAssignment_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group_5__1"
+    // InternalCubeDSL.g:4973:1: rule__CubeHierarchy__Group_5__1 : rule__CubeHierarchy__Group_5__1__Impl ;
+    public final void rule__CubeHierarchy__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4977:1: ( rule__CubeHierarchy__Group_5__1__Impl )
+            // InternalCubeDSL.g:4978:2: rule__CubeHierarchy__Group_5__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeHierarchy__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__CubeHierarchy__Group_5__1"
+
+
+    // $ANTLR start "rule__CubeHierarchy__Group_5__1__Impl"
+    // InternalCubeDSL.g:4984:1: rule__CubeHierarchy__Group_5__1__Impl : ( ( rule__CubeHierarchy__DefaultMemberValueAssignment_5_1 ) ) ;
+    public final void rule__CubeHierarchy__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:4988:1: ( ( ( rule__CubeHierarchy__DefaultMemberValueAssignment_5_1 ) ) )
+            // InternalCubeDSL.g:4989:1: ( ( rule__CubeHierarchy__DefaultMemberValueAssignment_5_1 ) )
+            {
+            // InternalCubeDSL.g:4989:1: ( ( rule__CubeHierarchy__DefaultMemberValueAssignment_5_1 ) )
+            // InternalCubeDSL.g:4990:2: ( rule__CubeHierarchy__DefaultMemberValueAssignment_5_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getDefaultMemberValueAssignment_5_1()); 
+            }
+            // InternalCubeDSL.g:4991:2: ( rule__CubeHierarchy__DefaultMemberValueAssignment_5_1 )
+            // InternalCubeDSL.g:4991:3: rule__CubeHierarchy__DefaultMemberValueAssignment_5_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeHierarchy__DefaultMemberValueAssignment_5_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getDefaultMemberValueAssignment_5_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__CubeEntity__Group__0"
+    // InternalCubeDSL.g:5000:1: rule__CubeEntity__Group__0 : rule__CubeEntity__Group__0__Impl rule__CubeEntity__Group__1 ;
+    public final void rule__CubeEntity__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5004:1: ( rule__CubeEntity__Group__0__Impl rule__CubeEntity__Group__1 )
+            // InternalCubeDSL.g:5005:2: rule__CubeEntity__Group__0__Impl rule__CubeEntity__Group__1
+            {
+            pushFollow(FOLLOW_6);
+            rule__CubeEntity__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeEntity__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeEntity__Group__0"
+
+
+    // $ANTLR start "rule__CubeEntity__Group__0__Impl"
+    // InternalCubeDSL.g:5012:1: rule__CubeEntity__Group__0__Impl : ( 'entity' ) ;
+    public final void rule__CubeEntity__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5016:1: ( ( 'entity' ) )
+            // InternalCubeDSL.g:5017:1: ( 'entity' )
+            {
+            // InternalCubeDSL.g:5017:1: ( 'entity' )
+            // InternalCubeDSL.g:5018:2: 'entity'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeEntityAccess().getEntityKeyword_0()); 
+            }
+            match(input,81,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeEntityAccess().getEntityKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeEntity__Group__0__Impl"
+
+
+    // $ANTLR start "rule__CubeEntity__Group__1"
+    // InternalCubeDSL.g:5027:1: rule__CubeEntity__Group__1 : rule__CubeEntity__Group__1__Impl rule__CubeEntity__Group__2 ;
+    public final void rule__CubeEntity__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5031:1: ( rule__CubeEntity__Group__1__Impl rule__CubeEntity__Group__2 )
+            // InternalCubeDSL.g:5032:2: rule__CubeEntity__Group__1__Impl rule__CubeEntity__Group__2
+            {
+            pushFollow(FOLLOW_21);
+            rule__CubeEntity__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeEntity__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeEntity__Group__1"
+
+
+    // $ANTLR start "rule__CubeEntity__Group__1__Impl"
+    // InternalCubeDSL.g:5039:1: rule__CubeEntity__Group__1__Impl : ( ( rule__CubeEntity__EntityValueAssignment_1 ) ) ;
+    public final void rule__CubeEntity__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5043:1: ( ( ( rule__CubeEntity__EntityValueAssignment_1 ) ) )
+            // InternalCubeDSL.g:5044:1: ( ( rule__CubeEntity__EntityValueAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:5044:1: ( ( rule__CubeEntity__EntityValueAssignment_1 ) )
+            // InternalCubeDSL.g:5045:2: ( rule__CubeEntity__EntityValueAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeEntityAccess().getEntityValueAssignment_1()); 
+            }
+            // InternalCubeDSL.g:5046:2: ( rule__CubeEntity__EntityValueAssignment_1 )
+            // InternalCubeDSL.g:5046:3: rule__CubeEntity__EntityValueAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeEntity__EntityValueAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeEntityAccess().getEntityValueAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeEntity__Group__1__Impl"
+
+
+    // $ANTLR start "rule__CubeEntity__Group__2"
+    // InternalCubeDSL.g:5054:1: rule__CubeEntity__Group__2 : rule__CubeEntity__Group__2__Impl ;
+    public final void rule__CubeEntity__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5058:1: ( rule__CubeEntity__Group__2__Impl )
+            // InternalCubeDSL.g:5059:2: rule__CubeEntity__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeEntity__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeEntity__Group__2"
+
+
+    // $ANTLR start "rule__CubeEntity__Group__2__Impl"
+    // InternalCubeDSL.g:5065:1: rule__CubeEntity__Group__2__Impl : ( ( rule__CubeEntity__Group_2__0 )? ) ;
+    public final void rule__CubeEntity__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5069:1: ( ( ( rule__CubeEntity__Group_2__0 )? ) )
+            // InternalCubeDSL.g:5070:1: ( ( rule__CubeEntity__Group_2__0 )? )
+            {
+            // InternalCubeDSL.g:5070:1: ( ( rule__CubeEntity__Group_2__0 )? )
+            // InternalCubeDSL.g:5071:2: ( rule__CubeEntity__Group_2__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeEntityAccess().getGroup_2()); 
+            }
+            // InternalCubeDSL.g:5072:2: ( rule__CubeEntity__Group_2__0 )?
+            int alt60=2;
+            int LA60_0 = input.LA(1);
+
+            if ( (LA60_0==121) ) {
+                alt60=1;
+            }
+            switch (alt60) {
+                case 1 :
+                    // InternalCubeDSL.g:5072:3: rule__CubeEntity__Group_2__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__CubeEntity__Group_2__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeEntityAccess().getGroup_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeEntity__Group__2__Impl"
+
+
+    // $ANTLR start "rule__CubeEntity__Group_2__0"
+    // InternalCubeDSL.g:5081:1: rule__CubeEntity__Group_2__0 : rule__CubeEntity__Group_2__0__Impl rule__CubeEntity__Group_2__1 ;
+    public final void rule__CubeEntity__Group_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5085:1: ( rule__CubeEntity__Group_2__0__Impl rule__CubeEntity__Group_2__1 )
+            // InternalCubeDSL.g:5086:2: rule__CubeEntity__Group_2__0__Impl rule__CubeEntity__Group_2__1
+            {
+            pushFollow(FOLLOW_6);
+            rule__CubeEntity__Group_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeEntity__Group_2__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeEntity__Group_2__0"
+
+
+    // $ANTLR start "rule__CubeEntity__Group_2__0__Impl"
+    // InternalCubeDSL.g:5093:1: rule__CubeEntity__Group_2__0__Impl : ( ( rule__CubeEntity__KeyAssignment_2_0 ) ) ;
+    public final void rule__CubeEntity__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5097:1: ( ( ( rule__CubeEntity__KeyAssignment_2_0 ) ) )
+            // InternalCubeDSL.g:5098:1: ( ( rule__CubeEntity__KeyAssignment_2_0 ) )
+            {
+            // InternalCubeDSL.g:5098:1: ( ( rule__CubeEntity__KeyAssignment_2_0 ) )
+            // InternalCubeDSL.g:5099:2: ( rule__CubeEntity__KeyAssignment_2_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeEntityAccess().getKeyAssignment_2_0()); 
+            }
+            // InternalCubeDSL.g:5100:2: ( rule__CubeEntity__KeyAssignment_2_0 )
+            // InternalCubeDSL.g:5100:3: rule__CubeEntity__KeyAssignment_2_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeEntity__KeyAssignment_2_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeEntityAccess().getKeyAssignment_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeEntity__Group_2__0__Impl"
+
+
+    // $ANTLR start "rule__CubeEntity__Group_2__1"
+    // InternalCubeDSL.g:5108:1: rule__CubeEntity__Group_2__1 : rule__CubeEntity__Group_2__1__Impl ;
+    public final void rule__CubeEntity__Group_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5112:1: ( rule__CubeEntity__Group_2__1__Impl )
+            // InternalCubeDSL.g:5113:2: rule__CubeEntity__Group_2__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeEntity__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__CubeEntity__Group_2__1"
+
+
+    // $ANTLR start "rule__CubeEntity__Group_2__1__Impl"
+    // InternalCubeDSL.g:5119:1: rule__CubeEntity__Group_2__1__Impl : ( ( rule__CubeEntity__KeyValueAssignment_2_1 ) ) ;
+    public final void rule__CubeEntity__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5123:1: ( ( ( rule__CubeEntity__KeyValueAssignment_2_1 ) ) )
+            // InternalCubeDSL.g:5124:1: ( ( rule__CubeEntity__KeyValueAssignment_2_1 ) )
+            {
+            // InternalCubeDSL.g:5124:1: ( ( rule__CubeEntity__KeyValueAssignment_2_1 ) )
+            // InternalCubeDSL.g:5125:2: ( rule__CubeEntity__KeyValueAssignment_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeEntityAccess().getKeyValueAssignment_2_1()); 
+            }
+            // InternalCubeDSL.g:5126:2: ( rule__CubeEntity__KeyValueAssignment_2_1 )
+            // InternalCubeDSL.g:5126:3: rule__CubeEntity__KeyValueAssignment_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeEntity__KeyValueAssignment_2_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeEntityAccess().getKeyValueAssignment_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeEntity__Group_2__1__Impl"
+
+
+    // $ANTLR start "rule__CubeTypeEntity__Group__0"
+    // InternalCubeDSL.g:5135:1: rule__CubeTypeEntity__Group__0 : rule__CubeTypeEntity__Group__0__Impl rule__CubeTypeEntity__Group__1 ;
+    public final void rule__CubeTypeEntity__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5139:1: ( rule__CubeTypeEntity__Group__0__Impl rule__CubeTypeEntity__Group__1 )
+            // InternalCubeDSL.g:5140:2: rule__CubeTypeEntity__Group__0__Impl rule__CubeTypeEntity__Group__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__CubeTypeEntity__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeTypeEntity__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeTypeEntity__Group__0"
+
+
+    // $ANTLR start "rule__CubeTypeEntity__Group__0__Impl"
+    // InternalCubeDSL.g:5147:1: rule__CubeTypeEntity__Group__0__Impl : ( ( rule__CubeTypeEntity__EntityRefAssignment_0 ) ) ;
+    public final void rule__CubeTypeEntity__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5151:1: ( ( ( rule__CubeTypeEntity__EntityRefAssignment_0 ) ) )
+            // InternalCubeDSL.g:5152:1: ( ( rule__CubeTypeEntity__EntityRefAssignment_0 ) )
+            {
+            // InternalCubeDSL.g:5152:1: ( ( rule__CubeTypeEntity__EntityRefAssignment_0 ) )
+            // InternalCubeDSL.g:5153:2: ( rule__CubeTypeEntity__EntityRefAssignment_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeEntityAccess().getEntityRefAssignment_0()); 
+            }
+            // InternalCubeDSL.g:5154:2: ( rule__CubeTypeEntity__EntityRefAssignment_0 )
+            // InternalCubeDSL.g:5154:3: rule__CubeTypeEntity__EntityRefAssignment_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeTypeEntity__EntityRefAssignment_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeEntityAccess().getEntityRefAssignment_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeTypeEntity__Group__0__Impl"
+
+
+    // $ANTLR start "rule__CubeTypeEntity__Group__1"
+    // InternalCubeDSL.g:5162:1: rule__CubeTypeEntity__Group__1 : rule__CubeTypeEntity__Group__1__Impl rule__CubeTypeEntity__Group__2 ;
+    public final void rule__CubeTypeEntity__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5166:1: ( rule__CubeTypeEntity__Group__1__Impl rule__CubeTypeEntity__Group__2 )
+            // InternalCubeDSL.g:5167:2: rule__CubeTypeEntity__Group__1__Impl rule__CubeTypeEntity__Group__2
+            {
+            pushFollow(FOLLOW_22);
+            rule__CubeTypeEntity__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeTypeEntity__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeTypeEntity__Group__1"
+
+
+    // $ANTLR start "rule__CubeTypeEntity__Group__1__Impl"
+    // InternalCubeDSL.g:5174:1: rule__CubeTypeEntity__Group__1__Impl : ( '{' ) ;
+    public final void rule__CubeTypeEntity__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5178:1: ( ( '{' ) )
+            // InternalCubeDSL.g:5179:1: ( '{' )
+            {
+            // InternalCubeDSL.g:5179:1: ( '{' )
+            // InternalCubeDSL.g:5180:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeEntityAccess().getLeftCurlyBracketKeyword_1()); 
+            }
+            match(input,74,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeEntityAccess().getLeftCurlyBracketKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeTypeEntity__Group__1__Impl"
+
+
+    // $ANTLR start "rule__CubeTypeEntity__Group__2"
+    // InternalCubeDSL.g:5189:1: rule__CubeTypeEntity__Group__2 : rule__CubeTypeEntity__Group__2__Impl rule__CubeTypeEntity__Group__3 ;
+    public final void rule__CubeTypeEntity__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5193:1: ( rule__CubeTypeEntity__Group__2__Impl rule__CubeTypeEntity__Group__3 )
+            // InternalCubeDSL.g:5194:2: rule__CubeTypeEntity__Group__2__Impl rule__CubeTypeEntity__Group__3
+            {
+            pushFollow(FOLLOW_22);
+            rule__CubeTypeEntity__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeTypeEntity__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeTypeEntity__Group__2"
+
+
+    // $ANTLR start "rule__CubeTypeEntity__Group__2__Impl"
+    // InternalCubeDSL.g:5201:1: rule__CubeTypeEntity__Group__2__Impl : ( ( rule__CubeTypeEntity__DimensionUsagesAssignment_2 )* ) ;
+    public final void rule__CubeTypeEntity__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5205:1: ( ( ( rule__CubeTypeEntity__DimensionUsagesAssignment_2 )* ) )
+            // InternalCubeDSL.g:5206:1: ( ( rule__CubeTypeEntity__DimensionUsagesAssignment_2 )* )
+            {
+            // InternalCubeDSL.g:5206:1: ( ( rule__CubeTypeEntity__DimensionUsagesAssignment_2 )* )
+            // InternalCubeDSL.g:5207:2: ( rule__CubeTypeEntity__DimensionUsagesAssignment_2 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeEntityAccess().getDimensionUsagesAssignment_2()); 
+            }
+            // InternalCubeDSL.g:5208:2: ( rule__CubeTypeEntity__DimensionUsagesAssignment_2 )*
+            loop61:
+            do {
+                int alt61=2;
+                int LA61_0 = input.LA(1);
+
+                if ( (LA61_0==77) ) {
+                    alt61=1;
+                }
+
+
+                switch (alt61) {
+            	case 1 :
+            	    // InternalCubeDSL.g:5208:3: rule__CubeTypeEntity__DimensionUsagesAssignment_2
+            	    {
+            	    pushFollow(FOLLOW_23);
+            	    rule__CubeTypeEntity__DimensionUsagesAssignment_2();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop61;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeEntityAccess().getDimensionUsagesAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeTypeEntity__Group__2__Impl"
+
+
+    // $ANTLR start "rule__CubeTypeEntity__Group__3"
+    // InternalCubeDSL.g:5216:1: rule__CubeTypeEntity__Group__3 : rule__CubeTypeEntity__Group__3__Impl rule__CubeTypeEntity__Group__4 ;
+    public final void rule__CubeTypeEntity__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5220:1: ( rule__CubeTypeEntity__Group__3__Impl rule__CubeTypeEntity__Group__4 )
+            // InternalCubeDSL.g:5221:2: rule__CubeTypeEntity__Group__3__Impl rule__CubeTypeEntity__Group__4
+            {
+            pushFollow(FOLLOW_22);
+            rule__CubeTypeEntity__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeTypeEntity__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeTypeEntity__Group__3"
+
+
+    // $ANTLR start "rule__CubeTypeEntity__Group__3__Impl"
+    // InternalCubeDSL.g:5228:1: rule__CubeTypeEntity__Group__3__Impl : ( ( rule__CubeTypeEntity__MeasuresAssignment_3 )* ) ;
+    public final void rule__CubeTypeEntity__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5232:1: ( ( ( rule__CubeTypeEntity__MeasuresAssignment_3 )* ) )
+            // InternalCubeDSL.g:5233:1: ( ( rule__CubeTypeEntity__MeasuresAssignment_3 )* )
+            {
+            // InternalCubeDSL.g:5233:1: ( ( rule__CubeTypeEntity__MeasuresAssignment_3 )* )
+            // InternalCubeDSL.g:5234:2: ( rule__CubeTypeEntity__MeasuresAssignment_3 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeEntityAccess().getMeasuresAssignment_3()); 
+            }
+            // InternalCubeDSL.g:5235:2: ( rule__CubeTypeEntity__MeasuresAssignment_3 )*
+            loop62:
+            do {
+                int alt62=2;
+                int LA62_0 = input.LA(1);
+
+                if ( (LA62_0==85) ) {
+                    alt62=1;
+                }
+
+
+                switch (alt62) {
+            	case 1 :
+            	    // InternalCubeDSL.g:5235:3: rule__CubeTypeEntity__MeasuresAssignment_3
+            	    {
+            	    pushFollow(FOLLOW_24);
+            	    rule__CubeTypeEntity__MeasuresAssignment_3();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop62;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeEntityAccess().getMeasuresAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeTypeEntity__Group__3__Impl"
+
+
+    // $ANTLR start "rule__CubeTypeEntity__Group__4"
+    // InternalCubeDSL.g:5243:1: rule__CubeTypeEntity__Group__4 : rule__CubeTypeEntity__Group__4__Impl ;
+    public final void rule__CubeTypeEntity__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5247:1: ( rule__CubeTypeEntity__Group__4__Impl )
+            // InternalCubeDSL.g:5248:2: rule__CubeTypeEntity__Group__4__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeTypeEntity__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeTypeEntity__Group__4"
+
+
+    // $ANTLR start "rule__CubeTypeEntity__Group__4__Impl"
+    // InternalCubeDSL.g:5254:1: rule__CubeTypeEntity__Group__4__Impl : ( '}' ) ;
+    public final void rule__CubeTypeEntity__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5258:1: ( ( '}' ) )
+            // InternalCubeDSL.g:5259:1: ( '}' )
+            {
+            // InternalCubeDSL.g:5259:1: ( '}' )
+            // InternalCubeDSL.g:5260:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeEntityAccess().getRightCurlyBracketKeyword_4()); 
+            }
+            match(input,75,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeEntityAccess().getRightCurlyBracketKeyword_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeTypeEntity__Group__4__Impl"
+
+
+    // $ANTLR start "rule__CubeDimensionEntity__Group__0"
+    // InternalCubeDSL.g:5270:1: rule__CubeDimensionEntity__Group__0 : rule__CubeDimensionEntity__Group__0__Impl rule__CubeDimensionEntity__Group__1 ;
+    public final void rule__CubeDimensionEntity__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5274:1: ( rule__CubeDimensionEntity__Group__0__Impl rule__CubeDimensionEntity__Group__1 )
+            // InternalCubeDSL.g:5275:2: rule__CubeDimensionEntity__Group__0__Impl rule__CubeDimensionEntity__Group__1
+            {
+            pushFollow(FOLLOW_12);
+            rule__CubeDimensionEntity__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionEntity__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntity__Group__0"
+
+
+    // $ANTLR start "rule__CubeDimensionEntity__Group__0__Impl"
+    // InternalCubeDSL.g:5282:1: rule__CubeDimensionEntity__Group__0__Impl : ( () ) ;
+    public final void rule__CubeDimensionEntity__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5286:1: ( ( () ) )
+            // InternalCubeDSL.g:5287:1: ( () )
+            {
+            // InternalCubeDSL.g:5287:1: ( () )
+            // InternalCubeDSL.g:5288:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityAccess().getCubeDimensionEntityAction_0()); 
+            }
+            // InternalCubeDSL.g:5289:2: ()
+            // InternalCubeDSL.g:5289:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityAccess().getCubeDimensionEntityAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntity__Group__0__Impl"
+
+
+    // $ANTLR start "rule__CubeDimensionEntity__Group__1"
+    // InternalCubeDSL.g:5297:1: rule__CubeDimensionEntity__Group__1 : rule__CubeDimensionEntity__Group__1__Impl rule__CubeDimensionEntity__Group__2 ;
+    public final void rule__CubeDimensionEntity__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5301:1: ( rule__CubeDimensionEntity__Group__1__Impl rule__CubeDimensionEntity__Group__2 )
+            // InternalCubeDSL.g:5302:2: rule__CubeDimensionEntity__Group__1__Impl rule__CubeDimensionEntity__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__CubeDimensionEntity__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionEntity__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntity__Group__1"
+
+
+    // $ANTLR start "rule__CubeDimensionEntity__Group__1__Impl"
+    // InternalCubeDSL.g:5309:1: rule__CubeDimensionEntity__Group__1__Impl : ( ( rule__CubeDimensionEntity__EntityRefAssignment_1 ) ) ;
+    public final void rule__CubeDimensionEntity__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5313:1: ( ( ( rule__CubeDimensionEntity__EntityRefAssignment_1 ) ) )
+            // InternalCubeDSL.g:5314:1: ( ( rule__CubeDimensionEntity__EntityRefAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:5314:1: ( ( rule__CubeDimensionEntity__EntityRefAssignment_1 ) )
+            // InternalCubeDSL.g:5315:2: ( rule__CubeDimensionEntity__EntityRefAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityAccess().getEntityRefAssignment_1()); 
+            }
+            // InternalCubeDSL.g:5316:2: ( rule__CubeDimensionEntity__EntityRefAssignment_1 )
+            // InternalCubeDSL.g:5316:3: rule__CubeDimensionEntity__EntityRefAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionEntity__EntityRefAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityAccess().getEntityRefAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntity__Group__1__Impl"
+
+
+    // $ANTLR start "rule__CubeDimensionEntity__Group__2"
+    // InternalCubeDSL.g:5324:1: rule__CubeDimensionEntity__Group__2 : rule__CubeDimensionEntity__Group__2__Impl rule__CubeDimensionEntity__Group__3 ;
+    public final void rule__CubeDimensionEntity__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5328:1: ( rule__CubeDimensionEntity__Group__2__Impl rule__CubeDimensionEntity__Group__3 )
+            // InternalCubeDSL.g:5329:2: rule__CubeDimensionEntity__Group__2__Impl rule__CubeDimensionEntity__Group__3
+            {
+            pushFollow(FOLLOW_25);
+            rule__CubeDimensionEntity__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionEntity__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntity__Group__2"
+
+
+    // $ANTLR start "rule__CubeDimensionEntity__Group__2__Impl"
+    // InternalCubeDSL.g:5336:1: rule__CubeDimensionEntity__Group__2__Impl : ( '{' ) ;
+    public final void rule__CubeDimensionEntity__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5340:1: ( ( '{' ) )
+            // InternalCubeDSL.g:5341:1: ( '{' )
+            {
+            // InternalCubeDSL.g:5341:1: ( '{' )
+            // InternalCubeDSL.g:5342:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityAccess().getLeftCurlyBracketKeyword_2()); 
+            }
+            match(input,74,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityAccess().getLeftCurlyBracketKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntity__Group__2__Impl"
+
+
+    // $ANTLR start "rule__CubeDimensionEntity__Group__3"
+    // InternalCubeDSL.g:5351:1: rule__CubeDimensionEntity__Group__3 : rule__CubeDimensionEntity__Group__3__Impl rule__CubeDimensionEntity__Group__4 ;
+    public final void rule__CubeDimensionEntity__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5355:1: ( rule__CubeDimensionEntity__Group__3__Impl rule__CubeDimensionEntity__Group__4 )
+            // InternalCubeDSL.g:5356:2: rule__CubeDimensionEntity__Group__3__Impl rule__CubeDimensionEntity__Group__4
+            {
+            pushFollow(FOLLOW_25);
+            rule__CubeDimensionEntity__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionEntity__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntity__Group__3"
+
+
+    // $ANTLR start "rule__CubeDimensionEntity__Group__3__Impl"
+    // InternalCubeDSL.g:5363:1: rule__CubeDimensionEntity__Group__3__Impl : ( ( rule__CubeDimensionEntity__HierarchLevelsAssignment_3 )* ) ;
+    public final void rule__CubeDimensionEntity__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5367:1: ( ( ( rule__CubeDimensionEntity__HierarchLevelsAssignment_3 )* ) )
+            // InternalCubeDSL.g:5368:1: ( ( rule__CubeDimensionEntity__HierarchLevelsAssignment_3 )* )
+            {
+            // InternalCubeDSL.g:5368:1: ( ( rule__CubeDimensionEntity__HierarchLevelsAssignment_3 )* )
+            // InternalCubeDSL.g:5369:2: ( rule__CubeDimensionEntity__HierarchLevelsAssignment_3 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityAccess().getHierarchLevelsAssignment_3()); 
+            }
+            // InternalCubeDSL.g:5370:2: ( rule__CubeDimensionEntity__HierarchLevelsAssignment_3 )*
+            loop63:
+            do {
+                int alt63=2;
+                int LA63_0 = input.LA(1);
+
+                if ( (LA63_0==82) ) {
+                    alt63=1;
+                }
+
+
+                switch (alt63) {
+            	case 1 :
+            	    // InternalCubeDSL.g:5370:3: rule__CubeDimensionEntity__HierarchLevelsAssignment_3
+            	    {
+            	    pushFollow(FOLLOW_26);
+            	    rule__CubeDimensionEntity__HierarchLevelsAssignment_3();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop63;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityAccess().getHierarchLevelsAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntity__Group__3__Impl"
+
+
+    // $ANTLR start "rule__CubeDimensionEntity__Group__4"
+    // InternalCubeDSL.g:5378:1: rule__CubeDimensionEntity__Group__4 : rule__CubeDimensionEntity__Group__4__Impl rule__CubeDimensionEntity__Group__5 ;
+    public final void rule__CubeDimensionEntity__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5382:1: ( rule__CubeDimensionEntity__Group__4__Impl rule__CubeDimensionEntity__Group__5 )
+            // InternalCubeDSL.g:5383:2: rule__CubeDimensionEntity__Group__4__Impl rule__CubeDimensionEntity__Group__5
+            {
+            pushFollow(FOLLOW_25);
+            rule__CubeDimensionEntity__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionEntity__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntity__Group__4"
+
+
+    // $ANTLR start "rule__CubeDimensionEntity__Group__4__Impl"
+    // InternalCubeDSL.g:5390:1: rule__CubeDimensionEntity__Group__4__Impl : ( ( rule__CubeDimensionEntity__DimEntityAssignment_4 )? ) ;
+    public final void rule__CubeDimensionEntity__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5394:1: ( ( ( rule__CubeDimensionEntity__DimEntityAssignment_4 )? ) )
+            // InternalCubeDSL.g:5395:1: ( ( rule__CubeDimensionEntity__DimEntityAssignment_4 )? )
+            {
+            // InternalCubeDSL.g:5395:1: ( ( rule__CubeDimensionEntity__DimEntityAssignment_4 )? )
+            // InternalCubeDSL.g:5396:2: ( rule__CubeDimensionEntity__DimEntityAssignment_4 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityAccess().getDimEntityAssignment_4()); 
+            }
+            // InternalCubeDSL.g:5397:2: ( rule__CubeDimensionEntity__DimEntityAssignment_4 )?
+            int alt64=2;
+            int LA64_0 = input.LA(1);
+
+            if ( (LA64_0==81) ) {
+                alt64=1;
+            }
+            switch (alt64) {
+                case 1 :
+                    // InternalCubeDSL.g:5397:3: rule__CubeDimensionEntity__DimEntityAssignment_4
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__CubeDimensionEntity__DimEntityAssignment_4();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityAccess().getDimEntityAssignment_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntity__Group__4__Impl"
+
+
+    // $ANTLR start "rule__CubeDimensionEntity__Group__5"
+    // InternalCubeDSL.g:5405:1: rule__CubeDimensionEntity__Group__5 : rule__CubeDimensionEntity__Group__5__Impl ;
+    public final void rule__CubeDimensionEntity__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5409:1: ( rule__CubeDimensionEntity__Group__5__Impl )
+            // InternalCubeDSL.g:5410:2: rule__CubeDimensionEntity__Group__5__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionEntity__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntity__Group__5"
+
+
+    // $ANTLR start "rule__CubeDimensionEntity__Group__5__Impl"
+    // InternalCubeDSL.g:5416:1: rule__CubeDimensionEntity__Group__5__Impl : ( '}' ) ;
+    public final void rule__CubeDimensionEntity__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5420:1: ( ( '}' ) )
+            // InternalCubeDSL.g:5421:1: ( '}' )
+            {
+            // InternalCubeDSL.g:5421:1: ( '}' )
+            // InternalCubeDSL.g:5422:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityAccess().getRightCurlyBracketKeyword_5()); 
+            }
+            match(input,75,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityAccess().getRightCurlyBracketKeyword_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntity__Group__5__Impl"
+
+
+    // $ANTLR start "rule__CubeDimensionEntityEntity__Group__0"
+    // InternalCubeDSL.g:5432:1: rule__CubeDimensionEntityEntity__Group__0 : rule__CubeDimensionEntityEntity__Group__0__Impl rule__CubeDimensionEntityEntity__Group__1 ;
+    public final void rule__CubeDimensionEntityEntity__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5436:1: ( rule__CubeDimensionEntityEntity__Group__0__Impl rule__CubeDimensionEntityEntity__Group__1 )
+            // InternalCubeDSL.g:5437:2: rule__CubeDimensionEntityEntity__Group__0__Impl rule__CubeDimensionEntityEntity__Group__1
+            {
+            pushFollow(FOLLOW_12);
+            rule__CubeDimensionEntityEntity__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionEntityEntity__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntityEntity__Group__0"
+
+
+    // $ANTLR start "rule__CubeDimensionEntityEntity__Group__0__Impl"
+    // InternalCubeDSL.g:5444:1: rule__CubeDimensionEntityEntity__Group__0__Impl : ( () ) ;
+    public final void rule__CubeDimensionEntityEntity__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5448:1: ( ( () ) )
+            // InternalCubeDSL.g:5449:1: ( () )
+            {
+            // InternalCubeDSL.g:5449:1: ( () )
+            // InternalCubeDSL.g:5450:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityEntityAccess().getCubeDimensionEntityEntityAction_0()); 
+            }
+            // InternalCubeDSL.g:5451:2: ()
+            // InternalCubeDSL.g:5451:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityEntityAccess().getCubeDimensionEntityEntityAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntityEntity__Group__0__Impl"
+
+
+    // $ANTLR start "rule__CubeDimensionEntityEntity__Group__1"
+    // InternalCubeDSL.g:5459:1: rule__CubeDimensionEntityEntity__Group__1 : rule__CubeDimensionEntityEntity__Group__1__Impl rule__CubeDimensionEntityEntity__Group__2 ;
+    public final void rule__CubeDimensionEntityEntity__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5463:1: ( rule__CubeDimensionEntityEntity__Group__1__Impl rule__CubeDimensionEntityEntity__Group__2 )
+            // InternalCubeDSL.g:5464:2: rule__CubeDimensionEntityEntity__Group__1__Impl rule__CubeDimensionEntityEntity__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__CubeDimensionEntityEntity__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionEntityEntity__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntityEntity__Group__1"
+
+
+    // $ANTLR start "rule__CubeDimensionEntityEntity__Group__1__Impl"
+    // InternalCubeDSL.g:5471:1: rule__CubeDimensionEntityEntity__Group__1__Impl : ( ( rule__CubeDimensionEntityEntity__EntityRefAssignment_1 ) ) ;
+    public final void rule__CubeDimensionEntityEntity__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5475:1: ( ( ( rule__CubeDimensionEntityEntity__EntityRefAssignment_1 ) ) )
+            // InternalCubeDSL.g:5476:1: ( ( rule__CubeDimensionEntityEntity__EntityRefAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:5476:1: ( ( rule__CubeDimensionEntityEntity__EntityRefAssignment_1 ) )
+            // InternalCubeDSL.g:5477:2: ( rule__CubeDimensionEntityEntity__EntityRefAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityEntityAccess().getEntityRefAssignment_1()); 
+            }
+            // InternalCubeDSL.g:5478:2: ( rule__CubeDimensionEntityEntity__EntityRefAssignment_1 )
+            // InternalCubeDSL.g:5478:3: rule__CubeDimensionEntityEntity__EntityRefAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionEntityEntity__EntityRefAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityEntityAccess().getEntityRefAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntityEntity__Group__1__Impl"
+
+
+    // $ANTLR start "rule__CubeDimensionEntityEntity__Group__2"
+    // InternalCubeDSL.g:5486:1: rule__CubeDimensionEntityEntity__Group__2 : rule__CubeDimensionEntityEntity__Group__2__Impl rule__CubeDimensionEntityEntity__Group__3 ;
+    public final void rule__CubeDimensionEntityEntity__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5490:1: ( rule__CubeDimensionEntityEntity__Group__2__Impl rule__CubeDimensionEntityEntity__Group__3 )
+            // InternalCubeDSL.g:5491:2: rule__CubeDimensionEntityEntity__Group__2__Impl rule__CubeDimensionEntityEntity__Group__3
+            {
+            pushFollow(FOLLOW_15);
+            rule__CubeDimensionEntityEntity__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionEntityEntity__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntityEntity__Group__2"
+
+
+    // $ANTLR start "rule__CubeDimensionEntityEntity__Group__2__Impl"
+    // InternalCubeDSL.g:5498:1: rule__CubeDimensionEntityEntity__Group__2__Impl : ( '{' ) ;
+    public final void rule__CubeDimensionEntityEntity__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5502:1: ( ( '{' ) )
+            // InternalCubeDSL.g:5503:1: ( '{' )
+            {
+            // InternalCubeDSL.g:5503:1: ( '{' )
+            // InternalCubeDSL.g:5504:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityEntityAccess().getLeftCurlyBracketKeyword_2()); 
+            }
+            match(input,74,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityEntityAccess().getLeftCurlyBracketKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntityEntity__Group__2__Impl"
+
+
+    // $ANTLR start "rule__CubeDimensionEntityEntity__Group__3"
+    // InternalCubeDSL.g:5513:1: rule__CubeDimensionEntityEntity__Group__3 : rule__CubeDimensionEntityEntity__Group__3__Impl rule__CubeDimensionEntityEntity__Group__4 ;
+    public final void rule__CubeDimensionEntityEntity__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5517:1: ( rule__CubeDimensionEntityEntity__Group__3__Impl rule__CubeDimensionEntityEntity__Group__4 )
+            // InternalCubeDSL.g:5518:2: rule__CubeDimensionEntityEntity__Group__3__Impl rule__CubeDimensionEntityEntity__Group__4
+            {
+            pushFollow(FOLLOW_6);
+            rule__CubeDimensionEntityEntity__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionEntityEntity__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntityEntity__Group__3"
+
+
+    // $ANTLR start "rule__CubeDimensionEntityEntity__Group__3__Impl"
+    // InternalCubeDSL.g:5525:1: rule__CubeDimensionEntityEntity__Group__3__Impl : ( 'over' ) ;
+    public final void rule__CubeDimensionEntityEntity__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5529:1: ( ( 'over' ) )
+            // InternalCubeDSL.g:5530:1: ( 'over' )
+            {
+            // InternalCubeDSL.g:5530:1: ( 'over' )
+            // InternalCubeDSL.g:5531:2: 'over'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityEntityAccess().getOverKeyword_3()); 
+            }
+            match(input,78,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityEntityAccess().getOverKeyword_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntityEntity__Group__3__Impl"
+
+
+    // $ANTLR start "rule__CubeDimensionEntityEntity__Group__4"
+    // InternalCubeDSL.g:5540:1: rule__CubeDimensionEntityEntity__Group__4 : rule__CubeDimensionEntityEntity__Group__4__Impl rule__CubeDimensionEntityEntity__Group__5 ;
+    public final void rule__CubeDimensionEntityEntity__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5544:1: ( rule__CubeDimensionEntityEntity__Group__4__Impl rule__CubeDimensionEntityEntity__Group__5 )
+            // InternalCubeDSL.g:5545:2: rule__CubeDimensionEntityEntity__Group__4__Impl rule__CubeDimensionEntityEntity__Group__5
+            {
+            pushFollow(FOLLOW_25);
+            rule__CubeDimensionEntityEntity__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionEntityEntity__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntityEntity__Group__4"
+
+
+    // $ANTLR start "rule__CubeDimensionEntityEntity__Group__4__Impl"
+    // InternalCubeDSL.g:5552:1: rule__CubeDimensionEntityEntity__Group__4__Impl : ( ( rule__CubeDimensionEntityEntity__OverValueAssignment_4 ) ) ;
+    public final void rule__CubeDimensionEntityEntity__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5556:1: ( ( ( rule__CubeDimensionEntityEntity__OverValueAssignment_4 ) ) )
+            // InternalCubeDSL.g:5557:1: ( ( rule__CubeDimensionEntityEntity__OverValueAssignment_4 ) )
+            {
+            // InternalCubeDSL.g:5557:1: ( ( rule__CubeDimensionEntityEntity__OverValueAssignment_4 ) )
+            // InternalCubeDSL.g:5558:2: ( rule__CubeDimensionEntityEntity__OverValueAssignment_4 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueAssignment_4()); 
+            }
+            // InternalCubeDSL.g:5559:2: ( rule__CubeDimensionEntityEntity__OverValueAssignment_4 )
+            // InternalCubeDSL.g:5559:3: rule__CubeDimensionEntityEntity__OverValueAssignment_4
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionEntityEntity__OverValueAssignment_4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueAssignment_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntityEntity__Group__4__Impl"
+
+
+    // $ANTLR start "rule__CubeDimensionEntityEntity__Group__5"
+    // InternalCubeDSL.g:5567:1: rule__CubeDimensionEntityEntity__Group__5 : rule__CubeDimensionEntityEntity__Group__5__Impl rule__CubeDimensionEntityEntity__Group__6 ;
+    public final void rule__CubeDimensionEntityEntity__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5571:1: ( rule__CubeDimensionEntityEntity__Group__5__Impl rule__CubeDimensionEntityEntity__Group__6 )
+            // InternalCubeDSL.g:5572:2: rule__CubeDimensionEntityEntity__Group__5__Impl rule__CubeDimensionEntityEntity__Group__6
+            {
+            pushFollow(FOLLOW_25);
+            rule__CubeDimensionEntityEntity__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionEntityEntity__Group__6();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntityEntity__Group__5"
+
+
+    // $ANTLR start "rule__CubeDimensionEntityEntity__Group__5__Impl"
+    // InternalCubeDSL.g:5579:1: rule__CubeDimensionEntityEntity__Group__5__Impl : ( ( rule__CubeDimensionEntityEntity__HierarchLevelsAssignment_5 )* ) ;
+    public final void rule__CubeDimensionEntityEntity__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5583:1: ( ( ( rule__CubeDimensionEntityEntity__HierarchLevelsAssignment_5 )* ) )
+            // InternalCubeDSL.g:5584:1: ( ( rule__CubeDimensionEntityEntity__HierarchLevelsAssignment_5 )* )
+            {
+            // InternalCubeDSL.g:5584:1: ( ( rule__CubeDimensionEntityEntity__HierarchLevelsAssignment_5 )* )
+            // InternalCubeDSL.g:5585:2: ( rule__CubeDimensionEntityEntity__HierarchLevelsAssignment_5 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityEntityAccess().getHierarchLevelsAssignment_5()); 
+            }
+            // InternalCubeDSL.g:5586:2: ( rule__CubeDimensionEntityEntity__HierarchLevelsAssignment_5 )*
+            loop65:
+            do {
+                int alt65=2;
+                int LA65_0 = input.LA(1);
+
+                if ( (LA65_0==82) ) {
+                    alt65=1;
+                }
+
+
+                switch (alt65) {
+            	case 1 :
+            	    // InternalCubeDSL.g:5586:3: rule__CubeDimensionEntityEntity__HierarchLevelsAssignment_5
+            	    {
+            	    pushFollow(FOLLOW_26);
+            	    rule__CubeDimensionEntityEntity__HierarchLevelsAssignment_5();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop65;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityEntityAccess().getHierarchLevelsAssignment_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntityEntity__Group__5__Impl"
+
+
+    // $ANTLR start "rule__CubeDimensionEntityEntity__Group__6"
+    // InternalCubeDSL.g:5594:1: rule__CubeDimensionEntityEntity__Group__6 : rule__CubeDimensionEntityEntity__Group__6__Impl rule__CubeDimensionEntityEntity__Group__7 ;
+    public final void rule__CubeDimensionEntityEntity__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5598:1: ( rule__CubeDimensionEntityEntity__Group__6__Impl rule__CubeDimensionEntityEntity__Group__7 )
+            // InternalCubeDSL.g:5599:2: rule__CubeDimensionEntityEntity__Group__6__Impl rule__CubeDimensionEntityEntity__Group__7
+            {
+            pushFollow(FOLLOW_25);
+            rule__CubeDimensionEntityEntity__Group__6__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionEntityEntity__Group__7();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntityEntity__Group__6"
+
+
+    // $ANTLR start "rule__CubeDimensionEntityEntity__Group__6__Impl"
+    // InternalCubeDSL.g:5606:1: rule__CubeDimensionEntityEntity__Group__6__Impl : ( ( rule__CubeDimensionEntityEntity__DimEntityAssignment_6 )? ) ;
+    public final void rule__CubeDimensionEntityEntity__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5610:1: ( ( ( rule__CubeDimensionEntityEntity__DimEntityAssignment_6 )? ) )
+            // InternalCubeDSL.g:5611:1: ( ( rule__CubeDimensionEntityEntity__DimEntityAssignment_6 )? )
+            {
+            // InternalCubeDSL.g:5611:1: ( ( rule__CubeDimensionEntityEntity__DimEntityAssignment_6 )? )
+            // InternalCubeDSL.g:5612:2: ( rule__CubeDimensionEntityEntity__DimEntityAssignment_6 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityEntityAccess().getDimEntityAssignment_6()); 
+            }
+            // InternalCubeDSL.g:5613:2: ( rule__CubeDimensionEntityEntity__DimEntityAssignment_6 )?
+            int alt66=2;
+            int LA66_0 = input.LA(1);
+
+            if ( (LA66_0==81) ) {
+                alt66=1;
+            }
+            switch (alt66) {
+                case 1 :
+                    // InternalCubeDSL.g:5613:3: rule__CubeDimensionEntityEntity__DimEntityAssignment_6
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__CubeDimensionEntityEntity__DimEntityAssignment_6();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityEntityAccess().getDimEntityAssignment_6()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntityEntity__Group__6__Impl"
+
+
+    // $ANTLR start "rule__CubeDimensionEntityEntity__Group__7"
+    // InternalCubeDSL.g:5621:1: rule__CubeDimensionEntityEntity__Group__7 : rule__CubeDimensionEntityEntity__Group__7__Impl ;
+    public final void rule__CubeDimensionEntityEntity__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5625:1: ( rule__CubeDimensionEntityEntity__Group__7__Impl )
+            // InternalCubeDSL.g:5626:2: rule__CubeDimensionEntityEntity__Group__7__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeDimensionEntityEntity__Group__7__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntityEntity__Group__7"
+
+
+    // $ANTLR start "rule__CubeDimensionEntityEntity__Group__7__Impl"
+    // InternalCubeDSL.g:5632:1: rule__CubeDimensionEntityEntity__Group__7__Impl : ( '}' ) ;
+    public final void rule__CubeDimensionEntityEntity__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5636:1: ( ( '}' ) )
+            // InternalCubeDSL.g:5637:1: ( '}' )
+            {
+            // InternalCubeDSL.g:5637:1: ( '}' )
+            // InternalCubeDSL.g:5638:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityEntityAccess().getRightCurlyBracketKeyword_7()); 
+            }
+            match(input,75,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityEntityAccess().getRightCurlyBracketKeyword_7()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntityEntity__Group__7__Impl"
+
+
+    // $ANTLR start "rule__CubeLevel__Group__0"
+    // InternalCubeDSL.g:5648:1: rule__CubeLevel__Group__0 : rule__CubeLevel__Group__0__Impl rule__CubeLevel__Group__1 ;
+    public final void rule__CubeLevel__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5652:1: ( rule__CubeLevel__Group__0__Impl rule__CubeLevel__Group__1 )
+            // InternalCubeDSL.g:5653:2: rule__CubeLevel__Group__0__Impl rule__CubeLevel__Group__1
+            {
+            pushFollow(FOLLOW_6);
+            rule__CubeLevel__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeLevel__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group__0"
+
+
+    // $ANTLR start "rule__CubeLevel__Group__0__Impl"
+    // InternalCubeDSL.g:5660:1: rule__CubeLevel__Group__0__Impl : ( 'level' ) ;
+    public final void rule__CubeLevel__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5664:1: ( ( 'level' ) )
+            // InternalCubeDSL.g:5665:1: ( 'level' )
+            {
+            // InternalCubeDSL.g:5665:1: ( 'level' )
+            // InternalCubeDSL.g:5666:2: 'level'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getLevelKeyword_0()); 
+            }
+            match(input,82,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getLevelKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group__0__Impl"
+
+
+    // $ANTLR start "rule__CubeLevel__Group__1"
+    // InternalCubeDSL.g:5675:1: rule__CubeLevel__Group__1 : rule__CubeLevel__Group__1__Impl rule__CubeLevel__Group__2 ;
+    public final void rule__CubeLevel__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5679:1: ( rule__CubeLevel__Group__1__Impl rule__CubeLevel__Group__2 )
+            // InternalCubeDSL.g:5680:2: rule__CubeLevel__Group__1__Impl rule__CubeLevel__Group__2
+            {
+            pushFollow(FOLLOW_27);
+            rule__CubeLevel__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeLevel__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group__1"
+
+
+    // $ANTLR start "rule__CubeLevel__Group__1__Impl"
+    // InternalCubeDSL.g:5687:1: rule__CubeLevel__Group__1__Impl : ( ( rule__CubeLevel__NameAssignment_1 ) ) ;
+    public final void rule__CubeLevel__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5691:1: ( ( ( rule__CubeLevel__NameAssignment_1 ) ) )
+            // InternalCubeDSL.g:5692:1: ( ( rule__CubeLevel__NameAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:5692:1: ( ( rule__CubeLevel__NameAssignment_1 ) )
+            // InternalCubeDSL.g:5693:2: ( rule__CubeLevel__NameAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getNameAssignment_1()); 
+            }
+            // InternalCubeDSL.g:5694:2: ( rule__CubeLevel__NameAssignment_1 )
+            // InternalCubeDSL.g:5694:3: rule__CubeLevel__NameAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeLevel__NameAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getNameAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group__1__Impl"
+
+
+    // $ANTLR start "rule__CubeLevel__Group__2"
+    // InternalCubeDSL.g:5702:1: rule__CubeLevel__Group__2 : rule__CubeLevel__Group__2__Impl rule__CubeLevel__Group__3 ;
+    public final void rule__CubeLevel__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5706:1: ( rule__CubeLevel__Group__2__Impl rule__CubeLevel__Group__3 )
+            // InternalCubeDSL.g:5707:2: rule__CubeLevel__Group__2__Impl rule__CubeLevel__Group__3
+            {
+            pushFollow(FOLLOW_6);
+            rule__CubeLevel__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeLevel__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group__2"
+
+
+    // $ANTLR start "rule__CubeLevel__Group__2__Impl"
+    // InternalCubeDSL.g:5714:1: rule__CubeLevel__Group__2__Impl : ( 'column' ) ;
+    public final void rule__CubeLevel__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5718:1: ( ( 'column' ) )
+            // InternalCubeDSL.g:5719:1: ( 'column' )
+            {
+            // InternalCubeDSL.g:5719:1: ( 'column' )
+            // InternalCubeDSL.g:5720:2: 'column'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getColumnKeyword_2()); 
+            }
+            match(input,83,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getColumnKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group__2__Impl"
+
+
+    // $ANTLR start "rule__CubeLevel__Group__3"
+    // InternalCubeDSL.g:5729:1: rule__CubeLevel__Group__3 : rule__CubeLevel__Group__3__Impl rule__CubeLevel__Group__4 ;
+    public final void rule__CubeLevel__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5733:1: ( rule__CubeLevel__Group__3__Impl rule__CubeLevel__Group__4 )
+            // InternalCubeDSL.g:5734:2: rule__CubeLevel__Group__3__Impl rule__CubeLevel__Group__4
+            {
+            pushFollow(FOLLOW_28);
+            rule__CubeLevel__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeLevel__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group__3"
+
+
+    // $ANTLR start "rule__CubeLevel__Group__3__Impl"
+    // InternalCubeDSL.g:5741:1: rule__CubeLevel__Group__3__Impl : ( ( rule__CubeLevel__LevelColValueAssignment_3 ) ) ;
+    public final void rule__CubeLevel__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5745:1: ( ( ( rule__CubeLevel__LevelColValueAssignment_3 ) ) )
+            // InternalCubeDSL.g:5746:1: ( ( rule__CubeLevel__LevelColValueAssignment_3 ) )
+            {
+            // InternalCubeDSL.g:5746:1: ( ( rule__CubeLevel__LevelColValueAssignment_3 ) )
+            // InternalCubeDSL.g:5747:2: ( rule__CubeLevel__LevelColValueAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getLevelColValueAssignment_3()); 
+            }
+            // InternalCubeDSL.g:5748:2: ( rule__CubeLevel__LevelColValueAssignment_3 )
+            // InternalCubeDSL.g:5748:3: rule__CubeLevel__LevelColValueAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeLevel__LevelColValueAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getLevelColValueAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group__3__Impl"
+
+
+    // $ANTLR start "rule__CubeLevel__Group__4"
+    // InternalCubeDSL.g:5756:1: rule__CubeLevel__Group__4 : rule__CubeLevel__Group__4__Impl rule__CubeLevel__Group__5 ;
+    public final void rule__CubeLevel__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5760:1: ( rule__CubeLevel__Group__4__Impl rule__CubeLevel__Group__5 )
+            // InternalCubeDSL.g:5761:2: rule__CubeLevel__Group__4__Impl rule__CubeLevel__Group__5
+            {
+            pushFollow(FOLLOW_28);
+            rule__CubeLevel__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeLevel__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group__4"
+
+
+    // $ANTLR start "rule__CubeLevel__Group__4__Impl"
+    // InternalCubeDSL.g:5768:1: rule__CubeLevel__Group__4__Impl : ( ( rule__CubeLevel__UniqueMembersAssignment_4 )? ) ;
+    public final void rule__CubeLevel__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5772:1: ( ( ( rule__CubeLevel__UniqueMembersAssignment_4 )? ) )
+            // InternalCubeDSL.g:5773:1: ( ( rule__CubeLevel__UniqueMembersAssignment_4 )? )
+            {
+            // InternalCubeDSL.g:5773:1: ( ( rule__CubeLevel__UniqueMembersAssignment_4 )? )
+            // InternalCubeDSL.g:5774:2: ( rule__CubeLevel__UniqueMembersAssignment_4 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getUniqueMembersAssignment_4()); 
+            }
+            // InternalCubeDSL.g:5775:2: ( rule__CubeLevel__UniqueMembersAssignment_4 )?
+            int alt67=2;
+            int LA67_0 = input.LA(1);
+
+            if ( (LA67_0==122) ) {
+                alt67=1;
+            }
+            switch (alt67) {
+                case 1 :
+                    // InternalCubeDSL.g:5775:3: rule__CubeLevel__UniqueMembersAssignment_4
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__CubeLevel__UniqueMembersAssignment_4();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getUniqueMembersAssignment_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group__4__Impl"
+
+
+    // $ANTLR start "rule__CubeLevel__Group__5"
+    // InternalCubeDSL.g:5783:1: rule__CubeLevel__Group__5 : rule__CubeLevel__Group__5__Impl rule__CubeLevel__Group__6 ;
+    public final void rule__CubeLevel__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5787:1: ( rule__CubeLevel__Group__5__Impl rule__CubeLevel__Group__6 )
+            // InternalCubeDSL.g:5788:2: rule__CubeLevel__Group__5__Impl rule__CubeLevel__Group__6
+            {
+            pushFollow(FOLLOW_28);
+            rule__CubeLevel__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeLevel__Group__6();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group__5"
+
+
+    // $ANTLR start "rule__CubeLevel__Group__5__Impl"
+    // InternalCubeDSL.g:5795:1: rule__CubeLevel__Group__5__Impl : ( ( rule__CubeLevel__Group_5__0 )? ) ;
+    public final void rule__CubeLevel__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5799:1: ( ( ( rule__CubeLevel__Group_5__0 )? ) )
+            // InternalCubeDSL.g:5800:1: ( ( rule__CubeLevel__Group_5__0 )? )
+            {
+            // InternalCubeDSL.g:5800:1: ( ( rule__CubeLevel__Group_5__0 )? )
+            // InternalCubeDSL.g:5801:2: ( rule__CubeLevel__Group_5__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getGroup_5()); 
+            }
+            // InternalCubeDSL.g:5802:2: ( rule__CubeLevel__Group_5__0 )?
+            int alt68=2;
+            int LA68_0 = input.LA(1);
+
+            if ( (LA68_0==123) ) {
+                alt68=1;
+            }
+            switch (alt68) {
+                case 1 :
+                    // InternalCubeDSL.g:5802:3: rule__CubeLevel__Group_5__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__CubeLevel__Group_5__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getGroup_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group__5__Impl"
+
+
+    // $ANTLR start "rule__CubeLevel__Group__6"
+    // InternalCubeDSL.g:5810:1: rule__CubeLevel__Group__6 : rule__CubeLevel__Group__6__Impl ;
+    public final void rule__CubeLevel__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5814:1: ( rule__CubeLevel__Group__6__Impl )
+            // InternalCubeDSL.g:5815:2: rule__CubeLevel__Group__6__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeLevel__Group__6__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group__6"
+
+
+    // $ANTLR start "rule__CubeLevel__Group__6__Impl"
+    // InternalCubeDSL.g:5821:1: rule__CubeLevel__Group__6__Impl : ( ( rule__CubeLevel__Group_6__0 )? ) ;
+    public final void rule__CubeLevel__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5825:1: ( ( ( rule__CubeLevel__Group_6__0 )? ) )
+            // InternalCubeDSL.g:5826:1: ( ( rule__CubeLevel__Group_6__0 )? )
+            {
+            // InternalCubeDSL.g:5826:1: ( ( rule__CubeLevel__Group_6__0 )? )
+            // InternalCubeDSL.g:5827:2: ( rule__CubeLevel__Group_6__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getGroup_6()); 
+            }
+            // InternalCubeDSL.g:5828:2: ( rule__CubeLevel__Group_6__0 )?
+            int alt69=2;
+            int LA69_0 = input.LA(1);
+
+            if ( (LA69_0==74) ) {
+                alt69=1;
+            }
+            switch (alt69) {
+                case 1 :
+                    // InternalCubeDSL.g:5828:3: rule__CubeLevel__Group_6__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__CubeLevel__Group_6__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getGroup_6()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group__6__Impl"
+
+
+    // $ANTLR start "rule__CubeLevel__Group_5__0"
+    // InternalCubeDSL.g:5837:1: rule__CubeLevel__Group_5__0 : rule__CubeLevel__Group_5__0__Impl rule__CubeLevel__Group_5__1 ;
+    public final void rule__CubeLevel__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5841:1: ( rule__CubeLevel__Group_5__0__Impl rule__CubeLevel__Group_5__1 )
+            // InternalCubeDSL.g:5842:2: rule__CubeLevel__Group_5__0__Impl rule__CubeLevel__Group_5__1
+            {
+            pushFollow(FOLLOW_29);
+            rule__CubeLevel__Group_5__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeLevel__Group_5__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group_5__0"
+
+
+    // $ANTLR start "rule__CubeLevel__Group_5__0__Impl"
+    // InternalCubeDSL.g:5849:1: rule__CubeLevel__Group_5__0__Impl : ( ( rule__CubeLevel__LevelTypeAssignment_5_0 ) ) ;
+    public final void rule__CubeLevel__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5853:1: ( ( ( rule__CubeLevel__LevelTypeAssignment_5_0 ) ) )
+            // InternalCubeDSL.g:5854:1: ( ( rule__CubeLevel__LevelTypeAssignment_5_0 ) )
+            {
+            // InternalCubeDSL.g:5854:1: ( ( rule__CubeLevel__LevelTypeAssignment_5_0 ) )
+            // InternalCubeDSL.g:5855:2: ( rule__CubeLevel__LevelTypeAssignment_5_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getLevelTypeAssignment_5_0()); 
+            }
+            // InternalCubeDSL.g:5856:2: ( rule__CubeLevel__LevelTypeAssignment_5_0 )
+            // InternalCubeDSL.g:5856:3: rule__CubeLevel__LevelTypeAssignment_5_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeLevel__LevelTypeAssignment_5_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getLevelTypeAssignment_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__CubeLevel__Group_5__1"
+    // InternalCubeDSL.g:5864:1: rule__CubeLevel__Group_5__1 : rule__CubeLevel__Group_5__1__Impl ;
+    public final void rule__CubeLevel__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5868:1: ( rule__CubeLevel__Group_5__1__Impl )
+            // InternalCubeDSL.g:5869:2: rule__CubeLevel__Group_5__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeLevel__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__CubeLevel__Group_5__1"
+
+
+    // $ANTLR start "rule__CubeLevel__Group_5__1__Impl"
+    // InternalCubeDSL.g:5875:1: rule__CubeLevel__Group_5__1__Impl : ( ( rule__CubeLevel__LevelTypeValueAssignment_5_1 ) ) ;
+    public final void rule__CubeLevel__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5879:1: ( ( ( rule__CubeLevel__LevelTypeValueAssignment_5_1 ) ) )
+            // InternalCubeDSL.g:5880:1: ( ( rule__CubeLevel__LevelTypeValueAssignment_5_1 ) )
+            {
+            // InternalCubeDSL.g:5880:1: ( ( rule__CubeLevel__LevelTypeValueAssignment_5_1 ) )
+            // InternalCubeDSL.g:5881:2: ( rule__CubeLevel__LevelTypeValueAssignment_5_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getLevelTypeValueAssignment_5_1()); 
+            }
+            // InternalCubeDSL.g:5882:2: ( rule__CubeLevel__LevelTypeValueAssignment_5_1 )
+            // InternalCubeDSL.g:5882:3: rule__CubeLevel__LevelTypeValueAssignment_5_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeLevel__LevelTypeValueAssignment_5_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getLevelTypeValueAssignment_5_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__CubeLevel__Group_6__0"
+    // InternalCubeDSL.g:5891:1: rule__CubeLevel__Group_6__0 : rule__CubeLevel__Group_6__0__Impl rule__CubeLevel__Group_6__1 ;
+    public final void rule__CubeLevel__Group_6__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5895:1: ( rule__CubeLevel__Group_6__0__Impl rule__CubeLevel__Group_6__1 )
+            // InternalCubeDSL.g:5896:2: rule__CubeLevel__Group_6__0__Impl rule__CubeLevel__Group_6__1
+            {
+            pushFollow(FOLLOW_30);
+            rule__CubeLevel__Group_6__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeLevel__Group_6__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group_6__0"
+
+
+    // $ANTLR start "rule__CubeLevel__Group_6__0__Impl"
+    // InternalCubeDSL.g:5903:1: rule__CubeLevel__Group_6__0__Impl : ( '{' ) ;
+    public final void rule__CubeLevel__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5907:1: ( ( '{' ) )
+            // InternalCubeDSL.g:5908:1: ( '{' )
+            {
+            // InternalCubeDSL.g:5908:1: ( '{' )
+            // InternalCubeDSL.g:5909:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getLeftCurlyBracketKeyword_6_0()); 
+            }
+            match(input,74,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getLeftCurlyBracketKeyword_6_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group_6__0__Impl"
+
+
+    // $ANTLR start "rule__CubeLevel__Group_6__1"
+    // InternalCubeDSL.g:5918:1: rule__CubeLevel__Group_6__1 : rule__CubeLevel__Group_6__1__Impl rule__CubeLevel__Group_6__2 ;
+    public final void rule__CubeLevel__Group_6__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5922:1: ( rule__CubeLevel__Group_6__1__Impl rule__CubeLevel__Group_6__2 )
+            // InternalCubeDSL.g:5923:2: rule__CubeLevel__Group_6__1__Impl rule__CubeLevel__Group_6__2
+            {
+            pushFollow(FOLLOW_30);
+            rule__CubeLevel__Group_6__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeLevel__Group_6__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group_6__1"
+
+
+    // $ANTLR start "rule__CubeLevel__Group_6__1__Impl"
+    // InternalCubeDSL.g:5930:1: rule__CubeLevel__Group_6__1__Impl : ( ( rule__CubeLevel__PropertiesAssignment_6_1 )* ) ;
+    public final void rule__CubeLevel__Group_6__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5934:1: ( ( ( rule__CubeLevel__PropertiesAssignment_6_1 )* ) )
+            // InternalCubeDSL.g:5935:1: ( ( rule__CubeLevel__PropertiesAssignment_6_1 )* )
+            {
+            // InternalCubeDSL.g:5935:1: ( ( rule__CubeLevel__PropertiesAssignment_6_1 )* )
+            // InternalCubeDSL.g:5936:2: ( rule__CubeLevel__PropertiesAssignment_6_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getPropertiesAssignment_6_1()); 
+            }
+            // InternalCubeDSL.g:5937:2: ( rule__CubeLevel__PropertiesAssignment_6_1 )*
+            loop70:
+            do {
+                int alt70=2;
+                int LA70_0 = input.LA(1);
+
+                if ( (LA70_0==84) ) {
+                    alt70=1;
+                }
+
+
+                switch (alt70) {
+            	case 1 :
+            	    // InternalCubeDSL.g:5937:3: rule__CubeLevel__PropertiesAssignment_6_1
+            	    {
+            	    pushFollow(FOLLOW_31);
+            	    rule__CubeLevel__PropertiesAssignment_6_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop70;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getPropertiesAssignment_6_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group_6__1__Impl"
+
+
+    // $ANTLR start "rule__CubeLevel__Group_6__2"
+    // InternalCubeDSL.g:5945:1: rule__CubeLevel__Group_6__2 : rule__CubeLevel__Group_6__2__Impl ;
+    public final void rule__CubeLevel__Group_6__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5949:1: ( rule__CubeLevel__Group_6__2__Impl )
+            // InternalCubeDSL.g:5950:2: rule__CubeLevel__Group_6__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeLevel__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__CubeLevel__Group_6__2"
+
+
+    // $ANTLR start "rule__CubeLevel__Group_6__2__Impl"
+    // InternalCubeDSL.g:5956:1: rule__CubeLevel__Group_6__2__Impl : ( '}' ) ;
+    public final void rule__CubeLevel__Group_6__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5960:1: ( ( '}' ) )
+            // InternalCubeDSL.g:5961:1: ( '}' )
+            {
+            // InternalCubeDSL.g:5961:1: ( '}' )
+            // InternalCubeDSL.g:5962:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getRightCurlyBracketKeyword_6_2()); 
+            }
+            match(input,75,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getRightCurlyBracketKeyword_6_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__Group_6__2__Impl"
+
+
+    // $ANTLR start "rule__CubeLevelProp__Group__0"
+    // InternalCubeDSL.g:5972:1: rule__CubeLevelProp__Group__0 : rule__CubeLevelProp__Group__0__Impl rule__CubeLevelProp__Group__1 ;
+    public final void rule__CubeLevelProp__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5976:1: ( rule__CubeLevelProp__Group__0__Impl rule__CubeLevelProp__Group__1 )
+            // InternalCubeDSL.g:5977:2: rule__CubeLevelProp__Group__0__Impl rule__CubeLevelProp__Group__1
+            {
+            pushFollow(FOLLOW_6);
+            rule__CubeLevelProp__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeLevelProp__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevelProp__Group__0"
+
+
+    // $ANTLR start "rule__CubeLevelProp__Group__0__Impl"
+    // InternalCubeDSL.g:5984:1: rule__CubeLevelProp__Group__0__Impl : ( 'property' ) ;
+    public final void rule__CubeLevelProp__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:5988:1: ( ( 'property' ) )
+            // InternalCubeDSL.g:5989:1: ( 'property' )
+            {
+            // InternalCubeDSL.g:5989:1: ( 'property' )
+            // InternalCubeDSL.g:5990:2: 'property'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelPropAccess().getPropertyKeyword_0()); 
+            }
+            match(input,84,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelPropAccess().getPropertyKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevelProp__Group__0__Impl"
+
+
+    // $ANTLR start "rule__CubeLevelProp__Group__1"
+    // InternalCubeDSL.g:5999:1: rule__CubeLevelProp__Group__1 : rule__CubeLevelProp__Group__1__Impl rule__CubeLevelProp__Group__2 ;
+    public final void rule__CubeLevelProp__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6003:1: ( rule__CubeLevelProp__Group__1__Impl rule__CubeLevelProp__Group__2 )
+            // InternalCubeDSL.g:6004:2: rule__CubeLevelProp__Group__1__Impl rule__CubeLevelProp__Group__2
+            {
+            pushFollow(FOLLOW_27);
+            rule__CubeLevelProp__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeLevelProp__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevelProp__Group__1"
+
+
+    // $ANTLR start "rule__CubeLevelProp__Group__1__Impl"
+    // InternalCubeDSL.g:6011:1: rule__CubeLevelProp__Group__1__Impl : ( ( rule__CubeLevelProp__NameAssignment_1 ) ) ;
+    public final void rule__CubeLevelProp__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6015:1: ( ( ( rule__CubeLevelProp__NameAssignment_1 ) ) )
+            // InternalCubeDSL.g:6016:1: ( ( rule__CubeLevelProp__NameAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:6016:1: ( ( rule__CubeLevelProp__NameAssignment_1 ) )
+            // InternalCubeDSL.g:6017:2: ( rule__CubeLevelProp__NameAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelPropAccess().getNameAssignment_1()); 
+            }
+            // InternalCubeDSL.g:6018:2: ( rule__CubeLevelProp__NameAssignment_1 )
+            // InternalCubeDSL.g:6018:3: rule__CubeLevelProp__NameAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeLevelProp__NameAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelPropAccess().getNameAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevelProp__Group__1__Impl"
+
+
+    // $ANTLR start "rule__CubeLevelProp__Group__2"
+    // InternalCubeDSL.g:6026:1: rule__CubeLevelProp__Group__2 : rule__CubeLevelProp__Group__2__Impl rule__CubeLevelProp__Group__3 ;
+    public final void rule__CubeLevelProp__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6030:1: ( rule__CubeLevelProp__Group__2__Impl rule__CubeLevelProp__Group__3 )
+            // InternalCubeDSL.g:6031:2: rule__CubeLevelProp__Group__2__Impl rule__CubeLevelProp__Group__3
+            {
+            pushFollow(FOLLOW_6);
+            rule__CubeLevelProp__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeLevelProp__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevelProp__Group__2"
+
+
+    // $ANTLR start "rule__CubeLevelProp__Group__2__Impl"
+    // InternalCubeDSL.g:6038:1: rule__CubeLevelProp__Group__2__Impl : ( 'column' ) ;
+    public final void rule__CubeLevelProp__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6042:1: ( ( 'column' ) )
+            // InternalCubeDSL.g:6043:1: ( 'column' )
+            {
+            // InternalCubeDSL.g:6043:1: ( 'column' )
+            // InternalCubeDSL.g:6044:2: 'column'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelPropAccess().getColumnKeyword_2()); 
+            }
+            match(input,83,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelPropAccess().getColumnKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevelProp__Group__2__Impl"
+
+
+    // $ANTLR start "rule__CubeLevelProp__Group__3"
+    // InternalCubeDSL.g:6053:1: rule__CubeLevelProp__Group__3 : rule__CubeLevelProp__Group__3__Impl rule__CubeLevelProp__Group__4 ;
+    public final void rule__CubeLevelProp__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6057:1: ( rule__CubeLevelProp__Group__3__Impl rule__CubeLevelProp__Group__4 )
+            // InternalCubeDSL.g:6058:2: rule__CubeLevelProp__Group__3__Impl rule__CubeLevelProp__Group__4
+            {
+            pushFollow(FOLLOW_32);
+            rule__CubeLevelProp__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeLevelProp__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevelProp__Group__3"
+
+
+    // $ANTLR start "rule__CubeLevelProp__Group__3__Impl"
+    // InternalCubeDSL.g:6065:1: rule__CubeLevelProp__Group__3__Impl : ( ( rule__CubeLevelProp__LevelPropColValueAssignment_3 ) ) ;
+    public final void rule__CubeLevelProp__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6069:1: ( ( ( rule__CubeLevelProp__LevelPropColValueAssignment_3 ) ) )
+            // InternalCubeDSL.g:6070:1: ( ( rule__CubeLevelProp__LevelPropColValueAssignment_3 ) )
+            {
+            // InternalCubeDSL.g:6070:1: ( ( rule__CubeLevelProp__LevelPropColValueAssignment_3 ) )
+            // InternalCubeDSL.g:6071:2: ( rule__CubeLevelProp__LevelPropColValueAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueAssignment_3()); 
+            }
+            // InternalCubeDSL.g:6072:2: ( rule__CubeLevelProp__LevelPropColValueAssignment_3 )
+            // InternalCubeDSL.g:6072:3: rule__CubeLevelProp__LevelPropColValueAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeLevelProp__LevelPropColValueAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevelProp__Group__3__Impl"
+
+
+    // $ANTLR start "rule__CubeLevelProp__Group__4"
+    // InternalCubeDSL.g:6080:1: rule__CubeLevelProp__Group__4 : rule__CubeLevelProp__Group__4__Impl ;
+    public final void rule__CubeLevelProp__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6084:1: ( rule__CubeLevelProp__Group__4__Impl )
+            // InternalCubeDSL.g:6085:2: rule__CubeLevelProp__Group__4__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeLevelProp__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevelProp__Group__4"
+
+
+    // $ANTLR start "rule__CubeLevelProp__Group__4__Impl"
+    // InternalCubeDSL.g:6091:1: rule__CubeLevelProp__Group__4__Impl : ( ( rule__CubeLevelProp__Group_4__0 )? ) ;
+    public final void rule__CubeLevelProp__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6095:1: ( ( ( rule__CubeLevelProp__Group_4__0 )? ) )
+            // InternalCubeDSL.g:6096:1: ( ( rule__CubeLevelProp__Group_4__0 )? )
+            {
+            // InternalCubeDSL.g:6096:1: ( ( rule__CubeLevelProp__Group_4__0 )? )
+            // InternalCubeDSL.g:6097:2: ( rule__CubeLevelProp__Group_4__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelPropAccess().getGroup_4()); 
+            }
+            // InternalCubeDSL.g:6098:2: ( rule__CubeLevelProp__Group_4__0 )?
+            int alt71=2;
+            int LA71_0 = input.LA(1);
+
+            if ( (LA71_0==124) ) {
+                alt71=1;
+            }
+            switch (alt71) {
+                case 1 :
+                    // InternalCubeDSL.g:6098:3: rule__CubeLevelProp__Group_4__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__CubeLevelProp__Group_4__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelPropAccess().getGroup_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevelProp__Group__4__Impl"
+
+
+    // $ANTLR start "rule__CubeLevelProp__Group_4__0"
+    // InternalCubeDSL.g:6107:1: rule__CubeLevelProp__Group_4__0 : rule__CubeLevelProp__Group_4__0__Impl rule__CubeLevelProp__Group_4__1 ;
+    public final void rule__CubeLevelProp__Group_4__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6111:1: ( rule__CubeLevelProp__Group_4__0__Impl rule__CubeLevelProp__Group_4__1 )
+            // InternalCubeDSL.g:6112:2: rule__CubeLevelProp__Group_4__0__Impl rule__CubeLevelProp__Group_4__1
+            {
+            pushFollow(FOLLOW_33);
+            rule__CubeLevelProp__Group_4__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeLevelProp__Group_4__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevelProp__Group_4__0"
+
+
+    // $ANTLR start "rule__CubeLevelProp__Group_4__0__Impl"
+    // InternalCubeDSL.g:6119:1: rule__CubeLevelProp__Group_4__0__Impl : ( ( rule__CubeLevelProp__TypeAssignment_4_0 ) ) ;
+    public final void rule__CubeLevelProp__Group_4__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6123:1: ( ( ( rule__CubeLevelProp__TypeAssignment_4_0 ) ) )
+            // InternalCubeDSL.g:6124:1: ( ( rule__CubeLevelProp__TypeAssignment_4_0 ) )
+            {
+            // InternalCubeDSL.g:6124:1: ( ( rule__CubeLevelProp__TypeAssignment_4_0 ) )
+            // InternalCubeDSL.g:6125:2: ( rule__CubeLevelProp__TypeAssignment_4_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelPropAccess().getTypeAssignment_4_0()); 
+            }
+            // InternalCubeDSL.g:6126:2: ( rule__CubeLevelProp__TypeAssignment_4_0 )
+            // InternalCubeDSL.g:6126:3: rule__CubeLevelProp__TypeAssignment_4_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeLevelProp__TypeAssignment_4_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelPropAccess().getTypeAssignment_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevelProp__Group_4__0__Impl"
+
+
+    // $ANTLR start "rule__CubeLevelProp__Group_4__1"
+    // InternalCubeDSL.g:6134:1: rule__CubeLevelProp__Group_4__1 : rule__CubeLevelProp__Group_4__1__Impl ;
+    public final void rule__CubeLevelProp__Group_4__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6138:1: ( rule__CubeLevelProp__Group_4__1__Impl )
+            // InternalCubeDSL.g:6139:2: rule__CubeLevelProp__Group_4__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeLevelProp__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__CubeLevelProp__Group_4__1"
+
+
+    // $ANTLR start "rule__CubeLevelProp__Group_4__1__Impl"
+    // InternalCubeDSL.g:6145:1: rule__CubeLevelProp__Group_4__1__Impl : ( ( rule__CubeLevelProp__TypeValueAssignment_4_1 ) ) ;
+    public final void rule__CubeLevelProp__Group_4__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6149:1: ( ( ( rule__CubeLevelProp__TypeValueAssignment_4_1 ) ) )
+            // InternalCubeDSL.g:6150:1: ( ( rule__CubeLevelProp__TypeValueAssignment_4_1 ) )
+            {
+            // InternalCubeDSL.g:6150:1: ( ( rule__CubeLevelProp__TypeValueAssignment_4_1 ) )
+            // InternalCubeDSL.g:6151:2: ( rule__CubeLevelProp__TypeValueAssignment_4_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelPropAccess().getTypeValueAssignment_4_1()); 
+            }
+            // InternalCubeDSL.g:6152:2: ( rule__CubeLevelProp__TypeValueAssignment_4_1 )
+            // InternalCubeDSL.g:6152:3: rule__CubeLevelProp__TypeValueAssignment_4_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeLevelProp__TypeValueAssignment_4_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelPropAccess().getTypeValueAssignment_4_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevelProp__Group_4__1__Impl"
+
+
+    // $ANTLR start "rule__CubeMeasure__Group__0"
+    // InternalCubeDSL.g:6161:1: rule__CubeMeasure__Group__0 : rule__CubeMeasure__Group__0__Impl rule__CubeMeasure__Group__1 ;
+    public final void rule__CubeMeasure__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6165:1: ( rule__CubeMeasure__Group__0__Impl rule__CubeMeasure__Group__1 )
+            // InternalCubeDSL.g:6166:2: rule__CubeMeasure__Group__0__Impl rule__CubeMeasure__Group__1
+            {
+            pushFollow(FOLLOW_6);
+            rule__CubeMeasure__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeMeasure__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeMeasure__Group__0"
+
+
+    // $ANTLR start "rule__CubeMeasure__Group__0__Impl"
+    // InternalCubeDSL.g:6173:1: rule__CubeMeasure__Group__0__Impl : ( 'measure' ) ;
+    public final void rule__CubeMeasure__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6177:1: ( ( 'measure' ) )
+            // InternalCubeDSL.g:6178:1: ( 'measure' )
+            {
+            // InternalCubeDSL.g:6178:1: ( 'measure' )
+            // InternalCubeDSL.g:6179:2: 'measure'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeMeasureAccess().getMeasureKeyword_0()); 
+            }
+            match(input,85,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeMeasureAccess().getMeasureKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeMeasure__Group__0__Impl"
+
+
+    // $ANTLR start "rule__CubeMeasure__Group__1"
+    // InternalCubeDSL.g:6188:1: rule__CubeMeasure__Group__1 : rule__CubeMeasure__Group__1__Impl rule__CubeMeasure__Group__2 ;
+    public final void rule__CubeMeasure__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6192:1: ( rule__CubeMeasure__Group__1__Impl rule__CubeMeasure__Group__2 )
+            // InternalCubeDSL.g:6193:2: rule__CubeMeasure__Group__1__Impl rule__CubeMeasure__Group__2
+            {
+            pushFollow(FOLLOW_34);
+            rule__CubeMeasure__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeMeasure__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeMeasure__Group__1"
+
+
+    // $ANTLR start "rule__CubeMeasure__Group__1__Impl"
+    // InternalCubeDSL.g:6200:1: rule__CubeMeasure__Group__1__Impl : ( ( rule__CubeMeasure__NameAssignment_1 ) ) ;
+    public final void rule__CubeMeasure__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6204:1: ( ( ( rule__CubeMeasure__NameAssignment_1 ) ) )
+            // InternalCubeDSL.g:6205:1: ( ( rule__CubeMeasure__NameAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:6205:1: ( ( rule__CubeMeasure__NameAssignment_1 ) )
+            // InternalCubeDSL.g:6206:2: ( rule__CubeMeasure__NameAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeMeasureAccess().getNameAssignment_1()); 
+            }
+            // InternalCubeDSL.g:6207:2: ( rule__CubeMeasure__NameAssignment_1 )
+            // InternalCubeDSL.g:6207:3: rule__CubeMeasure__NameAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeMeasure__NameAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeMeasureAccess().getNameAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeMeasure__Group__1__Impl"
+
+
+    // $ANTLR start "rule__CubeMeasure__Group__2"
+    // InternalCubeDSL.g:6215:1: rule__CubeMeasure__Group__2 : rule__CubeMeasure__Group__2__Impl rule__CubeMeasure__Group__3 ;
+    public final void rule__CubeMeasure__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6219:1: ( rule__CubeMeasure__Group__2__Impl rule__CubeMeasure__Group__3 )
+            // InternalCubeDSL.g:6220:2: rule__CubeMeasure__Group__2__Impl rule__CubeMeasure__Group__3
+            {
+            pushFollow(FOLLOW_27);
+            rule__CubeMeasure__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeMeasure__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeMeasure__Group__2"
+
+
+    // $ANTLR start "rule__CubeMeasure__Group__2__Impl"
+    // InternalCubeDSL.g:6227:1: rule__CubeMeasure__Group__2__Impl : ( ( rule__CubeMeasure__AggregatorAssignment_2 ) ) ;
+    public final void rule__CubeMeasure__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6231:1: ( ( ( rule__CubeMeasure__AggregatorAssignment_2 ) ) )
+            // InternalCubeDSL.g:6232:1: ( ( rule__CubeMeasure__AggregatorAssignment_2 ) )
+            {
+            // InternalCubeDSL.g:6232:1: ( ( rule__CubeMeasure__AggregatorAssignment_2 ) )
+            // InternalCubeDSL.g:6233:2: ( rule__CubeMeasure__AggregatorAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeMeasureAccess().getAggregatorAssignment_2()); 
+            }
+            // InternalCubeDSL.g:6234:2: ( rule__CubeMeasure__AggregatorAssignment_2 )
+            // InternalCubeDSL.g:6234:3: rule__CubeMeasure__AggregatorAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeMeasure__AggregatorAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeMeasureAccess().getAggregatorAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeMeasure__Group__2__Impl"
+
+
+    // $ANTLR start "rule__CubeMeasure__Group__3"
+    // InternalCubeDSL.g:6242:1: rule__CubeMeasure__Group__3 : rule__CubeMeasure__Group__3__Impl rule__CubeMeasure__Group__4 ;
+    public final void rule__CubeMeasure__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6246:1: ( rule__CubeMeasure__Group__3__Impl rule__CubeMeasure__Group__4 )
+            // InternalCubeDSL.g:6247:2: rule__CubeMeasure__Group__3__Impl rule__CubeMeasure__Group__4
+            {
+            pushFollow(FOLLOW_6);
+            rule__CubeMeasure__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeMeasure__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeMeasure__Group__3"
+
+
+    // $ANTLR start "rule__CubeMeasure__Group__3__Impl"
+    // InternalCubeDSL.g:6254:1: rule__CubeMeasure__Group__3__Impl : ( 'column' ) ;
+    public final void rule__CubeMeasure__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6258:1: ( ( 'column' ) )
+            // InternalCubeDSL.g:6259:1: ( 'column' )
+            {
+            // InternalCubeDSL.g:6259:1: ( 'column' )
+            // InternalCubeDSL.g:6260:2: 'column'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeMeasureAccess().getColumnKeyword_3()); 
+            }
+            match(input,83,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeMeasureAccess().getColumnKeyword_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeMeasure__Group__3__Impl"
+
+
+    // $ANTLR start "rule__CubeMeasure__Group__4"
+    // InternalCubeDSL.g:6269:1: rule__CubeMeasure__Group__4 : rule__CubeMeasure__Group__4__Impl rule__CubeMeasure__Group__5 ;
+    public final void rule__CubeMeasure__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6273:1: ( rule__CubeMeasure__Group__4__Impl rule__CubeMeasure__Group__5 )
+            // InternalCubeDSL.g:6274:2: rule__CubeMeasure__Group__4__Impl rule__CubeMeasure__Group__5
+            {
+            pushFollow(FOLLOW_35);
+            rule__CubeMeasure__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__CubeMeasure__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeMeasure__Group__4"
+
+
+    // $ANTLR start "rule__CubeMeasure__Group__4__Impl"
+    // InternalCubeDSL.g:6281:1: rule__CubeMeasure__Group__4__Impl : ( ( rule__CubeMeasure__MeasureColAssignment_4 ) ) ;
+    public final void rule__CubeMeasure__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6285:1: ( ( ( rule__CubeMeasure__MeasureColAssignment_4 ) ) )
+            // InternalCubeDSL.g:6286:1: ( ( rule__CubeMeasure__MeasureColAssignment_4 ) )
+            {
+            // InternalCubeDSL.g:6286:1: ( ( rule__CubeMeasure__MeasureColAssignment_4 ) )
+            // InternalCubeDSL.g:6287:2: ( rule__CubeMeasure__MeasureColAssignment_4 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeMeasureAccess().getMeasureColAssignment_4()); 
+            }
+            // InternalCubeDSL.g:6288:2: ( rule__CubeMeasure__MeasureColAssignment_4 )
+            // InternalCubeDSL.g:6288:3: rule__CubeMeasure__MeasureColAssignment_4
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeMeasure__MeasureColAssignment_4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeMeasureAccess().getMeasureColAssignment_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeMeasure__Group__4__Impl"
+
+
+    // $ANTLR start "rule__CubeMeasure__Group__5"
+    // InternalCubeDSL.g:6296:1: rule__CubeMeasure__Group__5 : rule__CubeMeasure__Group__5__Impl ;
+    public final void rule__CubeMeasure__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6300:1: ( rule__CubeMeasure__Group__5__Impl )
+            // InternalCubeDSL.g:6301:2: rule__CubeMeasure__Group__5__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__CubeMeasure__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeMeasure__Group__5"
+
+
+    // $ANTLR start "rule__CubeMeasure__Group__5__Impl"
+    // InternalCubeDSL.g:6307:1: rule__CubeMeasure__Group__5__Impl : ( ( rule__CubeMeasure__NotVisibleAssignment_5 )? ) ;
+    public final void rule__CubeMeasure__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6311:1: ( ( ( rule__CubeMeasure__NotVisibleAssignment_5 )? ) )
+            // InternalCubeDSL.g:6312:1: ( ( rule__CubeMeasure__NotVisibleAssignment_5 )? )
+            {
+            // InternalCubeDSL.g:6312:1: ( ( rule__CubeMeasure__NotVisibleAssignment_5 )? )
+            // InternalCubeDSL.g:6313:2: ( rule__CubeMeasure__NotVisibleAssignment_5 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeMeasureAccess().getNotVisibleAssignment_5()); 
+            }
+            // InternalCubeDSL.g:6314:2: ( rule__CubeMeasure__NotVisibleAssignment_5 )?
+            int alt72=2;
+            int LA72_0 = input.LA(1);
+
+            if ( (LA72_0==125) ) {
+                alt72=1;
+            }
+            switch (alt72) {
+                case 1 :
+                    // InternalCubeDSL.g:6314:3: rule__CubeMeasure__NotVisibleAssignment_5
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__CubeMeasure__NotVisibleAssignment_5();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeMeasureAccess().getNotVisibleAssignment_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeMeasure__Group__5__Impl"
+
+
+    // $ANTLR start "rule__LFQN__Group__0"
+    // InternalCubeDSL.g:6323:1: rule__LFQN__Group__0 : rule__LFQN__Group__0__Impl rule__LFQN__Group__1 ;
+    public final void rule__LFQN__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6327:1: ( rule__LFQN__Group__0__Impl rule__LFQN__Group__1 )
+            // InternalCubeDSL.g:6328:2: rule__LFQN__Group__0__Impl rule__LFQN__Group__1
+            {
+            pushFollow(FOLLOW_36);
+            rule__LFQN__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__LFQN__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LFQN__Group__0"
+
+
+    // $ANTLR start "rule__LFQN__Group__0__Impl"
+    // InternalCubeDSL.g:6335:1: rule__LFQN__Group__0__Impl : ( RULE_ID ) ;
+    public final void rule__LFQN__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6339:1: ( ( RULE_ID ) )
+            // InternalCubeDSL.g:6340:1: ( RULE_ID )
+            {
+            // InternalCubeDSL.g:6340:1: ( RULE_ID )
+            // InternalCubeDSL.g:6341:2: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getLFQNAccess().getIDTerminalRuleCall_0()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getLFQNAccess().getIDTerminalRuleCall_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LFQN__Group__0__Impl"
+
+
+    // $ANTLR start "rule__LFQN__Group__1"
+    // InternalCubeDSL.g:6350:1: rule__LFQN__Group__1 : rule__LFQN__Group__1__Impl ;
+    public final void rule__LFQN__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6354:1: ( rule__LFQN__Group__1__Impl )
+            // InternalCubeDSL.g:6355:2: rule__LFQN__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__LFQN__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LFQN__Group__1"
+
+
+    // $ANTLR start "rule__LFQN__Group__1__Impl"
+    // InternalCubeDSL.g:6361:1: rule__LFQN__Group__1__Impl : ( ( rule__LFQN__Group_1__0 )* ) ;
+    public final void rule__LFQN__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6365:1: ( ( ( rule__LFQN__Group_1__0 )* ) )
+            // InternalCubeDSL.g:6366:1: ( ( rule__LFQN__Group_1__0 )* )
+            {
+            // InternalCubeDSL.g:6366:1: ( ( rule__LFQN__Group_1__0 )* )
+            // InternalCubeDSL.g:6367:2: ( rule__LFQN__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getLFQNAccess().getGroup_1()); 
+            }
+            // InternalCubeDSL.g:6368:2: ( rule__LFQN__Group_1__0 )*
+            loop73:
+            do {
+                int alt73=2;
+                int LA73_0 = input.LA(1);
+
+                if ( (LA73_0==43) ) {
+                    alt73=1;
+                }
+
+
+                switch (alt73) {
+            	case 1 :
+            	    // InternalCubeDSL.g:6368:3: rule__LFQN__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_37);
+            	    rule__LFQN__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop73;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getLFQNAccess().getGroup_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LFQN__Group__1__Impl"
+
+
+    // $ANTLR start "rule__LFQN__Group_1__0"
+    // InternalCubeDSL.g:6377:1: rule__LFQN__Group_1__0 : rule__LFQN__Group_1__0__Impl rule__LFQN__Group_1__1 ;
+    public final void rule__LFQN__Group_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6381:1: ( rule__LFQN__Group_1__0__Impl rule__LFQN__Group_1__1 )
+            // InternalCubeDSL.g:6382:2: rule__LFQN__Group_1__0__Impl rule__LFQN__Group_1__1
+            {
+            pushFollow(FOLLOW_6);
+            rule__LFQN__Group_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__LFQN__Group_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LFQN__Group_1__0"
+
+
+    // $ANTLR start "rule__LFQN__Group_1__0__Impl"
+    // InternalCubeDSL.g:6389:1: rule__LFQN__Group_1__0__Impl : ( '.' ) ;
+    public final void rule__LFQN__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6393:1: ( ( '.' ) )
+            // InternalCubeDSL.g:6394:1: ( '.' )
+            {
+            // InternalCubeDSL.g:6394:1: ( '.' )
+            // InternalCubeDSL.g:6395:2: '.'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getLFQNAccess().getFullStopKeyword_1_0()); 
+            }
+            match(input,43,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getLFQNAccess().getFullStopKeyword_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LFQN__Group_1__0__Impl"
+
+
+    // $ANTLR start "rule__LFQN__Group_1__1"
+    // InternalCubeDSL.g:6404:1: rule__LFQN__Group_1__1 : rule__LFQN__Group_1__1__Impl ;
+    public final void rule__LFQN__Group_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6408:1: ( rule__LFQN__Group_1__1__Impl )
+            // InternalCubeDSL.g:6409:2: rule__LFQN__Group_1__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__LFQN__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__LFQN__Group_1__1"
+
+
+    // $ANTLR start "rule__LFQN__Group_1__1__Impl"
+    // InternalCubeDSL.g:6415:1: rule__LFQN__Group_1__1__Impl : ( RULE_ID ) ;
+    public final void rule__LFQN__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6419:1: ( ( RULE_ID ) )
+            // InternalCubeDSL.g:6420:1: ( RULE_ID )
+            {
+            // InternalCubeDSL.g:6420:1: ( RULE_ID )
+            // InternalCubeDSL.g:6421:2: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getLFQNAccess().getIDTerminalRuleCall_1_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getLFQNAccess().getIDTerminalRuleCall_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LFQN__Group_1__1__Impl"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group__0"
+    // InternalCubeDSL.g:6431: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 {
+            // InternalCubeDSL.g:6435:1: ( rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1 )
+            // InternalCubeDSL.g:6436:2: rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1
+            {
+            pushFollow(FOLLOW_38);
+            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"
+    // InternalCubeDSL.g:6443:1: rule__XImportDeclaration__Group__0__Impl : ( () ) ;
+    public final void rule__XImportDeclaration__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6447:1: ( ( () ) )
+            // InternalCubeDSL.g:6448:1: ( () )
+            {
+            // InternalCubeDSL.g:6448:1: ( () )
+            // InternalCubeDSL.g:6449:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getOXImportDeclarationAction_0()); 
+            }
+            // InternalCubeDSL.g:6450:2: ()
+            // InternalCubeDSL.g:6450: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"
+    // InternalCubeDSL.g:6458: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 {
+            // InternalCubeDSL.g:6462:1: ( rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2 )
+            // InternalCubeDSL.g:6463:2: rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2
+            {
+            pushFollow(FOLLOW_39);
+            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"
+    // InternalCubeDSL.g:6470:1: rule__XImportDeclaration__Group__1__Impl : ( 'import' ) ;
+    public final void rule__XImportDeclaration__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6474:1: ( ( 'import' ) )
+            // InternalCubeDSL.g:6475:1: ( 'import' )
+            {
+            // InternalCubeDSL.g:6475:1: ( 'import' )
+            // InternalCubeDSL.g:6476:2: 'import'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportKeyword_1()); 
+            }
+            match(input,47,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"
+    // InternalCubeDSL.g:6485: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 {
+            // InternalCubeDSL.g:6489:1: ( rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3 )
+            // InternalCubeDSL.g:6490:2: rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3
+            {
+            pushFollow(FOLLOW_40);
+            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"
+    // InternalCubeDSL.g:6497:1: rule__XImportDeclaration__Group__2__Impl : ( ( rule__XImportDeclaration__Alternatives_2 ) ) ;
+    public final void rule__XImportDeclaration__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6501:1: ( ( ( rule__XImportDeclaration__Alternatives_2 ) ) )
+            // InternalCubeDSL.g:6502:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
+            {
+            // InternalCubeDSL.g:6502:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
+            // InternalCubeDSL.g:6503:2: ( rule__XImportDeclaration__Alternatives_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getAlternatives_2()); 
+            }
+            // InternalCubeDSL.g:6504:2: ( rule__XImportDeclaration__Alternatives_2 )
+            // InternalCubeDSL.g:6504: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"
+    // InternalCubeDSL.g:6512:1: rule__XImportDeclaration__Group__3 : rule__XImportDeclaration__Group__3__Impl ;
+    public final void rule__XImportDeclaration__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6516:1: ( rule__XImportDeclaration__Group__3__Impl )
+            // InternalCubeDSL.g:6517: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"
+    // InternalCubeDSL.g:6523:1: rule__XImportDeclaration__Group__3__Impl : ( ( ';' )? ) ;
+    public final void rule__XImportDeclaration__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6527:1: ( ( ( ';' )? ) )
+            // InternalCubeDSL.g:6528:1: ( ( ';' )? )
+            {
+            // InternalCubeDSL.g:6528:1: ( ( ';' )? )
+            // InternalCubeDSL.g:6529:2: ( ';' )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3()); 
+            }
+            // InternalCubeDSL.g:6530:2: ( ';' )?
+            int alt74=2;
+            int LA74_0 = input.LA(1);
+
+            if ( (LA74_0==86) ) {
+                alt74=1;
+            }
+            switch (alt74) {
+                case 1 :
+                    // InternalCubeDSL.g:6530:3: ';'
+                    {
+                    match(input,86,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"
+    // InternalCubeDSL.g:6539: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 {
+            // InternalCubeDSL.g:6543:1: ( rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1 )
+            // InternalCubeDSL.g:6544:2: rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1
+            {
+            pushFollow(FOLLOW_41);
+            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"
+    // InternalCubeDSL.g:6551: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 {
+            // InternalCubeDSL.g:6555:1: ( ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) ) )
+            // InternalCubeDSL.g:6556:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
+            {
+            // InternalCubeDSL.g:6556:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
+            // InternalCubeDSL.g:6557:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_2_0_0()); 
+            }
+            // InternalCubeDSL.g:6558:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
+            // InternalCubeDSL.g:6558: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"
+    // InternalCubeDSL.g:6566: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 {
+            // InternalCubeDSL.g:6570:1: ( rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2 )
+            // InternalCubeDSL.g:6571:2: rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2
+            {
+            pushFollow(FOLLOW_41);
+            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"
+    // InternalCubeDSL.g:6578: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 {
+            // InternalCubeDSL.g:6582:1: ( ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? ) )
+            // InternalCubeDSL.g:6583:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
+            {
+            // InternalCubeDSL.g:6583:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
+            // InternalCubeDSL.g:6584:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_2_0_1()); 
+            }
+            // InternalCubeDSL.g:6585:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
+            int alt75=2;
+            int LA75_0 = input.LA(1);
+
+            if ( (LA75_0==48) ) {
+                alt75=1;
+            }
+            switch (alt75) {
+                case 1 :
+                    // InternalCubeDSL.g:6585: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"
+    // InternalCubeDSL.g:6593: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 {
+            // InternalCubeDSL.g:6597:1: ( rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3 )
+            // InternalCubeDSL.g:6598:2: rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3
+            {
+            pushFollow(FOLLOW_42);
+            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"
+    // InternalCubeDSL.g:6605: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 {
+            // InternalCubeDSL.g:6609:1: ( ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) ) )
+            // InternalCubeDSL.g:6610:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
+            {
+            // InternalCubeDSL.g:6610:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
+            // InternalCubeDSL.g:6611:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_0_2()); 
+            }
+            // InternalCubeDSL.g:6612:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
+            // InternalCubeDSL.g:6612: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"
+    // InternalCubeDSL.g:6620: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 {
+            // InternalCubeDSL.g:6624:1: ( rule__XImportDeclaration__Group_2_0__3__Impl )
+            // InternalCubeDSL.g:6625: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"
+    // InternalCubeDSL.g:6631: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 {
+            // InternalCubeDSL.g:6635:1: ( ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) ) )
+            // InternalCubeDSL.g:6636:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
+            {
+            // InternalCubeDSL.g:6636:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
+            // InternalCubeDSL.g:6637:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getAlternatives_2_0_3()); 
+            }
+            // InternalCubeDSL.g:6638:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
+            // InternalCubeDSL.g:6638: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"
+    // InternalCubeDSL.g:6647: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 {
+            // InternalCubeDSL.g:6651:1: ( rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1 )
+            // InternalCubeDSL.g:6652:2: rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1
+            {
+            pushFollow(FOLLOW_6);
+            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"
+    // InternalCubeDSL.g:6659: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 {
+            // InternalCubeDSL.g:6663:1: ( ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) ) )
+            // InternalCubeDSL.g:6664:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
+            {
+            // InternalCubeDSL.g:6664:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
+            // InternalCubeDSL.g:6665:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getFqnImportAssignment_2_3_0()); 
+            }
+            // InternalCubeDSL.g:6666:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
+            // InternalCubeDSL.g:6666: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"
+    // InternalCubeDSL.g:6674: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 {
+            // InternalCubeDSL.g:6678:1: ( rule__XImportDeclaration__Group_2_3__1__Impl )
+            // InternalCubeDSL.g:6679: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"
+    // InternalCubeDSL.g:6685: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 {
+            // InternalCubeDSL.g:6689:1: ( ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) ) )
+            // InternalCubeDSL.g:6690:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
+            {
+            // InternalCubeDSL.g:6690:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
+            // InternalCubeDSL.g:6691:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameAssignment_2_3_1()); 
+            }
+            // InternalCubeDSL.g:6692:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
+            // InternalCubeDSL.g:6692: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"
+    // InternalCubeDSL.g:6701: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 {
+            // InternalCubeDSL.g:6705:1: ( rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1 )
+            // InternalCubeDSL.g:6706:2: rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1
+            {
+            pushFollow(FOLLOW_43);
+            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"
+    // InternalCubeDSL.g:6713:1: rule__XAnnotation__Group__0__Impl : ( () ) ;
+    public final void rule__XAnnotation__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6717:1: ( ( () ) )
+            // InternalCubeDSL.g:6718:1: ( () )
+            {
+            // InternalCubeDSL.g:6718:1: ( () )
+            // InternalCubeDSL.g:6719:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getXAnnotationAction_0()); 
+            }
+            // InternalCubeDSL.g:6720:2: ()
+            // InternalCubeDSL.g:6720: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"
+    // InternalCubeDSL.g:6728: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 {
+            // InternalCubeDSL.g:6732:1: ( rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2 )
+            // InternalCubeDSL.g:6733:2: rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2
+            {
+            pushFollow(FOLLOW_6);
+            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"
+    // InternalCubeDSL.g:6740:1: rule__XAnnotation__Group__1__Impl : ( '@' ) ;
+    public final void rule__XAnnotation__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6744:1: ( ( '@' ) )
+            // InternalCubeDSL.g:6745:1: ( '@' )
+            {
+            // InternalCubeDSL.g:6745:1: ( '@' )
+            // InternalCubeDSL.g:6746:2: '@'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1()); 
+            }
+            match(input,87,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"
+    // InternalCubeDSL.g:6755: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 {
+            // InternalCubeDSL.g:6759:1: ( rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3 )
+            // InternalCubeDSL.g:6760:2: rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3
+            {
+            pushFollow(FOLLOW_44);
+            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"
+    // InternalCubeDSL.g:6767:1: rule__XAnnotation__Group__2__Impl : ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) ;
+    public final void rule__XAnnotation__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6771:1: ( ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) )
+            // InternalCubeDSL.g:6772:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
+            {
+            // InternalCubeDSL.g:6772:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
+            // InternalCubeDSL.g:6773:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2()); 
+            }
+            // InternalCubeDSL.g:6774:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
+            // InternalCubeDSL.g:6774: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"
+    // InternalCubeDSL.g:6782:1: rule__XAnnotation__Group__3 : rule__XAnnotation__Group__3__Impl ;
+    public final void rule__XAnnotation__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6786:1: ( rule__XAnnotation__Group__3__Impl )
+            // InternalCubeDSL.g:6787: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"
+    // InternalCubeDSL.g:6793: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 {
+            // InternalCubeDSL.g:6797:1: ( ( ( rule__XAnnotation__Group_3__0 )? ) )
+            // InternalCubeDSL.g:6798:1: ( ( rule__XAnnotation__Group_3__0 )? )
+            {
+            // InternalCubeDSL.g:6798:1: ( ( rule__XAnnotation__Group_3__0 )? )
+            // InternalCubeDSL.g:6799:2: ( rule__XAnnotation__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getGroup_3()); 
+            }
+            // InternalCubeDSL.g:6800:2: ( rule__XAnnotation__Group_3__0 )?
+            int alt76=2;
+            int LA76_0 = input.LA(1);
+
+            if ( (LA76_0==88) ) {
+                alt76=1;
+            }
+            switch (alt76) {
+                case 1 :
+                    // InternalCubeDSL.g:6800: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"
+    // InternalCubeDSL.g:6809: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 {
+            // InternalCubeDSL.g:6813:1: ( rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1 )
+            // InternalCubeDSL.g:6814:2: rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1
+            {
+            pushFollow(FOLLOW_45);
+            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"
+    // InternalCubeDSL.g:6821:1: rule__XAnnotation__Group_3__0__Impl : ( ( '(' ) ) ;
+    public final void rule__XAnnotation__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6825:1: ( ( ( '(' ) ) )
+            // InternalCubeDSL.g:6826:1: ( ( '(' ) )
+            {
+            // InternalCubeDSL.g:6826:1: ( ( '(' ) )
+            // InternalCubeDSL.g:6827:2: ( '(' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0()); 
+            }
+            // InternalCubeDSL.g:6828:2: ( '(' )
+            // InternalCubeDSL.g:6828:3: '('
+            {
+            match(input,88,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"
+    // InternalCubeDSL.g:6836: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 {
+            // InternalCubeDSL.g:6840:1: ( rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2 )
+            // InternalCubeDSL.g:6841:2: rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2
+            {
+            pushFollow(FOLLOW_45);
+            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"
+    // InternalCubeDSL.g:6848: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 {
+            // InternalCubeDSL.g:6852:1: ( ( ( rule__XAnnotation__Alternatives_3_1 )? ) )
+            // InternalCubeDSL.g:6853:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
+            {
+            // InternalCubeDSL.g:6853:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
+            // InternalCubeDSL.g:6854:2: ( rule__XAnnotation__Alternatives_3_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getAlternatives_3_1()); 
+            }
+            // InternalCubeDSL.g:6855:2: ( rule__XAnnotation__Alternatives_3_1 )?
+            int alt77=2;
+            int LA77_0 = input.LA(1);
+
+            if ( ((LA77_0>=RULE_ID && LA77_0<=RULE_DECIMAL)||LA77_0==27||(LA77_0>=34 && LA77_0<=35)||LA77_0==40||(LA77_0>=45 && LA77_0<=50)||LA77_0==74||(LA77_0>=87 && LA77_0<=88)||(LA77_0>=92 && LA77_0<=93)||LA77_0==96||LA77_0==98||(LA77_0>=102 && LA77_0<=110)||LA77_0==112||LA77_0==131) ) {
+                alt77=1;
+            }
+            switch (alt77) {
+                case 1 :
+                    // InternalCubeDSL.g:6855: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"
+    // InternalCubeDSL.g:6863: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 {
+            // InternalCubeDSL.g:6867:1: ( rule__XAnnotation__Group_3__2__Impl )
+            // InternalCubeDSL.g:6868: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"
+    // InternalCubeDSL.g:6874:1: rule__XAnnotation__Group_3__2__Impl : ( ')' ) ;
+    public final void rule__XAnnotation__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:6878:1: ( ( ')' ) )
+            // InternalCubeDSL.g:6879:1: ( ')' )
+            {
+            // InternalCubeDSL.g:6879:1: ( ')' )
+            // InternalCubeDSL.g:6880:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()); 
+            }
+            match(input,89,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"
+    // InternalCubeDSL.g:6890: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 {
+            // InternalCubeDSL.g:6894:1: ( rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1 )
+            // InternalCubeDSL.g:6895:2: rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1
+            {
+            pushFollow(FOLLOW_46);
+            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"
+    // InternalCubeDSL.g:6902: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 {
+            // InternalCubeDSL.g:6906:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) ) )
+            // InternalCubeDSL.g:6907:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
+            {
+            // InternalCubeDSL.g:6907:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
+            // InternalCubeDSL.g:6908:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0()); 
+            }
+            // InternalCubeDSL.g:6909:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
+            // InternalCubeDSL.g:6909: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"
+    // InternalCubeDSL.g:6917: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 {
+            // InternalCubeDSL.g:6921:1: ( rule__XAnnotation__Group_3_1_0__1__Impl )
+            // InternalCubeDSL.g:6922: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"
+    // InternalCubeDSL.g:6928: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 {
+            // InternalCubeDSL.g:6932:1: ( ( ( rule__XAnnotation__Group_3_1_0_1__0 )* ) )
+            // InternalCubeDSL.g:6933:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
+            {
+            // InternalCubeDSL.g:6933:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
+            // InternalCubeDSL.g:6934:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1()); 
+            }
+            // InternalCubeDSL.g:6935:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
+            loop78:
+            do {
+                int alt78=2;
+                int LA78_0 = input.LA(1);
+
+                if ( (LA78_0==90) ) {
+                    alt78=1;
+                }
+
+
+                switch (alt78) {
+            	case 1 :
+            	    // InternalCubeDSL.g:6935:3: rule__XAnnotation__Group_3_1_0_1__0
+            	    {
+            	    pushFollow(FOLLOW_47);
+            	    rule__XAnnotation__Group_3_1_0_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop78;
+                }
+            } 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"
+    // InternalCubeDSL.g:6944: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 {
+            // InternalCubeDSL.g:6948:1: ( rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1 )
+            // InternalCubeDSL.g:6949:2: rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1
+            {
+            pushFollow(FOLLOW_6);
+            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"
+    // InternalCubeDSL.g:6956: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 {
+            // InternalCubeDSL.g:6960:1: ( ( ',' ) )
+            // InternalCubeDSL.g:6961:1: ( ',' )
+            {
+            // InternalCubeDSL.g:6961:1: ( ',' )
+            // InternalCubeDSL.g:6962:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0()); 
+            }
+            match(input,90,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"
+    // InternalCubeDSL.g:6971: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 {
+            // InternalCubeDSL.g:6975:1: ( rule__XAnnotation__Group_3_1_0_1__1__Impl )
+            // InternalCubeDSL.g:6976: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"
+    // InternalCubeDSL.g:6982: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 {
+            // InternalCubeDSL.g:6986:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) ) )
+            // InternalCubeDSL.g:6987:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
+            {
+            // InternalCubeDSL.g:6987:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
+            // InternalCubeDSL.g:6988:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1()); 
+            }
+            // InternalCubeDSL.g:6989:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
+            // InternalCubeDSL.g:6989: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"
+    // InternalCubeDSL.g:6998: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 {
+            // InternalCubeDSL.g:7002:1: ( rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1 )
+            // InternalCubeDSL.g:7003:2: rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:7010: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 {
+            // InternalCubeDSL.g:7014:1: ( ( ( rule__XAnnotationElementValuePair__Group_0__0 ) ) )
+            // InternalCubeDSL.g:7015:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
+            {
+            // InternalCubeDSL.g:7015:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
+            // InternalCubeDSL.g:7016:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0()); 
+            }
+            // InternalCubeDSL.g:7017:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
+            // InternalCubeDSL.g:7017: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"
+    // InternalCubeDSL.g:7025:1: rule__XAnnotationElementValuePair__Group__1 : rule__XAnnotationElementValuePair__Group__1__Impl ;
+    public final void rule__XAnnotationElementValuePair__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:7029:1: ( rule__XAnnotationElementValuePair__Group__1__Impl )
+            // InternalCubeDSL.g:7030: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"
+    // InternalCubeDSL.g:7036:1: rule__XAnnotationElementValuePair__Group__1__Impl : ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) ;
+    public final void rule__XAnnotationElementValuePair__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:7040:1: ( ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) )
+            // InternalCubeDSL.g:7041:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:7041:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
+            // InternalCubeDSL.g:7042:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1()); 
+            }
+            // InternalCubeDSL.g:7043:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
+            // InternalCubeDSL.g:7043: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"
+    // InternalCubeDSL.g:7052: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 {
+            // InternalCubeDSL.g:7056:1: ( rule__XAnnotationElementValuePair__Group_0__0__Impl )
+            // InternalCubeDSL.g:7057: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"
+    // InternalCubeDSL.g:7063: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 {
+            // InternalCubeDSL.g:7067:1: ( ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) ) )
+            // InternalCubeDSL.g:7068:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:7068:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
+            // InternalCubeDSL.g:7069:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0()); 
+            }
+            // InternalCubeDSL.g:7070:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
+            // InternalCubeDSL.g:7070: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"
+    // InternalCubeDSL.g:7079: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 {
+            // InternalCubeDSL.g:7083:1: ( rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1 )
+            // InternalCubeDSL.g:7084:2: rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1
+            {
+            pushFollow(FOLLOW_49);
+            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"
+    // InternalCubeDSL.g:7091: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 {
+            // InternalCubeDSL.g:7095:1: ( ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) ) )
+            // InternalCubeDSL.g:7096:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
+            {
+            // InternalCubeDSL.g:7096:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
+            // InternalCubeDSL.g:7097:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0()); 
+            }
+            // InternalCubeDSL.g:7098:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
+            // InternalCubeDSL.g:7098: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"
+    // InternalCubeDSL.g:7106: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 {
+            // InternalCubeDSL.g:7110:1: ( rule__XAnnotationElementValuePair__Group_0_0__1__Impl )
+            // InternalCubeDSL.g:7111: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"
+    // InternalCubeDSL.g:7117:1: rule__XAnnotationElementValuePair__Group_0_0__1__Impl : ( '=' ) ;
+    public final void rule__XAnnotationElementValuePair__Group_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:7121:1: ( ( '=' ) )
+            // InternalCubeDSL.g:7122:1: ( '=' )
+            {
+            // InternalCubeDSL.g:7122:1: ( '=' )
+            // InternalCubeDSL.g:7123: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"
+    // InternalCubeDSL.g:7133: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 {
+            // InternalCubeDSL.g:7137:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1 )
+            // InternalCubeDSL.g:7138:2: rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1
+            {
+            pushFollow(FOLLOW_50);
+            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"
+    // InternalCubeDSL.g:7145: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 {
+            // InternalCubeDSL.g:7149:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) ) )
+            // InternalCubeDSL.g:7150:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:7150:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
+            // InternalCubeDSL.g:7151:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0()); 
+            }
+            // InternalCubeDSL.g:7152:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
+            // InternalCubeDSL.g:7152: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"
+    // InternalCubeDSL.g:7160: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 {
+            // InternalCubeDSL.g:7164:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2 )
+            // InternalCubeDSL.g:7165:2: rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2
+            {
+            pushFollow(FOLLOW_50);
+            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"
+    // InternalCubeDSL.g:7172: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 {
+            // InternalCubeDSL.g:7176:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? ) )
+            // InternalCubeDSL.g:7177:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
+            {
+            // InternalCubeDSL.g:7177:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
+            // InternalCubeDSL.g:7178:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1()); 
+            }
+            // InternalCubeDSL.g:7179:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
+            int alt79=2;
+            int LA79_0 = input.LA(1);
+
+            if ( ((LA79_0>=RULE_ID && LA79_0<=RULE_DECIMAL)||LA79_0==27||(LA79_0>=34 && LA79_0<=35)||LA79_0==40||(LA79_0>=45 && LA79_0<=50)||LA79_0==74||(LA79_0>=87 && LA79_0<=88)||(LA79_0>=92 && LA79_0<=93)||LA79_0==96||LA79_0==98||(LA79_0>=102 && LA79_0<=110)||LA79_0==112||LA79_0==131) ) {
+                alt79=1;
+            }
+            switch (alt79) {
+                case 1 :
+                    // InternalCubeDSL.g:7179: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"
+    // InternalCubeDSL.g:7187: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 {
+            // InternalCubeDSL.g:7191:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl )
+            // InternalCubeDSL.g:7192: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"
+    // InternalCubeDSL.g:7198:1: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl : ( ']' ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:7202:1: ( ( ']' ) )
+            // InternalCubeDSL.g:7203:1: ( ']' )
+            {
+            // InternalCubeDSL.g:7203:1: ( ']' )
+            // InternalCubeDSL.g:7204:2: ']'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2()); 
+            }
+            match(input,91,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"
+    // InternalCubeDSL.g:7214: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 {
+            // InternalCubeDSL.g:7218:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl )
+            // InternalCubeDSL.g:7219: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"
+    // InternalCubeDSL.g:7225: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 {
+            // InternalCubeDSL.g:7229:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) ) )
+            // InternalCubeDSL.g:7230:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:7230:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
+            // InternalCubeDSL.g:7231:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0()); 
+            }
+            // InternalCubeDSL.g:7232:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
+            // InternalCubeDSL.g:7232: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"
+    // InternalCubeDSL.g:7241: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 {
+            // InternalCubeDSL.g:7245:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 )
+            // InternalCubeDSL.g:7246:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1
+            {
+            pushFollow(FOLLOW_51);
+            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"
+    // InternalCubeDSL.g:7253: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 {
+            // InternalCubeDSL.g:7257:1: ( ( () ) )
+            // InternalCubeDSL.g:7258:1: ( () )
+            {
+            // InternalCubeDSL.g:7258:1: ( () )
+            // InternalCubeDSL.g:7259:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0()); 
+            }
+            // InternalCubeDSL.g:7260:2: ()
+            // InternalCubeDSL.g:7260: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"
+    // InternalCubeDSL.g:7268: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 {
+            // InternalCubeDSL.g:7272:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 )
+            // InternalCubeDSL.g:7273:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2
+            {
+            pushFollow(FOLLOW_52);
+            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"
+    // InternalCubeDSL.g:7280: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 {
+            // InternalCubeDSL.g:7284:1: ( ( '#' ) )
+            // InternalCubeDSL.g:7285:1: ( '#' )
+            {
+            // InternalCubeDSL.g:7285:1: ( '#' )
+            // InternalCubeDSL.g:7286:2: '#'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1()); 
+            }
+            match(input,92,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"
+    // InternalCubeDSL.g:7295: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 {
+            // InternalCubeDSL.g:7299:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl )
+            // InternalCubeDSL.g:7300: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"
+    // InternalCubeDSL.g:7306: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 {
+            // InternalCubeDSL.g:7310:1: ( ( '[' ) )
+            // InternalCubeDSL.g:7311:1: ( '[' )
+            {
+            // InternalCubeDSL.g:7311:1: ( '[' )
+            // InternalCubeDSL.g:7312:2: '['
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
+            }
+            match(input,93,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"
+    // InternalCubeDSL.g:7322: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 {
+            // InternalCubeDSL.g:7326:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1 )
+            // InternalCubeDSL.g:7327:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1
+            {
+            pushFollow(FOLLOW_46);
+            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"
+    // InternalCubeDSL.g:7334: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 {
+            // InternalCubeDSL.g:7338:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) ) )
+            // InternalCubeDSL.g:7339:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
+            {
+            // InternalCubeDSL.g:7339:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
+            // InternalCubeDSL.g:7340:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0()); 
+            }
+            // InternalCubeDSL.g:7341:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
+            // InternalCubeDSL.g:7341: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"
+    // InternalCubeDSL.g:7349: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 {
+            // InternalCubeDSL.g:7353:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl )
+            // InternalCubeDSL.g:7354: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"
+    // InternalCubeDSL.g:7360: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 {
+            // InternalCubeDSL.g:7364:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* ) )
+            // InternalCubeDSL.g:7365:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
+            {
+            // InternalCubeDSL.g:7365:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
+            // InternalCubeDSL.g:7366:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1()); 
+            }
+            // InternalCubeDSL.g:7367:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
+            loop80:
+            do {
+                int alt80=2;
+                int LA80_0 = input.LA(1);
+
+                if ( (LA80_0==90) ) {
+                    alt80=1;
+                }
+
+
+                switch (alt80) {
+            	case 1 :
+            	    // InternalCubeDSL.g:7367:3: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_47);
+            	    rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop80;
+                }
+            } 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"
+    // InternalCubeDSL.g:7376: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 {
+            // InternalCubeDSL.g:7380:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 )
+            // InternalCubeDSL.g:7381:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:7388: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 {
+            // InternalCubeDSL.g:7392:1: ( ( ',' ) )
+            // InternalCubeDSL.g:7393:1: ( ',' )
+            {
+            // InternalCubeDSL.g:7393:1: ( ',' )
+            // InternalCubeDSL.g:7394:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0()); 
+            }
+            match(input,90,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"
+    // InternalCubeDSL.g:7403: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 {
+            // InternalCubeDSL.g:7407:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl )
+            // InternalCubeDSL.g:7408: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"
+    // InternalCubeDSL.g:7414: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 {
+            // InternalCubeDSL.g:7418:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) ) )
+            // InternalCubeDSL.g:7419:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
+            {
+            // InternalCubeDSL.g:7419:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
+            // InternalCubeDSL.g:7420:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1()); 
+            }
+            // InternalCubeDSL.g:7421:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
+            // InternalCubeDSL.g:7421: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"
+    // InternalCubeDSL.g:7430: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 {
+            // InternalCubeDSL.g:7434:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1 )
+            // InternalCubeDSL.g:7435:2: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1
+            {
+            pushFollow(FOLLOW_46);
+            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"
+    // InternalCubeDSL.g:7442:1: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl : ( ruleXAnnotationOrExpression ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:7446:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalCubeDSL.g:7447:1: ( ruleXAnnotationOrExpression )
+            {
+            // InternalCubeDSL.g:7447:1: ( ruleXAnnotationOrExpression )
+            // InternalCubeDSL.g:7448: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"
+    // InternalCubeDSL.g:7457: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 {
+            // InternalCubeDSL.g:7461:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl )
+            // InternalCubeDSL.g:7462: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"
+    // InternalCubeDSL.g:7468: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 {
+            // InternalCubeDSL.g:7472:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? ) )
+            // InternalCubeDSL.g:7473:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
+            {
+            // InternalCubeDSL.g:7473:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
+            // InternalCubeDSL.g:7474:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1()); 
+            }
+            // InternalCubeDSL.g:7475:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
+            int alt81=2;
+            int LA81_0 = input.LA(1);
+
+            if ( (LA81_0==90) ) {
+                alt81=1;
+            }
+            switch (alt81) {
+                case 1 :
+                    // InternalCubeDSL.g:7475: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"
+    // InternalCubeDSL.g:7484: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 {
+            // InternalCubeDSL.g:7488:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1 )
+            // InternalCubeDSL.g:7489:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1
+            {
+            pushFollow(FOLLOW_46);
+            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"
+    // InternalCubeDSL.g:7496:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl : ( () ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:7500:1: ( ( () ) )
+            // InternalCubeDSL.g:7501:1: ( () )
+            {
+            // InternalCubeDSL.g:7501:1: ( () )
+            // InternalCubeDSL.g:7502:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0()); 
+            }
+            // InternalCubeDSL.g:7503:2: ()
+            // InternalCubeDSL.g:7503: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"
+    // InternalCubeDSL.g:7511: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 {
+            // InternalCubeDSL.g:7515:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl )
+            // InternalCubeDSL.g:7516: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"
+    // InternalCubeDSL.g:7522: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 {
+            // InternalCubeDSL.g:7526:1: ( ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) ) )
+            // InternalCubeDSL.g:7527:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
+            {
+            // InternalCubeDSL.g:7527:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
+            // InternalCubeDSL.g:7528:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
+            {
+            // InternalCubeDSL.g:7528:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) )
+            // InternalCubeDSL.g:7529:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
+            }
+            // InternalCubeDSL.g:7530:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
+            // InternalCubeDSL.g:7530:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
+            {
+            pushFollow(FOLLOW_47);
+            rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
+            }
+
+            }
+
+            // InternalCubeDSL.g:7533:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
+            // InternalCubeDSL.g:7534:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
+            }
+            // InternalCubeDSL.g:7535:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
+            loop82:
+            do {
+                int alt82=2;
+                int LA82_0 = input.LA(1);
+
+                if ( (LA82_0==90) ) {
+                    alt82=1;
+                }
+
+
+                switch (alt82) {
+            	case 1 :
+            	    // InternalCubeDSL.g:7535:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_47);
+            	    rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop82;
+                }
+            } 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"
+    // InternalCubeDSL.g:7545: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 {
+            // InternalCubeDSL.g:7549:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 )
+            // InternalCubeDSL.g:7550:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:7557: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 {
+            // InternalCubeDSL.g:7561:1: ( ( ',' ) )
+            // InternalCubeDSL.g:7562:1: ( ',' )
+            {
+            // InternalCubeDSL.g:7562:1: ( ',' )
+            // InternalCubeDSL.g:7563:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0()); 
+            }
+            match(input,90,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"
+    // InternalCubeDSL.g:7572: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 {
+            // InternalCubeDSL.g:7576:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl )
+            // InternalCubeDSL.g:7577: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"
+    // InternalCubeDSL.g:7583: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 {
+            // InternalCubeDSL.g:7587:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) ) )
+            // InternalCubeDSL.g:7588:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
+            {
+            // InternalCubeDSL.g:7588:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
+            // InternalCubeDSL.g:7589:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1()); 
+            }
+            // InternalCubeDSL.g:7590:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
+            // InternalCubeDSL.g:7590: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"
+    // InternalCubeDSL.g:7599: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 {
+            // InternalCubeDSL.g:7603:1: ( rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1 )
+            // InternalCubeDSL.g:7604:2: rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1
+            {
+            pushFollow(FOLLOW_50);
+            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"
+    // InternalCubeDSL.g:7611: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 {
+            // InternalCubeDSL.g:7615:1: ( ( ( rule__XAnnotationElementValue__Group_0_0__0 ) ) )
+            // InternalCubeDSL.g:7616:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:7616:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
+            // InternalCubeDSL.g:7617:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0()); 
+            }
+            // InternalCubeDSL.g:7618:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
+            // InternalCubeDSL.g:7618: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"
+    // InternalCubeDSL.g:7626: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 {
+            // InternalCubeDSL.g:7630:1: ( rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2 )
+            // InternalCubeDSL.g:7631:2: rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2
+            {
+            pushFollow(FOLLOW_50);
+            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"
+    // InternalCubeDSL.g:7638: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 {
+            // InternalCubeDSL.g:7642:1: ( ( ( rule__XAnnotationElementValue__Group_0_1__0 )? ) )
+            // InternalCubeDSL.g:7643:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
+            {
+            // InternalCubeDSL.g:7643:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
+            // InternalCubeDSL.g:7644:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1()); 
+            }
+            // InternalCubeDSL.g:7645:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
+            int alt83=2;
+            int LA83_0 = input.LA(1);
+
+            if ( ((LA83_0>=RULE_ID && LA83_0<=RULE_DECIMAL)||LA83_0==27||(LA83_0>=34 && LA83_0<=35)||LA83_0==40||(LA83_0>=45 && LA83_0<=50)||LA83_0==74||(LA83_0>=87 && LA83_0<=88)||(LA83_0>=92 && LA83_0<=93)||LA83_0==96||LA83_0==98||(LA83_0>=102 && LA83_0<=110)||LA83_0==112||LA83_0==131) ) {
+                alt83=1;
+            }
+            switch (alt83) {
+                case 1 :
+                    // InternalCubeDSL.g:7645: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"
+    // InternalCubeDSL.g:7653: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 {
+            // InternalCubeDSL.g:7657:1: ( rule__XAnnotationElementValue__Group_0__2__Impl )
+            // InternalCubeDSL.g:7658: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"
+    // InternalCubeDSL.g:7664:1: rule__XAnnotationElementValue__Group_0__2__Impl : ( ']' ) ;
+    public final void rule__XAnnotationElementValue__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:7668:1: ( ( ']' ) )
+            // InternalCubeDSL.g:7669:1: ( ']' )
+            {
+            // InternalCubeDSL.g:7669:1: ( ']' )
+            // InternalCubeDSL.g:7670:2: ']'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2()); 
+            }
+            match(input,91,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"
+    // InternalCubeDSL.g:7680: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 {
+            // InternalCubeDSL.g:7684:1: ( rule__XAnnotationElementValue__Group_0_0__0__Impl )
+            // InternalCubeDSL.g:7685: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"
+    // InternalCubeDSL.g:7691: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 {
+            // InternalCubeDSL.g:7695:1: ( ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) ) )
+            // InternalCubeDSL.g:7696:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:7696:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
+            // InternalCubeDSL.g:7697:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0()); 
+            }
+            // InternalCubeDSL.g:7698:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
+            // InternalCubeDSL.g:7698: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"
+    // InternalCubeDSL.g:7707: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 {
+            // InternalCubeDSL.g:7711:1: ( rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1 )
+            // InternalCubeDSL.g:7712:2: rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1
+            {
+            pushFollow(FOLLOW_51);
+            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"
+    // InternalCubeDSL.g:7719: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 {
+            // InternalCubeDSL.g:7723:1: ( ( () ) )
+            // InternalCubeDSL.g:7724:1: ( () )
+            {
+            // InternalCubeDSL.g:7724:1: ( () )
+            // InternalCubeDSL.g:7725:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0()); 
+            }
+            // InternalCubeDSL.g:7726:2: ()
+            // InternalCubeDSL.g:7726: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"
+    // InternalCubeDSL.g:7734: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 {
+            // InternalCubeDSL.g:7738:1: ( rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2 )
+            // InternalCubeDSL.g:7739:2: rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2
+            {
+            pushFollow(FOLLOW_52);
+            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"
+    // InternalCubeDSL.g:7746: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 {
+            // InternalCubeDSL.g:7750:1: ( ( '#' ) )
+            // InternalCubeDSL.g:7751:1: ( '#' )
+            {
+            // InternalCubeDSL.g:7751:1: ( '#' )
+            // InternalCubeDSL.g:7752:2: '#'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1()); 
+            }
+            match(input,92,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"
+    // InternalCubeDSL.g:7761: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 {
+            // InternalCubeDSL.g:7765:1: ( rule__XAnnotationElementValue__Group_0_0_0__2__Impl )
+            // InternalCubeDSL.g:7766: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"
+    // InternalCubeDSL.g:7772: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 {
+            // InternalCubeDSL.g:7776:1: ( ( '[' ) )
+            // InternalCubeDSL.g:7777:1: ( '[' )
+            {
+            // InternalCubeDSL.g:7777:1: ( '[' )
+            // InternalCubeDSL.g:7778:2: '['
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
+            }
+            match(input,93,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"
+    // InternalCubeDSL.g:7788: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 {
+            // InternalCubeDSL.g:7792:1: ( rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1 )
+            // InternalCubeDSL.g:7793:2: rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1
+            {
+            pushFollow(FOLLOW_46);
+            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"
+    // InternalCubeDSL.g:7800: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 {
+            // InternalCubeDSL.g:7804:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) ) )
+            // InternalCubeDSL.g:7805:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
+            {
+            // InternalCubeDSL.g:7805:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
+            // InternalCubeDSL.g:7806:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0()); 
+            }
+            // InternalCubeDSL.g:7807:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
+            // InternalCubeDSL.g:7807: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"
+    // InternalCubeDSL.g:7815: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 {
+            // InternalCubeDSL.g:7819:1: ( rule__XAnnotationElementValue__Group_0_1__1__Impl )
+            // InternalCubeDSL.g:7820: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"
+    // InternalCubeDSL.g:7826: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 {
+            // InternalCubeDSL.g:7830:1: ( ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* ) )
+            // InternalCubeDSL.g:7831:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
+            {
+            // InternalCubeDSL.g:7831:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
+            // InternalCubeDSL.g:7832:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1()); 
+            }
+            // InternalCubeDSL.g:7833:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
+            loop84:
+            do {
+                int alt84=2;
+                int LA84_0 = input.LA(1);
+
+                if ( (LA84_0==90) ) {
+                    alt84=1;
+                }
+
+
+                switch (alt84) {
+            	case 1 :
+            	    // InternalCubeDSL.g:7833:3: rule__XAnnotationElementValue__Group_0_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_47);
+            	    rule__XAnnotationElementValue__Group_0_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop84;
+                }
+            } 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"
+    // InternalCubeDSL.g:7842: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 {
+            // InternalCubeDSL.g:7846:1: ( rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1 )
+            // InternalCubeDSL.g:7847:2: rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:7854: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 {
+            // InternalCubeDSL.g:7858:1: ( ( ',' ) )
+            // InternalCubeDSL.g:7859:1: ( ',' )
+            {
+            // InternalCubeDSL.g:7859:1: ( ',' )
+            // InternalCubeDSL.g:7860:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0()); 
+            }
+            match(input,90,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"
+    // InternalCubeDSL.g:7869: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 {
+            // InternalCubeDSL.g:7873:1: ( rule__XAnnotationElementValue__Group_0_1_1__1__Impl )
+            // InternalCubeDSL.g:7874: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"
+    // InternalCubeDSL.g:7880: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 {
+            // InternalCubeDSL.g:7884:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) ) )
+            // InternalCubeDSL.g:7885:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
+            {
+            // InternalCubeDSL.g:7885:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
+            // InternalCubeDSL.g:7886:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1()); 
+            }
+            // InternalCubeDSL.g:7887:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
+            // InternalCubeDSL.g:7887: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"
+    // InternalCubeDSL.g:7896: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 {
+            // InternalCubeDSL.g:7900:1: ( rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1 )
+            // InternalCubeDSL.g:7901:2: rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalCubeDSL.g:7908:1: rule__XAssignment__Group_0__0__Impl : ( () ) ;
+    public final void rule__XAssignment__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:7912:1: ( ( () ) )
+            // InternalCubeDSL.g:7913:1: ( () )
+            {
+            // InternalCubeDSL.g:7913:1: ( () )
+            // InternalCubeDSL.g:7914:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0()); 
+            }
+            // InternalCubeDSL.g:7915:2: ()
+            // InternalCubeDSL.g:7915: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"
+    // InternalCubeDSL.g:7923: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 {
+            // InternalCubeDSL.g:7927:1: ( rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2 )
+            // InternalCubeDSL.g:7928:2: rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2
+            {
+            pushFollow(FOLLOW_49);
+            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"
+    // InternalCubeDSL.g:7935: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 {
+            // InternalCubeDSL.g:7939:1: ( ( ( rule__XAssignment__FeatureAssignment_0_1 ) ) )
+            // InternalCubeDSL.g:7940:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
+            {
+            // InternalCubeDSL.g:7940:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
+            // InternalCubeDSL.g:7941:2: ( rule__XAssignment__FeatureAssignment_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1()); 
+            }
+            // InternalCubeDSL.g:7942:2: ( rule__XAssignment__FeatureAssignment_0_1 )
+            // InternalCubeDSL.g:7942: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"
+    // InternalCubeDSL.g:7950: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 {
+            // InternalCubeDSL.g:7954:1: ( rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3 )
+            // InternalCubeDSL.g:7955:2: rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:7962:1: rule__XAssignment__Group_0__2__Impl : ( ruleOpSingleAssign ) ;
+    public final void rule__XAssignment__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:7966:1: ( ( ruleOpSingleAssign ) )
+            // InternalCubeDSL.g:7967:1: ( ruleOpSingleAssign )
+            {
+            // InternalCubeDSL.g:7967:1: ( ruleOpSingleAssign )
+            // InternalCubeDSL.g:7968: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"
+    // InternalCubeDSL.g:7977: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 {
+            // InternalCubeDSL.g:7981:1: ( rule__XAssignment__Group_0__3__Impl )
+            // InternalCubeDSL.g:7982: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"
+    // InternalCubeDSL.g:7988: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 {
+            // InternalCubeDSL.g:7992:1: ( ( ( rule__XAssignment__ValueAssignment_0_3 ) ) )
+            // InternalCubeDSL.g:7993:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
+            {
+            // InternalCubeDSL.g:7993:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
+            // InternalCubeDSL.g:7994:2: ( rule__XAssignment__ValueAssignment_0_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3()); 
+            }
+            // InternalCubeDSL.g:7995:2: ( rule__XAssignment__ValueAssignment_0_3 )
+            // InternalCubeDSL.g:7995: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"
+    // InternalCubeDSL.g:8004: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 {
+            // InternalCubeDSL.g:8008:1: ( rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1 )
+            // InternalCubeDSL.g:8009:2: rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1
+            {
+            pushFollow(FOLLOW_54);
+            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"
+    // InternalCubeDSL.g:8016:1: rule__XAssignment__Group_1__0__Impl : ( ruleXOrExpression ) ;
+    public final void rule__XAssignment__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:8020:1: ( ( ruleXOrExpression ) )
+            // InternalCubeDSL.g:8021:1: ( ruleXOrExpression )
+            {
+            // InternalCubeDSL.g:8021:1: ( ruleXOrExpression )
+            // InternalCubeDSL.g:8022: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"
+    // InternalCubeDSL.g:8031: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 {
+            // InternalCubeDSL.g:8035:1: ( rule__XAssignment__Group_1__1__Impl )
+            // InternalCubeDSL.g:8036: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"
+    // InternalCubeDSL.g:8042: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 {
+            // InternalCubeDSL.g:8046:1: ( ( ( rule__XAssignment__Group_1_1__0 )? ) )
+            // InternalCubeDSL.g:8047:1: ( ( rule__XAssignment__Group_1_1__0 )? )
+            {
+            // InternalCubeDSL.g:8047:1: ( ( rule__XAssignment__Group_1_1__0 )? )
+            // InternalCubeDSL.g:8048:2: ( rule__XAssignment__Group_1_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getGroup_1_1()); 
+            }
+            // InternalCubeDSL.g:8049:2: ( rule__XAssignment__Group_1_1__0 )?
+            int alt85=2;
+            alt85 = dfa85.predict(input);
+            switch (alt85) {
+                case 1 :
+                    // InternalCubeDSL.g:8049: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"
+    // InternalCubeDSL.g:8058: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 {
+            // InternalCubeDSL.g:8062:1: ( rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1 )
+            // InternalCubeDSL.g:8063:2: rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:8070: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 {
+            // InternalCubeDSL.g:8074:1: ( ( ( rule__XAssignment__Group_1_1_0__0 ) ) )
+            // InternalCubeDSL.g:8075:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
+            {
+            // InternalCubeDSL.g:8075:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
+            // InternalCubeDSL.g:8076:2: ( rule__XAssignment__Group_1_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0()); 
+            }
+            // InternalCubeDSL.g:8077:2: ( rule__XAssignment__Group_1_1_0__0 )
+            // InternalCubeDSL.g:8077: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"
+    // InternalCubeDSL.g:8085: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 {
+            // InternalCubeDSL.g:8089:1: ( rule__XAssignment__Group_1_1__1__Impl )
+            // InternalCubeDSL.g:8090: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"
+    // InternalCubeDSL.g:8096: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 {
+            // InternalCubeDSL.g:8100:1: ( ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) ) )
+            // InternalCubeDSL.g:8101:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
+            {
+            // InternalCubeDSL.g:8101:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
+            // InternalCubeDSL.g:8102:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1()); 
+            }
+            // InternalCubeDSL.g:8103:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
+            // InternalCubeDSL.g:8103: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"
+    // InternalCubeDSL.g:8112: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 {
+            // InternalCubeDSL.g:8116:1: ( rule__XAssignment__Group_1_1_0__0__Impl )
+            // InternalCubeDSL.g:8117: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"
+    // InternalCubeDSL.g:8123: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 {
+            // InternalCubeDSL.g:8127:1: ( ( ( rule__XAssignment__Group_1_1_0_0__0 ) ) )
+            // InternalCubeDSL.g:8128:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:8128:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
+            // InternalCubeDSL.g:8129:2: ( rule__XAssignment__Group_1_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0()); 
+            }
+            // InternalCubeDSL.g:8130:2: ( rule__XAssignment__Group_1_1_0_0__0 )
+            // InternalCubeDSL.g:8130: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"
+    // InternalCubeDSL.g:8139: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 {
+            // InternalCubeDSL.g:8143:1: ( rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1 )
+            // InternalCubeDSL.g:8144:2: rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1
+            {
+            pushFollow(FOLLOW_54);
+            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"
+    // InternalCubeDSL.g:8151: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 {
+            // InternalCubeDSL.g:8155:1: ( ( () ) )
+            // InternalCubeDSL.g:8156:1: ( () )
+            {
+            // InternalCubeDSL.g:8156:1: ( () )
+            // InternalCubeDSL.g:8157:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); 
+            }
+            // InternalCubeDSL.g:8158:2: ()
+            // InternalCubeDSL.g:8158: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"
+    // InternalCubeDSL.g:8166: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 {
+            // InternalCubeDSL.g:8170:1: ( rule__XAssignment__Group_1_1_0_0__1__Impl )
+            // InternalCubeDSL.g:8171: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"
+    // InternalCubeDSL.g:8177: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 {
+            // InternalCubeDSL.g:8181:1: ( ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) ) )
+            // InternalCubeDSL.g:8182:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
+            {
+            // InternalCubeDSL.g:8182:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalCubeDSL.g:8183:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1()); 
+            }
+            // InternalCubeDSL.g:8184:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
+            // InternalCubeDSL.g:8184: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"
+    // InternalCubeDSL.g:8193: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 {
+            // InternalCubeDSL.g:8197:1: ( rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1 )
+            // InternalCubeDSL.g:8198:2: rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1
+            {
+            pushFollow(FOLLOW_55);
+            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"
+    // InternalCubeDSL.g:8205:1: rule__OpMultiAssign__Group_5__0__Impl : ( '<' ) ;
+    public final void rule__OpMultiAssign__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:8209:1: ( ( '<' ) )
+            // InternalCubeDSL.g:8210:1: ( '<' )
+            {
+            // InternalCubeDSL.g:8210:1: ( '<' )
+            // InternalCubeDSL.g:8211:2: '<'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_0()); 
+            }
+            match(input,27,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"
+    // InternalCubeDSL.g:8220: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 {
+            // InternalCubeDSL.g:8224:1: ( rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2 )
+            // InternalCubeDSL.g:8225:2: rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2
+            {
+            pushFollow(FOLLOW_49);
+            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"
+    // InternalCubeDSL.g:8232:1: rule__OpMultiAssign__Group_5__1__Impl : ( '<' ) ;
+    public final void rule__OpMultiAssign__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:8236:1: ( ( '<' ) )
+            // InternalCubeDSL.g:8237:1: ( '<' )
+            {
+            // InternalCubeDSL.g:8237:1: ( '<' )
+            // InternalCubeDSL.g:8238:2: '<'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignAccess().getLessThanSignKeyword_5_1()); 
+            }
+            match(input,27,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"
+    // InternalCubeDSL.g:8247: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 {
+            // InternalCubeDSL.g:8251:1: ( rule__OpMultiAssign__Group_5__2__Impl )
+            // InternalCubeDSL.g:8252: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"
+    // InternalCubeDSL.g:8258:1: rule__OpMultiAssign__Group_5__2__Impl : ( '=' ) ;
+    public final void rule__OpMultiAssign__Group_5__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:8262:1: ( ( '=' ) )
+            // InternalCubeDSL.g:8263:1: ( '=' )
+            {
+            // InternalCubeDSL.g:8263:1: ( '=' )
+            // InternalCubeDSL.g:8264: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"
+    // InternalCubeDSL.g:8274: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 {
+            // InternalCubeDSL.g:8278:1: ( rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1 )
+            // InternalCubeDSL.g:8279:2: rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1
+            {
+            pushFollow(FOLLOW_56);
+            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"
+    // InternalCubeDSL.g:8286:1: rule__OpMultiAssign__Group_6__0__Impl : ( '>' ) ;
+    public final void rule__OpMultiAssign__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:8290:1: ( ( '>' ) )
+            // InternalCubeDSL.g:8291:1: ( '>' )
+            {
+            // InternalCubeDSL.g:8291:1: ( '>' )
+            // InternalCubeDSL.g:8292:2: '>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_0()); 
+            }
+            match(input,26,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"
+    // InternalCubeDSL.g:8301: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 {
+            // InternalCubeDSL.g:8305:1: ( rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2 )
+            // InternalCubeDSL.g:8306:2: rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2
+            {
+            pushFollow(FOLLOW_56);
+            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"
+    // InternalCubeDSL.g:8313:1: rule__OpMultiAssign__Group_6__1__Impl : ( ( '>' )? ) ;
+    public final void rule__OpMultiAssign__Group_6__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:8317:1: ( ( ( '>' )? ) )
+            // InternalCubeDSL.g:8318:1: ( ( '>' )? )
+            {
+            // InternalCubeDSL.g:8318:1: ( ( '>' )? )
+            // InternalCubeDSL.g:8319:2: ( '>' )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); 
+            }
+            // InternalCubeDSL.g:8320:2: ( '>' )?
+            int alt86=2;
+            int LA86_0 = input.LA(1);
+
+            if ( (LA86_0==26) ) {
+                alt86=1;
+            }
+            switch (alt86) {
+                case 1 :
+                    // InternalCubeDSL.g:8320:3: '>'
+                    {
+                    match(input,26,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"
+    // InternalCubeDSL.g:8328: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 {
+            // InternalCubeDSL.g:8332:1: ( rule__OpMultiAssign__Group_6__2__Impl )
+            // InternalCubeDSL.g:8333: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"
+    // InternalCubeDSL.g:8339:1: rule__OpMultiAssign__Group_6__2__Impl : ( '>=' ) ;
+    public final void rule__OpMultiAssign__Group_6__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:8343:1: ( ( '>=' ) )
+            // InternalCubeDSL.g:8344:1: ( '>=' )
+            {
+            // InternalCubeDSL.g:8344:1: ( '>=' )
+            // InternalCubeDSL.g:8345:2: '>='
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2()); 
+            }
+            match(input,25,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"
+    // InternalCubeDSL.g:8355: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 {
+            // InternalCubeDSL.g:8359:1: ( rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1 )
+            // InternalCubeDSL.g:8360:2: rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1
+            {
+            pushFollow(FOLLOW_57);
+            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"
+    // InternalCubeDSL.g:8367:1: rule__XOrExpression__Group__0__Impl : ( ruleXAndExpression ) ;
+    public final void rule__XOrExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:8371:1: ( ( ruleXAndExpression ) )
+            // InternalCubeDSL.g:8372:1: ( ruleXAndExpression )
+            {
+            // InternalCubeDSL.g:8372:1: ( ruleXAndExpression )
+            // InternalCubeDSL.g:8373: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"
+    // InternalCubeDSL.g:8382:1: rule__XOrExpression__Group__1 : rule__XOrExpression__Group__1__Impl ;
+    public final void rule__XOrExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:8386:1: ( rule__XOrExpression__Group__1__Impl )
+            // InternalCubeDSL.g:8387: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"
+    // InternalCubeDSL.g:8393: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 {
+            // InternalCubeDSL.g:8397:1: ( ( ( rule__XOrExpression__Group_1__0 )* ) )
+            // InternalCubeDSL.g:8398:1: ( ( rule__XOrExpression__Group_1__0 )* )
+            {
+            // InternalCubeDSL.g:8398:1: ( ( rule__XOrExpression__Group_1__0 )* )
+            // InternalCubeDSL.g:8399:2: ( rule__XOrExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getGroup_1()); 
+            }
+            // InternalCubeDSL.g:8400:2: ( rule__XOrExpression__Group_1__0 )*
+            loop87:
+            do {
+                int alt87=2;
+                int LA87_0 = input.LA(1);
+
+                if ( (LA87_0==14) ) {
+                    int LA87_2 = input.LA(2);
+
+                    if ( (synpred148_InternalCubeDSL()) ) {
+                        alt87=1;
+                    }
+
+
+                }
+
+
+                switch (alt87) {
+            	case 1 :
+            	    // InternalCubeDSL.g:8400:3: rule__XOrExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_58);
+            	    rule__XOrExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop87;
+                }
+            } 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"
+    // InternalCubeDSL.g:8409: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 {
+            // InternalCubeDSL.g:8413:1: ( rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1 )
+            // InternalCubeDSL.g:8414:2: rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:8421: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 {
+            // InternalCubeDSL.g:8425:1: ( ( ( rule__XOrExpression__Group_1_0__0 ) ) )
+            // InternalCubeDSL.g:8426:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
+            {
+            // InternalCubeDSL.g:8426:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
+            // InternalCubeDSL.g:8427:2: ( rule__XOrExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalCubeDSL.g:8428:2: ( rule__XOrExpression__Group_1_0__0 )
+            // InternalCubeDSL.g:8428: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"
+    // InternalCubeDSL.g:8436: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 {
+            // InternalCubeDSL.g:8440:1: ( rule__XOrExpression__Group_1__1__Impl )
+            // InternalCubeDSL.g:8441: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"
+    // InternalCubeDSL.g:8447: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 {
+            // InternalCubeDSL.g:8451:1: ( ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalCubeDSL.g:8452:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalCubeDSL.g:8452:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
+            // InternalCubeDSL.g:8453:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalCubeDSL.g:8454:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
+            // InternalCubeDSL.g:8454: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"
+    // InternalCubeDSL.g:8463: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 {
+            // InternalCubeDSL.g:8467:1: ( rule__XOrExpression__Group_1_0__0__Impl )
+            // InternalCubeDSL.g:8468: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"
+    // InternalCubeDSL.g:8474: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 {
+            // InternalCubeDSL.g:8478:1: ( ( ( rule__XOrExpression__Group_1_0_0__0 ) ) )
+            // InternalCubeDSL.g:8479:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:8479:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
+            // InternalCubeDSL.g:8480:2: ( rule__XOrExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalCubeDSL.g:8481:2: ( rule__XOrExpression__Group_1_0_0__0 )
+            // InternalCubeDSL.g:8481: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"
+    // InternalCubeDSL.g:8490: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 {
+            // InternalCubeDSL.g:8494:1: ( rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1 )
+            // InternalCubeDSL.g:8495:2: rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_57);
+            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"
+    // InternalCubeDSL.g:8502: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 {
+            // InternalCubeDSL.g:8506:1: ( ( () ) )
+            // InternalCubeDSL.g:8507:1: ( () )
+            {
+            // InternalCubeDSL.g:8507:1: ( () )
+            // InternalCubeDSL.g:8508:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalCubeDSL.g:8509:2: ()
+            // InternalCubeDSL.g:8509: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"
+    // InternalCubeDSL.g:8517: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 {
+            // InternalCubeDSL.g:8521:1: ( rule__XOrExpression__Group_1_0_0__1__Impl )
+            // InternalCubeDSL.g:8522: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"
+    // InternalCubeDSL.g:8528: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 {
+            // InternalCubeDSL.g:8532:1: ( ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalCubeDSL.g:8533:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalCubeDSL.g:8533:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalCubeDSL.g:8534:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalCubeDSL.g:8535:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
+            // InternalCubeDSL.g:8535: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"
+    // InternalCubeDSL.g:8544: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 {
+            // InternalCubeDSL.g:8548:1: ( rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1 )
+            // InternalCubeDSL.g:8549:2: rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1
+            {
+            pushFollow(FOLLOW_59);
+            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"
+    // InternalCubeDSL.g:8556:1: rule__XAndExpression__Group__0__Impl : ( ruleXEqualityExpression ) ;
+    public final void rule__XAndExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:8560:1: ( ( ruleXEqualityExpression ) )
+            // InternalCubeDSL.g:8561:1: ( ruleXEqualityExpression )
+            {
+            // InternalCubeDSL.g:8561:1: ( ruleXEqualityExpression )
+            // InternalCubeDSL.g:8562: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"
+    // InternalCubeDSL.g:8571:1: rule__XAndExpression__Group__1 : rule__XAndExpression__Group__1__Impl ;
+    public final void rule__XAndExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:8575:1: ( rule__XAndExpression__Group__1__Impl )
+            // InternalCubeDSL.g:8576: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"
+    // InternalCubeDSL.g:8582: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 {
+            // InternalCubeDSL.g:8586:1: ( ( ( rule__XAndExpression__Group_1__0 )* ) )
+            // InternalCubeDSL.g:8587:1: ( ( rule__XAndExpression__Group_1__0 )* )
+            {
+            // InternalCubeDSL.g:8587:1: ( ( rule__XAndExpression__Group_1__0 )* )
+            // InternalCubeDSL.g:8588:2: ( rule__XAndExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getGroup_1()); 
+            }
+            // InternalCubeDSL.g:8589:2: ( rule__XAndExpression__Group_1__0 )*
+            loop88:
+            do {
+                int alt88=2;
+                int LA88_0 = input.LA(1);
+
+                if ( (LA88_0==15) ) {
+                    int LA88_2 = input.LA(2);
+
+                    if ( (synpred149_InternalCubeDSL()) ) {
+                        alt88=1;
+                    }
+
+
+                }
+
+
+                switch (alt88) {
+            	case 1 :
+            	    // InternalCubeDSL.g:8589:3: rule__XAndExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_60);
+            	    rule__XAndExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop88;
+                }
+            } 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"
+    // InternalCubeDSL.g:8598: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 {
+            // InternalCubeDSL.g:8602:1: ( rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1 )
+            // InternalCubeDSL.g:8603:2: rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:8610: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 {
+            // InternalCubeDSL.g:8614:1: ( ( ( rule__XAndExpression__Group_1_0__0 ) ) )
+            // InternalCubeDSL.g:8615:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
+            {
+            // InternalCubeDSL.g:8615:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
+            // InternalCubeDSL.g:8616:2: ( rule__XAndExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalCubeDSL.g:8617:2: ( rule__XAndExpression__Group_1_0__0 )
+            // InternalCubeDSL.g:8617: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"
+    // InternalCubeDSL.g:8625: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 {
+            // InternalCubeDSL.g:8629:1: ( rule__XAndExpression__Group_1__1__Impl )
+            // InternalCubeDSL.g:8630: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"
+    // InternalCubeDSL.g:8636: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 {
+            // InternalCubeDSL.g:8640:1: ( ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalCubeDSL.g:8641:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalCubeDSL.g:8641:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
+            // InternalCubeDSL.g:8642:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalCubeDSL.g:8643:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
+            // InternalCubeDSL.g:8643: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"
+    // InternalCubeDSL.g:8652: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 {
+            // InternalCubeDSL.g:8656:1: ( rule__XAndExpression__Group_1_0__0__Impl )
+            // InternalCubeDSL.g:8657: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"
+    // InternalCubeDSL.g:8663: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 {
+            // InternalCubeDSL.g:8667:1: ( ( ( rule__XAndExpression__Group_1_0_0__0 ) ) )
+            // InternalCubeDSL.g:8668:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:8668:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
+            // InternalCubeDSL.g:8669:2: ( rule__XAndExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalCubeDSL.g:8670:2: ( rule__XAndExpression__Group_1_0_0__0 )
+            // InternalCubeDSL.g:8670: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"
+    // InternalCubeDSL.g:8679: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 {
+            // InternalCubeDSL.g:8683:1: ( rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1 )
+            // InternalCubeDSL.g:8684:2: rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_59);
+            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"
+    // InternalCubeDSL.g:8691: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 {
+            // InternalCubeDSL.g:8695:1: ( ( () ) )
+            // InternalCubeDSL.g:8696:1: ( () )
+            {
+            // InternalCubeDSL.g:8696:1: ( () )
+            // InternalCubeDSL.g:8697:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalCubeDSL.g:8698:2: ()
+            // InternalCubeDSL.g:8698: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"
+    // InternalCubeDSL.g:8706: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 {
+            // InternalCubeDSL.g:8710:1: ( rule__XAndExpression__Group_1_0_0__1__Impl )
+            // InternalCubeDSL.g:8711: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"
+    // InternalCubeDSL.g:8717: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 {
+            // InternalCubeDSL.g:8721:1: ( ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalCubeDSL.g:8722:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalCubeDSL.g:8722:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalCubeDSL.g:8723:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalCubeDSL.g:8724:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
+            // InternalCubeDSL.g:8724: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"
+    // InternalCubeDSL.g:8733: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 {
+            // InternalCubeDSL.g:8737:1: ( rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1 )
+            // InternalCubeDSL.g:8738:2: rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalCubeDSL.g:8745:1: rule__XEqualityExpression__Group__0__Impl : ( ruleXRelationalExpression ) ;
+    public final void rule__XEqualityExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:8749:1: ( ( ruleXRelationalExpression ) )
+            // InternalCubeDSL.g:8750:1: ( ruleXRelationalExpression )
+            {
+            // InternalCubeDSL.g:8750:1: ( ruleXRelationalExpression )
+            // InternalCubeDSL.g:8751: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"
+    // InternalCubeDSL.g:8760:1: rule__XEqualityExpression__Group__1 : rule__XEqualityExpression__Group__1__Impl ;
+    public final void rule__XEqualityExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:8764:1: ( rule__XEqualityExpression__Group__1__Impl )
+            // InternalCubeDSL.g:8765: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"
+    // InternalCubeDSL.g:8771: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 {
+            // InternalCubeDSL.g:8775:1: ( ( ( rule__XEqualityExpression__Group_1__0 )* ) )
+            // InternalCubeDSL.g:8776:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
+            {
+            // InternalCubeDSL.g:8776:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
+            // InternalCubeDSL.g:8777:2: ( rule__XEqualityExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getGroup_1()); 
+            }
+            // InternalCubeDSL.g:8778:2: ( rule__XEqualityExpression__Group_1__0 )*
+            loop89:
+            do {
+                int alt89=2;
+                switch ( input.LA(1) ) {
+                case 21:
+                    {
+                    int LA89_2 = input.LA(2);
+
+                    if ( (synpred150_InternalCubeDSL()) ) {
+                        alt89=1;
+                    }
+
+
+                    }
+                    break;
+                case 22:
+                    {
+                    int LA89_3 = input.LA(2);
+
+                    if ( (synpred150_InternalCubeDSL()) ) {
+                        alt89=1;
+                    }
+
+
+                    }
+                    break;
+                case 23:
+                    {
+                    int LA89_4 = input.LA(2);
+
+                    if ( (synpred150_InternalCubeDSL()) ) {
+                        alt89=1;
+                    }
+
+
+                    }
+                    break;
+                case 24:
+                    {
+                    int LA89_5 = input.LA(2);
+
+                    if ( (synpred150_InternalCubeDSL()) ) {
+                        alt89=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt89) {
+            	case 1 :
+            	    // InternalCubeDSL.g:8778:3: rule__XEqualityExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_62);
+            	    rule__XEqualityExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop89;
+                }
+            } 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"
+    // InternalCubeDSL.g:8787: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 {
+            // InternalCubeDSL.g:8791:1: ( rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1 )
+            // InternalCubeDSL.g:8792:2: rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:8799: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 {
+            // InternalCubeDSL.g:8803:1: ( ( ( rule__XEqualityExpression__Group_1_0__0 ) ) )
+            // InternalCubeDSL.g:8804:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
+            {
+            // InternalCubeDSL.g:8804:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
+            // InternalCubeDSL.g:8805:2: ( rule__XEqualityExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalCubeDSL.g:8806:2: ( rule__XEqualityExpression__Group_1_0__0 )
+            // InternalCubeDSL.g:8806: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"
+    // InternalCubeDSL.g:8814: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 {
+            // InternalCubeDSL.g:8818:1: ( rule__XEqualityExpression__Group_1__1__Impl )
+            // InternalCubeDSL.g:8819: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"
+    // InternalCubeDSL.g:8825: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 {
+            // InternalCubeDSL.g:8829:1: ( ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalCubeDSL.g:8830:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalCubeDSL.g:8830:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
+            // InternalCubeDSL.g:8831:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalCubeDSL.g:8832:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
+            // InternalCubeDSL.g:8832: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"
+    // InternalCubeDSL.g:8841: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 {
+            // InternalCubeDSL.g:8845:1: ( rule__XEqualityExpression__Group_1_0__0__Impl )
+            // InternalCubeDSL.g:8846: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"
+    // InternalCubeDSL.g:8852: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 {
+            // InternalCubeDSL.g:8856:1: ( ( ( rule__XEqualityExpression__Group_1_0_0__0 ) ) )
+            // InternalCubeDSL.g:8857:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:8857:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
+            // InternalCubeDSL.g:8858:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalCubeDSL.g:8859:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
+            // InternalCubeDSL.g:8859: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"
+    // InternalCubeDSL.g:8868: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 {
+            // InternalCubeDSL.g:8872:1: ( rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1 )
+            // InternalCubeDSL.g:8873:2: rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalCubeDSL.g:8880: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 {
+            // InternalCubeDSL.g:8884:1: ( ( () ) )
+            // InternalCubeDSL.g:8885:1: ( () )
+            {
+            // InternalCubeDSL.g:8885:1: ( () )
+            // InternalCubeDSL.g:8886:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalCubeDSL.g:8887:2: ()
+            // InternalCubeDSL.g:8887: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"
+    // InternalCubeDSL.g:8895: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 {
+            // InternalCubeDSL.g:8899:1: ( rule__XEqualityExpression__Group_1_0_0__1__Impl )
+            // InternalCubeDSL.g:8900: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"
+    // InternalCubeDSL.g:8906: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 {
+            // InternalCubeDSL.g:8910:1: ( ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalCubeDSL.g:8911:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalCubeDSL.g:8911:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalCubeDSL.g:8912:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalCubeDSL.g:8913:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
+            // InternalCubeDSL.g:8913: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"
+    // InternalCubeDSL.g:8922: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 {
+            // InternalCubeDSL.g:8926:1: ( rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1 )
+            // InternalCubeDSL.g:8927:2: rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1
+            {
+            pushFollow(FOLLOW_63);
+            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"
+    // InternalCubeDSL.g:8934:1: rule__XRelationalExpression__Group__0__Impl : ( ruleXOtherOperatorExpression ) ;
+    public final void rule__XRelationalExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:8938:1: ( ( ruleXOtherOperatorExpression ) )
+            // InternalCubeDSL.g:8939:1: ( ruleXOtherOperatorExpression )
+            {
+            // InternalCubeDSL.g:8939:1: ( ruleXOtherOperatorExpression )
+            // InternalCubeDSL.g:8940: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"
+    // InternalCubeDSL.g:8949:1: rule__XRelationalExpression__Group__1 : rule__XRelationalExpression__Group__1__Impl ;
+    public final void rule__XRelationalExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:8953:1: ( rule__XRelationalExpression__Group__1__Impl )
+            // InternalCubeDSL.g:8954: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"
+    // InternalCubeDSL.g:8960:1: rule__XRelationalExpression__Group__1__Impl : ( ( rule__XRelationalExpression__Alternatives_1 )* ) ;
+    public final void rule__XRelationalExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:8964:1: ( ( ( rule__XRelationalExpression__Alternatives_1 )* ) )
+            // InternalCubeDSL.g:8965:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
+            {
+            // InternalCubeDSL.g:8965:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
+            // InternalCubeDSL.g:8966:2: ( rule__XRelationalExpression__Alternatives_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getAlternatives_1()); 
+            }
+            // InternalCubeDSL.g:8967:2: ( rule__XRelationalExpression__Alternatives_1 )*
+            loop90:
+            do {
+                int alt90=2;
+                switch ( input.LA(1) ) {
+                case 27:
+                    {
+                    int LA90_2 = input.LA(2);
+
+                    if ( (synpred151_InternalCubeDSL()) ) {
+                        alt90=1;
+                    }
+
+
+                    }
+                    break;
+                case 26:
+                    {
+                    int LA90_3 = input.LA(2);
+
+                    if ( (synpred151_InternalCubeDSL()) ) {
+                        alt90=1;
+                    }
+
+
+                    }
+                    break;
+                case 94:
+                    {
+                    int LA90_4 = input.LA(2);
+
+                    if ( (synpred151_InternalCubeDSL()) ) {
+                        alt90=1;
+                    }
+
+
+                    }
+                    break;
+                case 25:
+                    {
+                    int LA90_5 = input.LA(2);
+
+                    if ( (synpred151_InternalCubeDSL()) ) {
+                        alt90=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt90) {
+            	case 1 :
+            	    // InternalCubeDSL.g:8967:3: rule__XRelationalExpression__Alternatives_1
+            	    {
+            	    pushFollow(FOLLOW_64);
+            	    rule__XRelationalExpression__Alternatives_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop90;
+                }
+            } 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"
+    // InternalCubeDSL.g:8976: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 {
+            // InternalCubeDSL.g:8980:1: ( rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1 )
+            // InternalCubeDSL.g:8981:2: rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalCubeDSL.g:8988: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 {
+            // InternalCubeDSL.g:8992:1: ( ( ( rule__XRelationalExpression__Group_1_0_0__0 ) ) )
+            // InternalCubeDSL.g:8993:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:8993:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
+            // InternalCubeDSL.g:8994:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalCubeDSL.g:8995:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
+            // InternalCubeDSL.g:8995: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"
+    // InternalCubeDSL.g:9003: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 {
+            // InternalCubeDSL.g:9007:1: ( rule__XRelationalExpression__Group_1_0__1__Impl )
+            // InternalCubeDSL.g:9008: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"
+    // InternalCubeDSL.g:9014: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 {
+            // InternalCubeDSL.g:9018:1: ( ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) ) )
+            // InternalCubeDSL.g:9019:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
+            {
+            // InternalCubeDSL.g:9019:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
+            // InternalCubeDSL.g:9020:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1()); 
+            }
+            // InternalCubeDSL.g:9021:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
+            // InternalCubeDSL.g:9021: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"
+    // InternalCubeDSL.g:9030: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 {
+            // InternalCubeDSL.g:9034:1: ( rule__XRelationalExpression__Group_1_0_0__0__Impl )
+            // InternalCubeDSL.g:9035: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"
+    // InternalCubeDSL.g:9041: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 {
+            // InternalCubeDSL.g:9045:1: ( ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) ) )
+            // InternalCubeDSL.g:9046:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:9046:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
+            // InternalCubeDSL.g:9047:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0()); 
+            }
+            // InternalCubeDSL.g:9048:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
+            // InternalCubeDSL.g:9048: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"
+    // InternalCubeDSL.g:9057: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 {
+            // InternalCubeDSL.g:9061:1: ( rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1 )
+            // InternalCubeDSL.g:9062:2: rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1
+            {
+            pushFollow(FOLLOW_66);
+            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"
+    // InternalCubeDSL.g:9069: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 {
+            // InternalCubeDSL.g:9073:1: ( ( () ) )
+            // InternalCubeDSL.g:9074:1: ( () )
+            {
+            // InternalCubeDSL.g:9074:1: ( () )
+            // InternalCubeDSL.g:9075:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0()); 
+            }
+            // InternalCubeDSL.g:9076:2: ()
+            // InternalCubeDSL.g:9076: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"
+    // InternalCubeDSL.g:9084: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 {
+            // InternalCubeDSL.g:9088:1: ( rule__XRelationalExpression__Group_1_0_0_0__1__Impl )
+            // InternalCubeDSL.g:9089: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"
+    // InternalCubeDSL.g:9095: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 {
+            // InternalCubeDSL.g:9099:1: ( ( 'instanceof' ) )
+            // InternalCubeDSL.g:9100:1: ( 'instanceof' )
+            {
+            // InternalCubeDSL.g:9100:1: ( 'instanceof' )
+            // InternalCubeDSL.g:9101:2: 'instanceof'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1()); 
+            }
+            match(input,94,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"
+    // InternalCubeDSL.g:9111: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 {
+            // InternalCubeDSL.g:9115:1: ( rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1 )
+            // InternalCubeDSL.g:9116:2: rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:9123: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 {
+            // InternalCubeDSL.g:9127:1: ( ( ( rule__XRelationalExpression__Group_1_1_0__0 ) ) )
+            // InternalCubeDSL.g:9128:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
+            {
+            // InternalCubeDSL.g:9128:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
+            // InternalCubeDSL.g:9129:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0()); 
+            }
+            // InternalCubeDSL.g:9130:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
+            // InternalCubeDSL.g:9130: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"
+    // InternalCubeDSL.g:9138: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 {
+            // InternalCubeDSL.g:9142:1: ( rule__XRelationalExpression__Group_1_1__1__Impl )
+            // InternalCubeDSL.g:9143: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"
+    // InternalCubeDSL.g:9149: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 {
+            // InternalCubeDSL.g:9153:1: ( ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) ) )
+            // InternalCubeDSL.g:9154:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
+            {
+            // InternalCubeDSL.g:9154:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
+            // InternalCubeDSL.g:9155:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1()); 
+            }
+            // InternalCubeDSL.g:9156:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
+            // InternalCubeDSL.g:9156: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"
+    // InternalCubeDSL.g:9165: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 {
+            // InternalCubeDSL.g:9169:1: ( rule__XRelationalExpression__Group_1_1_0__0__Impl )
+            // InternalCubeDSL.g:9170: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"
+    // InternalCubeDSL.g:9176: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 {
+            // InternalCubeDSL.g:9180:1: ( ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) ) )
+            // InternalCubeDSL.g:9181:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:9181:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
+            // InternalCubeDSL.g:9182:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0()); 
+            }
+            // InternalCubeDSL.g:9183:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
+            // InternalCubeDSL.g:9183: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"
+    // InternalCubeDSL.g:9192: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 {
+            // InternalCubeDSL.g:9196:1: ( rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1 )
+            // InternalCubeDSL.g:9197:2: rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1
+            {
+            pushFollow(FOLLOW_63);
+            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"
+    // InternalCubeDSL.g:9204: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 {
+            // InternalCubeDSL.g:9208:1: ( ( () ) )
+            // InternalCubeDSL.g:9209:1: ( () )
+            {
+            // InternalCubeDSL.g:9209:1: ( () )
+            // InternalCubeDSL.g:9210:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); 
+            }
+            // InternalCubeDSL.g:9211:2: ()
+            // InternalCubeDSL.g:9211: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"
+    // InternalCubeDSL.g:9219: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 {
+            // InternalCubeDSL.g:9223:1: ( rule__XRelationalExpression__Group_1_1_0_0__1__Impl )
+            // InternalCubeDSL.g:9224: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"
+    // InternalCubeDSL.g:9230: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 {
+            // InternalCubeDSL.g:9234:1: ( ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) ) )
+            // InternalCubeDSL.g:9235:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
+            {
+            // InternalCubeDSL.g:9235:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalCubeDSL.g:9236:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1()); 
+            }
+            // InternalCubeDSL.g:9237:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
+            // InternalCubeDSL.g:9237: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"
+    // InternalCubeDSL.g:9246: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 {
+            // InternalCubeDSL.g:9250:1: ( rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1 )
+            // InternalCubeDSL.g:9251:2: rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1
+            {
+            pushFollow(FOLLOW_49);
+            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"
+    // InternalCubeDSL.g:9258:1: rule__OpCompare__Group_1__0__Impl : ( '<' ) ;
+    public final void rule__OpCompare__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:9262:1: ( ( '<' ) )
+            // InternalCubeDSL.g:9263:1: ( '<' )
+            {
+            // InternalCubeDSL.g:9263:1: ( '<' )
+            // InternalCubeDSL.g:9264:2: '<'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0()); 
+            }
+            match(input,27,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"
+    // InternalCubeDSL.g:9273: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 {
+            // InternalCubeDSL.g:9277:1: ( rule__OpCompare__Group_1__1__Impl )
+            // InternalCubeDSL.g:9278: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"
+    // InternalCubeDSL.g:9284:1: rule__OpCompare__Group_1__1__Impl : ( '=' ) ;
+    public final void rule__OpCompare__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:9288:1: ( ( '=' ) )
+            // InternalCubeDSL.g:9289:1: ( '=' )
+            {
+            // InternalCubeDSL.g:9289:1: ( '=' )
+            // InternalCubeDSL.g:9290: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"
+    // InternalCubeDSL.g:9300: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 {
+            // InternalCubeDSL.g:9304:1: ( rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1 )
+            // InternalCubeDSL.g:9305:2: rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1
+            {
+            pushFollow(FOLLOW_67);
+            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"
+    // InternalCubeDSL.g:9312:1: rule__XOtherOperatorExpression__Group__0__Impl : ( ruleXAdditiveExpression ) ;
+    public final void rule__XOtherOperatorExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:9316:1: ( ( ruleXAdditiveExpression ) )
+            // InternalCubeDSL.g:9317:1: ( ruleXAdditiveExpression )
+            {
+            // InternalCubeDSL.g:9317:1: ( ruleXAdditiveExpression )
+            // InternalCubeDSL.g:9318: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"
+    // InternalCubeDSL.g:9327:1: rule__XOtherOperatorExpression__Group__1 : rule__XOtherOperatorExpression__Group__1__Impl ;
+    public final void rule__XOtherOperatorExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:9331:1: ( rule__XOtherOperatorExpression__Group__1__Impl )
+            // InternalCubeDSL.g:9332: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"
+    // InternalCubeDSL.g:9338: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 {
+            // InternalCubeDSL.g:9342:1: ( ( ( rule__XOtherOperatorExpression__Group_1__0 )* ) )
+            // InternalCubeDSL.g:9343:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
+            {
+            // InternalCubeDSL.g:9343:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
+            // InternalCubeDSL.g:9344:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1()); 
+            }
+            // InternalCubeDSL.g:9345:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
+            loop91:
+            do {
+                int alt91=2;
+                alt91 = dfa91.predict(input);
+                switch (alt91) {
+            	case 1 :
+            	    // InternalCubeDSL.g:9345:3: rule__XOtherOperatorExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_68);
+            	    rule__XOtherOperatorExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop91;
+                }
+            } 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"
+    // InternalCubeDSL.g:9354: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 {
+            // InternalCubeDSL.g:9358:1: ( rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1 )
+            // InternalCubeDSL.g:9359:2: rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:9366: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 {
+            // InternalCubeDSL.g:9370:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) ) )
+            // InternalCubeDSL.g:9371:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
+            {
+            // InternalCubeDSL.g:9371:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
+            // InternalCubeDSL.g:9372:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalCubeDSL.g:9373:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
+            // InternalCubeDSL.g:9373: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"
+    // InternalCubeDSL.g:9381: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 {
+            // InternalCubeDSL.g:9385:1: ( rule__XOtherOperatorExpression__Group_1__1__Impl )
+            // InternalCubeDSL.g:9386: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"
+    // InternalCubeDSL.g:9392: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 {
+            // InternalCubeDSL.g:9396:1: ( ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalCubeDSL.g:9397:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalCubeDSL.g:9397:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
+            // InternalCubeDSL.g:9398:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalCubeDSL.g:9399:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
+            // InternalCubeDSL.g:9399: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"
+    // InternalCubeDSL.g:9408: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 {
+            // InternalCubeDSL.g:9412:1: ( rule__XOtherOperatorExpression__Group_1_0__0__Impl )
+            // InternalCubeDSL.g:9413: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"
+    // InternalCubeDSL.g:9419: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 {
+            // InternalCubeDSL.g:9423:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) ) )
+            // InternalCubeDSL.g:9424:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:9424:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
+            // InternalCubeDSL.g:9425:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalCubeDSL.g:9426:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
+            // InternalCubeDSL.g:9426: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"
+    // InternalCubeDSL.g:9435: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 {
+            // InternalCubeDSL.g:9439:1: ( rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1 )
+            // InternalCubeDSL.g:9440:2: rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_67);
+            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"
+    // InternalCubeDSL.g:9447: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 {
+            // InternalCubeDSL.g:9451:1: ( ( () ) )
+            // InternalCubeDSL.g:9452:1: ( () )
+            {
+            // InternalCubeDSL.g:9452:1: ( () )
+            // InternalCubeDSL.g:9453:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalCubeDSL.g:9454:2: ()
+            // InternalCubeDSL.g:9454: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"
+    // InternalCubeDSL.g:9462: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 {
+            // InternalCubeDSL.g:9466:1: ( rule__XOtherOperatorExpression__Group_1_0_0__1__Impl )
+            // InternalCubeDSL.g:9467: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"
+    // InternalCubeDSL.g:9473: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 {
+            // InternalCubeDSL.g:9477:1: ( ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalCubeDSL.g:9478:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalCubeDSL.g:9478:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalCubeDSL.g:9479:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalCubeDSL.g:9480:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
+            // InternalCubeDSL.g:9480: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"
+    // InternalCubeDSL.g:9489: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 {
+            // InternalCubeDSL.g:9493:1: ( rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1 )
+            // InternalCubeDSL.g:9494:2: rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1
+            {
+            pushFollow(FOLLOW_69);
+            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"
+    // InternalCubeDSL.g:9501:1: rule__OpOther__Group_2__0__Impl : ( '>' ) ;
+    public final void rule__OpOther__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:9505:1: ( ( '>' ) )
+            // InternalCubeDSL.g:9506:1: ( '>' )
+            {
+            // InternalCubeDSL.g:9506:1: ( '>' )
+            // InternalCubeDSL.g:9507:2: '>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_2_0()); 
+            }
+            match(input,26,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"
+    // InternalCubeDSL.g:9516: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 {
+            // InternalCubeDSL.g:9520:1: ( rule__OpOther__Group_2__1__Impl )
+            // InternalCubeDSL.g:9521: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"
+    // InternalCubeDSL.g:9527:1: rule__OpOther__Group_2__1__Impl : ( '..' ) ;
+    public final void rule__OpOther__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:9531:1: ( ( '..' ) )
+            // InternalCubeDSL.g:9532:1: ( '..' )
+            {
+            // InternalCubeDSL.g:9532:1: ( '..' )
+            // InternalCubeDSL.g:9533:2: '..'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getFullStopFullStopKeyword_2_1()); 
+            }
+            match(input,30,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"
+    // InternalCubeDSL.g:9543: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 {
+            // InternalCubeDSL.g:9547:1: ( rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1 )
+            // InternalCubeDSL.g:9548:2: rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1
+            {
+            pushFollow(FOLLOW_70);
+            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"
+    // InternalCubeDSL.g:9555:1: rule__OpOther__Group_5__0__Impl : ( '>' ) ;
+    public final void rule__OpOther__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:9559:1: ( ( '>' ) )
+            // InternalCubeDSL.g:9560:1: ( '>' )
+            {
+            // InternalCubeDSL.g:9560:1: ( '>' )
+            // InternalCubeDSL.g:9561:2: '>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_0()); 
+            }
+            match(input,26,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"
+    // InternalCubeDSL.g:9570: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 {
+            // InternalCubeDSL.g:9574:1: ( rule__OpOther__Group_5__1__Impl )
+            // InternalCubeDSL.g:9575: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"
+    // InternalCubeDSL.g:9581: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 {
+            // InternalCubeDSL.g:9585:1: ( ( ( rule__OpOther__Alternatives_5_1 ) ) )
+            // InternalCubeDSL.g:9586:1: ( ( rule__OpOther__Alternatives_5_1 ) )
+            {
+            // InternalCubeDSL.g:9586:1: ( ( rule__OpOther__Alternatives_5_1 ) )
+            // InternalCubeDSL.g:9587:2: ( rule__OpOther__Alternatives_5_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getAlternatives_5_1()); 
+            }
+            // InternalCubeDSL.g:9588:2: ( rule__OpOther__Alternatives_5_1 )
+            // InternalCubeDSL.g:9588: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"
+    // InternalCubeDSL.g:9597: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 {
+            // InternalCubeDSL.g:9601:1: ( rule__OpOther__Group_5_1_0__0__Impl )
+            // InternalCubeDSL.g:9602: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"
+    // InternalCubeDSL.g:9608: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 {
+            // InternalCubeDSL.g:9612:1: ( ( ( rule__OpOther__Group_5_1_0_0__0 ) ) )
+            // InternalCubeDSL.g:9613:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:9613:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
+            // InternalCubeDSL.g:9614:2: ( rule__OpOther__Group_5_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0()); 
+            }
+            // InternalCubeDSL.g:9615:2: ( rule__OpOther__Group_5_1_0_0__0 )
+            // InternalCubeDSL.g:9615: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"
+    // InternalCubeDSL.g:9624: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 {
+            // InternalCubeDSL.g:9628:1: ( rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1 )
+            // InternalCubeDSL.g:9629:2: rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1
+            {
+            pushFollow(FOLLOW_70);
+            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"
+    // InternalCubeDSL.g:9636: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 {
+            // InternalCubeDSL.g:9640:1: ( ( '>' ) )
+            // InternalCubeDSL.g:9641:1: ( '>' )
+            {
+            // InternalCubeDSL.g:9641:1: ( '>' )
+            // InternalCubeDSL.g:9642:2: '>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_0()); 
+            }
+            match(input,26,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"
+    // InternalCubeDSL.g:9651: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 {
+            // InternalCubeDSL.g:9655:1: ( rule__OpOther__Group_5_1_0_0__1__Impl )
+            // InternalCubeDSL.g:9656: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"
+    // InternalCubeDSL.g:9662: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 {
+            // InternalCubeDSL.g:9666:1: ( ( '>' ) )
+            // InternalCubeDSL.g:9667:1: ( '>' )
+            {
+            // InternalCubeDSL.g:9667:1: ( '>' )
+            // InternalCubeDSL.g:9668:2: '>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1()); 
+            }
+            match(input,26,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"
+    // InternalCubeDSL.g:9678: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 {
+            // InternalCubeDSL.g:9682:1: ( rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1 )
+            // InternalCubeDSL.g:9683:2: rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1
+            {
+            pushFollow(FOLLOW_71);
+            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"
+    // InternalCubeDSL.g:9690:1: rule__OpOther__Group_6__0__Impl : ( '<' ) ;
+    public final void rule__OpOther__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:9694:1: ( ( '<' ) )
+            // InternalCubeDSL.g:9695:1: ( '<' )
+            {
+            // InternalCubeDSL.g:9695:1: ( '<' )
+            // InternalCubeDSL.g:9696:2: '<'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_0()); 
+            }
+            match(input,27,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"
+    // InternalCubeDSL.g:9705: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 {
+            // InternalCubeDSL.g:9709:1: ( rule__OpOther__Group_6__1__Impl )
+            // InternalCubeDSL.g:9710: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"
+    // InternalCubeDSL.g:9716: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 {
+            // InternalCubeDSL.g:9720:1: ( ( ( rule__OpOther__Alternatives_6_1 ) ) )
+            // InternalCubeDSL.g:9721:1: ( ( rule__OpOther__Alternatives_6_1 ) )
+            {
+            // InternalCubeDSL.g:9721:1: ( ( rule__OpOther__Alternatives_6_1 ) )
+            // InternalCubeDSL.g:9722:2: ( rule__OpOther__Alternatives_6_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getAlternatives_6_1()); 
+            }
+            // InternalCubeDSL.g:9723:2: ( rule__OpOther__Alternatives_6_1 )
+            // InternalCubeDSL.g:9723: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"
+    // InternalCubeDSL.g:9732: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 {
+            // InternalCubeDSL.g:9736:1: ( rule__OpOther__Group_6_1_0__0__Impl )
+            // InternalCubeDSL.g:9737: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"
+    // InternalCubeDSL.g:9743: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 {
+            // InternalCubeDSL.g:9747:1: ( ( ( rule__OpOther__Group_6_1_0_0__0 ) ) )
+            // InternalCubeDSL.g:9748:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:9748:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
+            // InternalCubeDSL.g:9749:2: ( rule__OpOther__Group_6_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0()); 
+            }
+            // InternalCubeDSL.g:9750:2: ( rule__OpOther__Group_6_1_0_0__0 )
+            // InternalCubeDSL.g:9750: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"
+    // InternalCubeDSL.g:9759: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 {
+            // InternalCubeDSL.g:9763:1: ( rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1 )
+            // InternalCubeDSL.g:9764:2: rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1
+            {
+            pushFollow(FOLLOW_55);
+            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"
+    // InternalCubeDSL.g:9771: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 {
+            // InternalCubeDSL.g:9775:1: ( ( '<' ) )
+            // InternalCubeDSL.g:9776:1: ( '<' )
+            {
+            // InternalCubeDSL.g:9776:1: ( '<' )
+            // InternalCubeDSL.g:9777:2: '<'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_0()); 
+            }
+            match(input,27,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"
+    // InternalCubeDSL.g:9786: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 {
+            // InternalCubeDSL.g:9790:1: ( rule__OpOther__Group_6_1_0_0__1__Impl )
+            // InternalCubeDSL.g:9791: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"
+    // InternalCubeDSL.g:9797: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 {
+            // InternalCubeDSL.g:9801:1: ( ( '<' ) )
+            // InternalCubeDSL.g:9802:1: ( '<' )
+            {
+            // InternalCubeDSL.g:9802:1: ( '<' )
+            // InternalCubeDSL.g:9803:2: '<'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); 
+            }
+            match(input,27,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"
+    // InternalCubeDSL.g:9813: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 {
+            // InternalCubeDSL.g:9817:1: ( rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1 )
+            // InternalCubeDSL.g:9818:2: rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1
+            {
+            pushFollow(FOLLOW_72);
+            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"
+    // InternalCubeDSL.g:9825:1: rule__XAdditiveExpression__Group__0__Impl : ( ruleXMultiplicativeExpression ) ;
+    public final void rule__XAdditiveExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:9829:1: ( ( ruleXMultiplicativeExpression ) )
+            // InternalCubeDSL.g:9830:1: ( ruleXMultiplicativeExpression )
+            {
+            // InternalCubeDSL.g:9830:1: ( ruleXMultiplicativeExpression )
+            // InternalCubeDSL.g:9831: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"
+    // InternalCubeDSL.g:9840:1: rule__XAdditiveExpression__Group__1 : rule__XAdditiveExpression__Group__1__Impl ;
+    public final void rule__XAdditiveExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:9844:1: ( rule__XAdditiveExpression__Group__1__Impl )
+            // InternalCubeDSL.g:9845: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"
+    // InternalCubeDSL.g:9851: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 {
+            // InternalCubeDSL.g:9855:1: ( ( ( rule__XAdditiveExpression__Group_1__0 )* ) )
+            // InternalCubeDSL.g:9856:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
+            {
+            // InternalCubeDSL.g:9856:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
+            // InternalCubeDSL.g:9857:2: ( rule__XAdditiveExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1()); 
+            }
+            // InternalCubeDSL.g:9858:2: ( rule__XAdditiveExpression__Group_1__0 )*
+            loop92:
+            do {
+                int alt92=2;
+                int LA92_0 = input.LA(1);
+
+                if ( (LA92_0==35) ) {
+                    int LA92_2 = input.LA(2);
+
+                    if ( (synpred153_InternalCubeDSL()) ) {
+                        alt92=1;
+                    }
+
+
+                }
+                else if ( (LA92_0==34) ) {
+                    int LA92_3 = input.LA(2);
+
+                    if ( (synpred153_InternalCubeDSL()) ) {
+                        alt92=1;
+                    }
+
+
+                }
+
+
+                switch (alt92) {
+            	case 1 :
+            	    // InternalCubeDSL.g:9858:3: rule__XAdditiveExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_73);
+            	    rule__XAdditiveExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop92;
+                }
+            } 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"
+    // InternalCubeDSL.g:9867: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 {
+            // InternalCubeDSL.g:9871:1: ( rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1 )
+            // InternalCubeDSL.g:9872:2: rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:9879: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 {
+            // InternalCubeDSL.g:9883:1: ( ( ( rule__XAdditiveExpression__Group_1_0__0 ) ) )
+            // InternalCubeDSL.g:9884:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
+            {
+            // InternalCubeDSL.g:9884:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
+            // InternalCubeDSL.g:9885:2: ( rule__XAdditiveExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalCubeDSL.g:9886:2: ( rule__XAdditiveExpression__Group_1_0__0 )
+            // InternalCubeDSL.g:9886: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"
+    // InternalCubeDSL.g:9894: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 {
+            // InternalCubeDSL.g:9898:1: ( rule__XAdditiveExpression__Group_1__1__Impl )
+            // InternalCubeDSL.g:9899: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"
+    // InternalCubeDSL.g:9905: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 {
+            // InternalCubeDSL.g:9909:1: ( ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalCubeDSL.g:9910:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalCubeDSL.g:9910:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
+            // InternalCubeDSL.g:9911:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalCubeDSL.g:9912:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
+            // InternalCubeDSL.g:9912: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"
+    // InternalCubeDSL.g:9921: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 {
+            // InternalCubeDSL.g:9925:1: ( rule__XAdditiveExpression__Group_1_0__0__Impl )
+            // InternalCubeDSL.g:9926: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"
+    // InternalCubeDSL.g:9932: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 {
+            // InternalCubeDSL.g:9936:1: ( ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) ) )
+            // InternalCubeDSL.g:9937:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:9937:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
+            // InternalCubeDSL.g:9938:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalCubeDSL.g:9939:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
+            // InternalCubeDSL.g:9939: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"
+    // InternalCubeDSL.g:9948: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 {
+            // InternalCubeDSL.g:9952:1: ( rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1 )
+            // InternalCubeDSL.g:9953:2: rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_72);
+            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"
+    // InternalCubeDSL.g:9960: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 {
+            // InternalCubeDSL.g:9964:1: ( ( () ) )
+            // InternalCubeDSL.g:9965:1: ( () )
+            {
+            // InternalCubeDSL.g:9965:1: ( () )
+            // InternalCubeDSL.g:9966:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalCubeDSL.g:9967:2: ()
+            // InternalCubeDSL.g:9967: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"
+    // InternalCubeDSL.g:9975: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 {
+            // InternalCubeDSL.g:9979:1: ( rule__XAdditiveExpression__Group_1_0_0__1__Impl )
+            // InternalCubeDSL.g:9980: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"
+    // InternalCubeDSL.g:9986: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 {
+            // InternalCubeDSL.g:9990:1: ( ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalCubeDSL.g:9991:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalCubeDSL.g:9991:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalCubeDSL.g:9992:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalCubeDSL.g:9993:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
+            // InternalCubeDSL.g:9993: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"
+    // InternalCubeDSL.g:10002: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 {
+            // InternalCubeDSL.g:10006:1: ( rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1 )
+            // InternalCubeDSL.g:10007:2: rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1
+            {
+            pushFollow(FOLLOW_74);
+            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"
+    // InternalCubeDSL.g:10014:1: rule__XMultiplicativeExpression__Group__0__Impl : ( ruleXUnaryOperation ) ;
+    public final void rule__XMultiplicativeExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:10018:1: ( ( ruleXUnaryOperation ) )
+            // InternalCubeDSL.g:10019:1: ( ruleXUnaryOperation )
+            {
+            // InternalCubeDSL.g:10019:1: ( ruleXUnaryOperation )
+            // InternalCubeDSL.g:10020: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"
+    // InternalCubeDSL.g:10029:1: rule__XMultiplicativeExpression__Group__1 : rule__XMultiplicativeExpression__Group__1__Impl ;
+    public final void rule__XMultiplicativeExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:10033:1: ( rule__XMultiplicativeExpression__Group__1__Impl )
+            // InternalCubeDSL.g:10034: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"
+    // InternalCubeDSL.g:10040: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 {
+            // InternalCubeDSL.g:10044:1: ( ( ( rule__XMultiplicativeExpression__Group_1__0 )* ) )
+            // InternalCubeDSL.g:10045:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
+            {
+            // InternalCubeDSL.g:10045:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
+            // InternalCubeDSL.g:10046:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1()); 
+            }
+            // InternalCubeDSL.g:10047:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
+            loop93:
+            do {
+                int alt93=2;
+                switch ( input.LA(1) ) {
+                case 36:
+                    {
+                    int LA93_2 = input.LA(2);
+
+                    if ( (synpred154_InternalCubeDSL()) ) {
+                        alt93=1;
+                    }
+
+
+                    }
+                    break;
+                case 37:
+                    {
+                    int LA93_3 = input.LA(2);
+
+                    if ( (synpred154_InternalCubeDSL()) ) {
+                        alt93=1;
+                    }
+
+
+                    }
+                    break;
+                case 38:
+                    {
+                    int LA93_4 = input.LA(2);
+
+                    if ( (synpred154_InternalCubeDSL()) ) {
+                        alt93=1;
+                    }
+
+
+                    }
+                    break;
+                case 39:
+                    {
+                    int LA93_5 = input.LA(2);
+
+                    if ( (synpred154_InternalCubeDSL()) ) {
+                        alt93=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt93) {
+            	case 1 :
+            	    // InternalCubeDSL.g:10047:3: rule__XMultiplicativeExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_75);
+            	    rule__XMultiplicativeExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop93;
+                }
+            } 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"
+    // InternalCubeDSL.g:10056: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 {
+            // InternalCubeDSL.g:10060:1: ( rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1 )
+            // InternalCubeDSL.g:10061:2: rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:10068: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 {
+            // InternalCubeDSL.g:10072:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) ) )
+            // InternalCubeDSL.g:10073:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
+            {
+            // InternalCubeDSL.g:10073:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
+            // InternalCubeDSL.g:10074:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalCubeDSL.g:10075:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
+            // InternalCubeDSL.g:10075: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"
+    // InternalCubeDSL.g:10083: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 {
+            // InternalCubeDSL.g:10087:1: ( rule__XMultiplicativeExpression__Group_1__1__Impl )
+            // InternalCubeDSL.g:10088: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"
+    // InternalCubeDSL.g:10094: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 {
+            // InternalCubeDSL.g:10098:1: ( ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalCubeDSL.g:10099:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalCubeDSL.g:10099:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
+            // InternalCubeDSL.g:10100:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalCubeDSL.g:10101:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
+            // InternalCubeDSL.g:10101: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"
+    // InternalCubeDSL.g:10110: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 {
+            // InternalCubeDSL.g:10114:1: ( rule__XMultiplicativeExpression__Group_1_0__0__Impl )
+            // InternalCubeDSL.g:10115: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"
+    // InternalCubeDSL.g:10121: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 {
+            // InternalCubeDSL.g:10125:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) ) )
+            // InternalCubeDSL.g:10126:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:10126:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
+            // InternalCubeDSL.g:10127:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalCubeDSL.g:10128:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
+            // InternalCubeDSL.g:10128: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"
+    // InternalCubeDSL.g:10137: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 {
+            // InternalCubeDSL.g:10141:1: ( rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1 )
+            // InternalCubeDSL.g:10142:2: rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_74);
+            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"
+    // InternalCubeDSL.g:10149: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 {
+            // InternalCubeDSL.g:10153:1: ( ( () ) )
+            // InternalCubeDSL.g:10154:1: ( () )
+            {
+            // InternalCubeDSL.g:10154:1: ( () )
+            // InternalCubeDSL.g:10155:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalCubeDSL.g:10156:2: ()
+            // InternalCubeDSL.g:10156: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"
+    // InternalCubeDSL.g:10164: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 {
+            // InternalCubeDSL.g:10168:1: ( rule__XMultiplicativeExpression__Group_1_0_0__1__Impl )
+            // InternalCubeDSL.g:10169: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"
+    // InternalCubeDSL.g:10175: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 {
+            // InternalCubeDSL.g:10179:1: ( ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalCubeDSL.g:10180:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalCubeDSL.g:10180:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalCubeDSL.g:10181:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalCubeDSL.g:10182:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
+            // InternalCubeDSL.g:10182: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"
+    // InternalCubeDSL.g:10191: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 {
+            // InternalCubeDSL.g:10195:1: ( rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1 )
+            // InternalCubeDSL.g:10196:2: rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1
+            {
+            pushFollow(FOLLOW_76);
+            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"
+    // InternalCubeDSL.g:10203:1: rule__XUnaryOperation__Group_0__0__Impl : ( () ) ;
+    public final void rule__XUnaryOperation__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:10207:1: ( ( () ) )
+            // InternalCubeDSL.g:10208:1: ( () )
+            {
+            // InternalCubeDSL.g:10208:1: ( () )
+            // InternalCubeDSL.g:10209:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0()); 
+            }
+            // InternalCubeDSL.g:10210:2: ()
+            // InternalCubeDSL.g:10210: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"
+    // InternalCubeDSL.g:10218: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 {
+            // InternalCubeDSL.g:10222:1: ( rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2 )
+            // InternalCubeDSL.g:10223:2: rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:10230: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 {
+            // InternalCubeDSL.g:10234:1: ( ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) ) )
+            // InternalCubeDSL.g:10235:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
+            {
+            // InternalCubeDSL.g:10235:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
+            // InternalCubeDSL.g:10236:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1()); 
+            }
+            // InternalCubeDSL.g:10237:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
+            // InternalCubeDSL.g:10237: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"
+    // InternalCubeDSL.g:10245: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 {
+            // InternalCubeDSL.g:10249:1: ( rule__XUnaryOperation__Group_0__2__Impl )
+            // InternalCubeDSL.g:10250: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"
+    // InternalCubeDSL.g:10256: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 {
+            // InternalCubeDSL.g:10260:1: ( ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) ) )
+            // InternalCubeDSL.g:10261:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
+            {
+            // InternalCubeDSL.g:10261:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
+            // InternalCubeDSL.g:10262:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2()); 
+            }
+            // InternalCubeDSL.g:10263:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
+            // InternalCubeDSL.g:10263: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"
+    // InternalCubeDSL.g:10272: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 {
+            // InternalCubeDSL.g:10276:1: ( rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1 )
+            // InternalCubeDSL.g:10277:2: rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1
+            {
+            pushFollow(FOLLOW_77);
+            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"
+    // InternalCubeDSL.g:10284:1: rule__XCastedExpression__Group__0__Impl : ( ruleXPostfixOperation ) ;
+    public final void rule__XCastedExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:10288:1: ( ( ruleXPostfixOperation ) )
+            // InternalCubeDSL.g:10289:1: ( ruleXPostfixOperation )
+            {
+            // InternalCubeDSL.g:10289:1: ( ruleXPostfixOperation )
+            // InternalCubeDSL.g:10290: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"
+    // InternalCubeDSL.g:10299:1: rule__XCastedExpression__Group__1 : rule__XCastedExpression__Group__1__Impl ;
+    public final void rule__XCastedExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:10303:1: ( rule__XCastedExpression__Group__1__Impl )
+            // InternalCubeDSL.g:10304: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"
+    // InternalCubeDSL.g:10310: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 {
+            // InternalCubeDSL.g:10314:1: ( ( ( rule__XCastedExpression__Group_1__0 )* ) )
+            // InternalCubeDSL.g:10315:1: ( ( rule__XCastedExpression__Group_1__0 )* )
+            {
+            // InternalCubeDSL.g:10315:1: ( ( rule__XCastedExpression__Group_1__0 )* )
+            // InternalCubeDSL.g:10316:2: ( rule__XCastedExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getGroup_1()); 
+            }
+            // InternalCubeDSL.g:10317:2: ( rule__XCastedExpression__Group_1__0 )*
+            loop94:
+            do {
+                int alt94=2;
+                int LA94_0 = input.LA(1);
+
+                if ( (LA94_0==95) ) {
+                    int LA94_2 = input.LA(2);
+
+                    if ( (synpred155_InternalCubeDSL()) ) {
+                        alt94=1;
+                    }
+
+
+                }
+
+
+                switch (alt94) {
+            	case 1 :
+            	    // InternalCubeDSL.g:10317:3: rule__XCastedExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_78);
+            	    rule__XCastedExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop94;
+                }
+            } 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"
+    // InternalCubeDSL.g:10326: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 {
+            // InternalCubeDSL.g:10330:1: ( rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1 )
+            // InternalCubeDSL.g:10331:2: rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalCubeDSL.g:10338: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 {
+            // InternalCubeDSL.g:10342:1: ( ( ( rule__XCastedExpression__Group_1_0__0 ) ) )
+            // InternalCubeDSL.g:10343:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
+            {
+            // InternalCubeDSL.g:10343:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
+            // InternalCubeDSL.g:10344:2: ( rule__XCastedExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalCubeDSL.g:10345:2: ( rule__XCastedExpression__Group_1_0__0 )
+            // InternalCubeDSL.g:10345: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"
+    // InternalCubeDSL.g:10353: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 {
+            // InternalCubeDSL.g:10357:1: ( rule__XCastedExpression__Group_1__1__Impl )
+            // InternalCubeDSL.g:10358: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"
+    // InternalCubeDSL.g:10364: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 {
+            // InternalCubeDSL.g:10368:1: ( ( ( rule__XCastedExpression__TypeAssignment_1_1 ) ) )
+            // InternalCubeDSL.g:10369:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
+            {
+            // InternalCubeDSL.g:10369:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
+            // InternalCubeDSL.g:10370:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1()); 
+            }
+            // InternalCubeDSL.g:10371:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
+            // InternalCubeDSL.g:10371: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"
+    // InternalCubeDSL.g:10380: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 {
+            // InternalCubeDSL.g:10384:1: ( rule__XCastedExpression__Group_1_0__0__Impl )
+            // InternalCubeDSL.g:10385: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"
+    // InternalCubeDSL.g:10391: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 {
+            // InternalCubeDSL.g:10395:1: ( ( ( rule__XCastedExpression__Group_1_0_0__0 ) ) )
+            // InternalCubeDSL.g:10396:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:10396:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
+            // InternalCubeDSL.g:10397:2: ( rule__XCastedExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalCubeDSL.g:10398:2: ( rule__XCastedExpression__Group_1_0_0__0 )
+            // InternalCubeDSL.g:10398: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"
+    // InternalCubeDSL.g:10407: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 {
+            // InternalCubeDSL.g:10411:1: ( rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1 )
+            // InternalCubeDSL.g:10412:2: rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_77);
+            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"
+    // InternalCubeDSL.g:10419: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 {
+            // InternalCubeDSL.g:10423:1: ( ( () ) )
+            // InternalCubeDSL.g:10424:1: ( () )
+            {
+            // InternalCubeDSL.g:10424:1: ( () )
+            // InternalCubeDSL.g:10425:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0()); 
+            }
+            // InternalCubeDSL.g:10426:2: ()
+            // InternalCubeDSL.g:10426: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"
+    // InternalCubeDSL.g:10434: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 {
+            // InternalCubeDSL.g:10438:1: ( rule__XCastedExpression__Group_1_0_0__1__Impl )
+            // InternalCubeDSL.g:10439: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"
+    // InternalCubeDSL.g:10445: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 {
+            // InternalCubeDSL.g:10449:1: ( ( 'as' ) )
+            // InternalCubeDSL.g:10450:1: ( 'as' )
+            {
+            // InternalCubeDSL.g:10450:1: ( 'as' )
+            // InternalCubeDSL.g:10451:2: 'as'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1()); 
+            }
+            match(input,95,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"
+    // InternalCubeDSL.g:10461: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 {
+            // InternalCubeDSL.g:10465:1: ( rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1 )
+            // InternalCubeDSL.g:10466:2: rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1
+            {
+            pushFollow(FOLLOW_79);
+            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"
+    // InternalCubeDSL.g:10473:1: rule__XPostfixOperation__Group__0__Impl : ( ruleXMemberFeatureCall ) ;
+    public final void rule__XPostfixOperation__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:10477:1: ( ( ruleXMemberFeatureCall ) )
+            // InternalCubeDSL.g:10478:1: ( ruleXMemberFeatureCall )
+            {
+            // InternalCubeDSL.g:10478:1: ( ruleXMemberFeatureCall )
+            // InternalCubeDSL.g:10479: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"
+    // InternalCubeDSL.g:10488:1: rule__XPostfixOperation__Group__1 : rule__XPostfixOperation__Group__1__Impl ;
+    public final void rule__XPostfixOperation__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:10492:1: ( rule__XPostfixOperation__Group__1__Impl )
+            // InternalCubeDSL.g:10493: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"
+    // InternalCubeDSL.g:10499: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 {
+            // InternalCubeDSL.g:10503:1: ( ( ( rule__XPostfixOperation__Group_1__0 )? ) )
+            // InternalCubeDSL.g:10504:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
+            {
+            // InternalCubeDSL.g:10504:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
+            // InternalCubeDSL.g:10505:2: ( rule__XPostfixOperation__Group_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getGroup_1()); 
+            }
+            // InternalCubeDSL.g:10506:2: ( rule__XPostfixOperation__Group_1__0 )?
+            int alt95=2;
+            int LA95_0 = input.LA(1);
+
+            if ( (LA95_0==41) ) {
+                int LA95_1 = input.LA(2);
+
+                if ( (synpred156_InternalCubeDSL()) ) {
+                    alt95=1;
+                }
+            }
+            else if ( (LA95_0==42) ) {
+                int LA95_2 = input.LA(2);
+
+                if ( (synpred156_InternalCubeDSL()) ) {
+                    alt95=1;
+                }
+            }
+            switch (alt95) {
+                case 1 :
+                    // InternalCubeDSL.g:10506: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"
+    // InternalCubeDSL.g:10515: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 {
+            // InternalCubeDSL.g:10519:1: ( rule__XPostfixOperation__Group_1__0__Impl )
+            // InternalCubeDSL.g:10520: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"
+    // InternalCubeDSL.g:10526: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 {
+            // InternalCubeDSL.g:10530:1: ( ( ( rule__XPostfixOperation__Group_1_0__0 ) ) )
+            // InternalCubeDSL.g:10531:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
+            {
+            // InternalCubeDSL.g:10531:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
+            // InternalCubeDSL.g:10532:2: ( rule__XPostfixOperation__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getGroup_1_0()); 
+            }
+            // InternalCubeDSL.g:10533:2: ( rule__XPostfixOperation__Group_1_0__0 )
+            // InternalCubeDSL.g:10533: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"
+    // InternalCubeDSL.g:10542: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 {
+            // InternalCubeDSL.g:10546:1: ( rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1 )
+            // InternalCubeDSL.g:10547:2: rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1
+            {
+            pushFollow(FOLLOW_79);
+            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"
+    // InternalCubeDSL.g:10554:1: rule__XPostfixOperation__Group_1_0__0__Impl : ( () ) ;
+    public final void rule__XPostfixOperation__Group_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:10558:1: ( ( () ) )
+            // InternalCubeDSL.g:10559:1: ( () )
+            {
+            // InternalCubeDSL.g:10559:1: ( () )
+            // InternalCubeDSL.g:10560:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0()); 
+            }
+            // InternalCubeDSL.g:10561:2: ()
+            // InternalCubeDSL.g:10561: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"
+    // InternalCubeDSL.g:10569: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 {
+            // InternalCubeDSL.g:10573:1: ( rule__XPostfixOperation__Group_1_0__1__Impl )
+            // InternalCubeDSL.g:10574: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"
+    // InternalCubeDSL.g:10580: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 {
+            // InternalCubeDSL.g:10584:1: ( ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) ) )
+            // InternalCubeDSL.g:10585:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
+            {
+            // InternalCubeDSL.g:10585:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
+            // InternalCubeDSL.g:10586:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1()); 
+            }
+            // InternalCubeDSL.g:10587:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
+            // InternalCubeDSL.g:10587: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"
+    // InternalCubeDSL.g:10596: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 {
+            // InternalCubeDSL.g:10600:1: ( rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1 )
+            // InternalCubeDSL.g:10601:2: rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1
+            {
+            pushFollow(FOLLOW_80);
+            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"
+    // InternalCubeDSL.g:10608:1: rule__XMemberFeatureCall__Group__0__Impl : ( ruleXPrimaryExpression ) ;
+    public final void rule__XMemberFeatureCall__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:10612:1: ( ( ruleXPrimaryExpression ) )
+            // InternalCubeDSL.g:10613:1: ( ruleXPrimaryExpression )
+            {
+            // InternalCubeDSL.g:10613:1: ( ruleXPrimaryExpression )
+            // InternalCubeDSL.g:10614: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"
+    // InternalCubeDSL.g:10623:1: rule__XMemberFeatureCall__Group__1 : rule__XMemberFeatureCall__Group__1__Impl ;
+    public final void rule__XMemberFeatureCall__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:10627:1: ( rule__XMemberFeatureCall__Group__1__Impl )
+            // InternalCubeDSL.g:10628: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"
+    // InternalCubeDSL.g:10634:1: rule__XMemberFeatureCall__Group__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) ;
+    public final void rule__XMemberFeatureCall__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:10638:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) )
+            // InternalCubeDSL.g:10639:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
+            {
+            // InternalCubeDSL.g:10639:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
+            // InternalCubeDSL.g:10640:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1()); 
+            }
+            // InternalCubeDSL.g:10641:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
+            loop96:
+            do {
+                int alt96=2;
+                switch ( input.LA(1) ) {
+                case 43:
+                    {
+                    int LA96_2 = input.LA(2);
+
+                    if ( (synpred157_InternalCubeDSL()) ) {
+                        alt96=1;
+                    }
+
+
+                    }
+                    break;
+                case 127:
+                    {
+                    int LA96_3 = input.LA(2);
+
+                    if ( (synpred157_InternalCubeDSL()) ) {
+                        alt96=1;
+                    }
+
+
+                    }
+                    break;
+                case 128:
+                    {
+                    int LA96_4 = input.LA(2);
+
+                    if ( (synpred157_InternalCubeDSL()) ) {
+                        alt96=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt96) {
+            	case 1 :
+            	    // InternalCubeDSL.g:10641:3: rule__XMemberFeatureCall__Alternatives_1
+            	    {
+            	    pushFollow(FOLLOW_81);
+            	    rule__XMemberFeatureCall__Alternatives_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop96;
+                }
+            } 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"
+    // InternalCubeDSL.g:10650: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 {
+            // InternalCubeDSL.g:10654:1: ( rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1 )
+            // InternalCubeDSL.g:10655:2: rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:10662: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 {
+            // InternalCubeDSL.g:10666:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) ) )
+            // InternalCubeDSL.g:10667:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:10667:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
+            // InternalCubeDSL.g:10668:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0()); 
+            }
+            // InternalCubeDSL.g:10669:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
+            // InternalCubeDSL.g:10669: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"
+    // InternalCubeDSL.g:10677: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 {
+            // InternalCubeDSL.g:10681:1: ( rule__XMemberFeatureCall__Group_1_0__1__Impl )
+            // InternalCubeDSL.g:10682: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"
+    // InternalCubeDSL.g:10688: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 {
+            // InternalCubeDSL.g:10692:1: ( ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) ) )
+            // InternalCubeDSL.g:10693:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
+            {
+            // InternalCubeDSL.g:10693:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
+            // InternalCubeDSL.g:10694:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1()); 
+            }
+            // InternalCubeDSL.g:10695:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
+            // InternalCubeDSL.g:10695: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"
+    // InternalCubeDSL.g:10704: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 {
+            // InternalCubeDSL.g:10708:1: ( rule__XMemberFeatureCall__Group_1_0_0__0__Impl )
+            // InternalCubeDSL.g:10709: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"
+    // InternalCubeDSL.g:10715: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 {
+            // InternalCubeDSL.g:10719:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) ) )
+            // InternalCubeDSL.g:10720:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:10720:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
+            // InternalCubeDSL.g:10721:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0()); 
+            }
+            // InternalCubeDSL.g:10722:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
+            // InternalCubeDSL.g:10722: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"
+    // InternalCubeDSL.g:10731: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 {
+            // InternalCubeDSL.g:10735:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1 )
+            // InternalCubeDSL.g:10736:2: rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1
+            {
+            pushFollow(FOLLOW_82);
+            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"
+    // InternalCubeDSL.g:10743: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 {
+            // InternalCubeDSL.g:10747:1: ( ( () ) )
+            // InternalCubeDSL.g:10748:1: ( () )
+            {
+            // InternalCubeDSL.g:10748:1: ( () )
+            // InternalCubeDSL.g:10749:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0()); 
+            }
+            // InternalCubeDSL.g:10750:2: ()
+            // InternalCubeDSL.g:10750: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"
+    // InternalCubeDSL.g:10758: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 {
+            // InternalCubeDSL.g:10762:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2 )
+            // InternalCubeDSL.g:10763:2: rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalCubeDSL.g:10770: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 {
+            // InternalCubeDSL.g:10774:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) ) )
+            // InternalCubeDSL.g:10775:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
+            {
+            // InternalCubeDSL.g:10775:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
+            // InternalCubeDSL.g:10776:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_0_0_0_1()); 
+            }
+            // InternalCubeDSL.g:10777:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
+            // InternalCubeDSL.g:10777: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"
+    // InternalCubeDSL.g:10785: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 {
+            // InternalCubeDSL.g:10789:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3 )
+            // InternalCubeDSL.g:10790:2: rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3
+            {
+            pushFollow(FOLLOW_49);
+            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"
+    // InternalCubeDSL.g:10797: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 {
+            // InternalCubeDSL.g:10801:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) ) )
+            // InternalCubeDSL.g:10802:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
+            {
+            // InternalCubeDSL.g:10802:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
+            // InternalCubeDSL.g:10803:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2()); 
+            }
+            // InternalCubeDSL.g:10804:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
+            // InternalCubeDSL.g:10804: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"
+    // InternalCubeDSL.g:10812: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 {
+            // InternalCubeDSL.g:10816:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl )
+            // InternalCubeDSL.g:10817: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"
+    // InternalCubeDSL.g:10823: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 {
+            // InternalCubeDSL.g:10827:1: ( ( ruleOpSingleAssign ) )
+            // InternalCubeDSL.g:10828:1: ( ruleOpSingleAssign )
+            {
+            // InternalCubeDSL.g:10828:1: ( ruleOpSingleAssign )
+            // InternalCubeDSL.g:10829: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"
+    // InternalCubeDSL.g:10839: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 {
+            // InternalCubeDSL.g:10843:1: ( rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1 )
+            // InternalCubeDSL.g:10844:2: rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1
+            {
+            pushFollow(FOLLOW_83);
+            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"
+    // InternalCubeDSL.g:10851: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 {
+            // InternalCubeDSL.g:10855:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) ) )
+            // InternalCubeDSL.g:10856:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
+            {
+            // InternalCubeDSL.g:10856:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
+            // InternalCubeDSL.g:10857:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0()); 
+            }
+            // InternalCubeDSL.g:10858:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
+            // InternalCubeDSL.g:10858: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"
+    // InternalCubeDSL.g:10866: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 {
+            // InternalCubeDSL.g:10870:1: ( rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2 )
+            // InternalCubeDSL.g:10871:2: rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2
+            {
+            pushFollow(FOLLOW_83);
+            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"
+    // InternalCubeDSL.g:10878: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 {
+            // InternalCubeDSL.g:10882:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? ) )
+            // InternalCubeDSL.g:10883:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
+            {
+            // InternalCubeDSL.g:10883:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
+            // InternalCubeDSL.g:10884:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1()); 
+            }
+            // InternalCubeDSL.g:10885:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
+            int alt97=2;
+            int LA97_0 = input.LA(1);
+
+            if ( (LA97_0==27) ) {
+                alt97=1;
+            }
+            switch (alt97) {
+                case 1 :
+                    // InternalCubeDSL.g:10885: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"
+    // InternalCubeDSL.g:10893: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 {
+            // InternalCubeDSL.g:10897:1: ( rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3 )
+            // InternalCubeDSL.g:10898:2: rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3
+            {
+            pushFollow(FOLLOW_84);
+            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"
+    // InternalCubeDSL.g:10905: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 {
+            // InternalCubeDSL.g:10909:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) ) )
+            // InternalCubeDSL.g:10910:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
+            {
+            // InternalCubeDSL.g:10910:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
+            // InternalCubeDSL.g:10911:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2()); 
+            }
+            // InternalCubeDSL.g:10912:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
+            // InternalCubeDSL.g:10912: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"
+    // InternalCubeDSL.g:10920: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 {
+            // InternalCubeDSL.g:10924:1: ( rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4 )
+            // InternalCubeDSL.g:10925:2: rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4
+            {
+            pushFollow(FOLLOW_84);
+            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"
+    // InternalCubeDSL.g:10932: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 {
+            // InternalCubeDSL.g:10936:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? ) )
+            // InternalCubeDSL.g:10937:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
+            {
+            // InternalCubeDSL.g:10937:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
+            // InternalCubeDSL.g:10938:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3()); 
+            }
+            // InternalCubeDSL.g:10939:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
+            int alt98=2;
+            alt98 = dfa98.predict(input);
+            switch (alt98) {
+                case 1 :
+                    // InternalCubeDSL.g:10939: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"
+    // InternalCubeDSL.g:10947: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 {
+            // InternalCubeDSL.g:10951:1: ( rule__XMemberFeatureCall__Group_1_1__4__Impl )
+            // InternalCubeDSL.g:10952: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"
+    // InternalCubeDSL.g:10958: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 {
+            // InternalCubeDSL.g:10962:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? ) )
+            // InternalCubeDSL.g:10963:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
+            {
+            // InternalCubeDSL.g:10963:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
+            // InternalCubeDSL.g:10964:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4()); 
+            }
+            // InternalCubeDSL.g:10965:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
+            int alt99=2;
+            alt99 = dfa99.predict(input);
+            switch (alt99) {
+                case 1 :
+                    // InternalCubeDSL.g:10965: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"
+    // InternalCubeDSL.g:10974: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 {
+            // InternalCubeDSL.g:10978:1: ( rule__XMemberFeatureCall__Group_1_1_0__0__Impl )
+            // InternalCubeDSL.g:10979: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"
+    // InternalCubeDSL.g:10985: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 {
+            // InternalCubeDSL.g:10989:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) ) )
+            // InternalCubeDSL.g:10990:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:10990:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
+            // InternalCubeDSL.g:10991:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0()); 
+            }
+            // InternalCubeDSL.g:10992:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
+            // InternalCubeDSL.g:10992: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"
+    // InternalCubeDSL.g:11001: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 {
+            // InternalCubeDSL.g:11005:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1 )
+            // InternalCubeDSL.g:11006:2: rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1
+            {
+            pushFollow(FOLLOW_80);
+            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"
+    // InternalCubeDSL.g:11013: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 {
+            // InternalCubeDSL.g:11017:1: ( ( () ) )
+            // InternalCubeDSL.g:11018:1: ( () )
+            {
+            // InternalCubeDSL.g:11018:1: ( () )
+            // InternalCubeDSL.g:11019:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0()); 
+            }
+            // InternalCubeDSL.g:11020:2: ()
+            // InternalCubeDSL.g:11020: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"
+    // InternalCubeDSL.g:11028: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 {
+            // InternalCubeDSL.g:11032:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl )
+            // InternalCubeDSL.g:11033: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"
+    // InternalCubeDSL.g:11039: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 {
+            // InternalCubeDSL.g:11043:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) ) )
+            // InternalCubeDSL.g:11044:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
+            {
+            // InternalCubeDSL.g:11044:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
+            // InternalCubeDSL.g:11045:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_0_0_1()); 
+            }
+            // InternalCubeDSL.g:11046:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
+            // InternalCubeDSL.g:11046: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"
+    // InternalCubeDSL.g:11055: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 {
+            // InternalCubeDSL.g:11059:1: ( rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1 )
+            // InternalCubeDSL.g:11060:2: rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1
+            {
+            pushFollow(FOLLOW_85);
+            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"
+    // InternalCubeDSL.g:11067: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 {
+            // InternalCubeDSL.g:11071:1: ( ( '<' ) )
+            // InternalCubeDSL.g:11072:1: ( '<' )
+            {
+            // InternalCubeDSL.g:11072:1: ( '<' )
+            // InternalCubeDSL.g:11073:2: '<'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0()); 
+            }
+            match(input,27,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"
+    // InternalCubeDSL.g:11082: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 {
+            // InternalCubeDSL.g:11086:1: ( rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2 )
+            // InternalCubeDSL.g:11087:2: rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2
+            {
+            pushFollow(FOLLOW_86);
+            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"
+    // InternalCubeDSL.g:11094: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 {
+            // InternalCubeDSL.g:11098:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) ) )
+            // InternalCubeDSL.g:11099:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
+            {
+            // InternalCubeDSL.g:11099:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
+            // InternalCubeDSL.g:11100:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1()); 
+            }
+            // InternalCubeDSL.g:11101:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
+            // InternalCubeDSL.g:11101: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"
+    // InternalCubeDSL.g:11109: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 {
+            // InternalCubeDSL.g:11113:1: ( rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3 )
+            // InternalCubeDSL.g:11114:2: rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3
+            {
+            pushFollow(FOLLOW_86);
+            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"
+    // InternalCubeDSL.g:11121: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 {
+            // InternalCubeDSL.g:11125:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* ) )
+            // InternalCubeDSL.g:11126:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
+            {
+            // InternalCubeDSL.g:11126:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
+            // InternalCubeDSL.g:11127:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2()); 
+            }
+            // InternalCubeDSL.g:11128:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
+            loop100:
+            do {
+                int alt100=2;
+                int LA100_0 = input.LA(1);
+
+                if ( (LA100_0==90) ) {
+                    alt100=1;
+                }
+
+
+                switch (alt100) {
+            	case 1 :
+            	    // InternalCubeDSL.g:11128:3: rule__XMemberFeatureCall__Group_1_1_1_2__0
+            	    {
+            	    pushFollow(FOLLOW_47);
+            	    rule__XMemberFeatureCall__Group_1_1_1_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop100;
+                }
+            } 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"
+    // InternalCubeDSL.g:11136: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 {
+            // InternalCubeDSL.g:11140:1: ( rule__XMemberFeatureCall__Group_1_1_1__3__Impl )
+            // InternalCubeDSL.g:11141: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"
+    // InternalCubeDSL.g:11147: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 {
+            // InternalCubeDSL.g:11151:1: ( ( '>' ) )
+            // InternalCubeDSL.g:11152:1: ( '>' )
+            {
+            // InternalCubeDSL.g:11152:1: ( '>' )
+            // InternalCubeDSL.g:11153:2: '>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3()); 
+            }
+            match(input,26,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"
+    // InternalCubeDSL.g:11163: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 {
+            // InternalCubeDSL.g:11167:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1 )
+            // InternalCubeDSL.g:11168:2: rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1
+            {
+            pushFollow(FOLLOW_85);
+            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"
+    // InternalCubeDSL.g:11175: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 {
+            // InternalCubeDSL.g:11179:1: ( ( ',' ) )
+            // InternalCubeDSL.g:11180:1: ( ',' )
+            {
+            // InternalCubeDSL.g:11180:1: ( ',' )
+            // InternalCubeDSL.g:11181:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0()); 
+            }
+            match(input,90,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"
+    // InternalCubeDSL.g:11190: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 {
+            // InternalCubeDSL.g:11194:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl )
+            // InternalCubeDSL.g:11195: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"
+    // InternalCubeDSL.g:11201: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 {
+            // InternalCubeDSL.g:11205:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) ) )
+            // InternalCubeDSL.g:11206:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
+            {
+            // InternalCubeDSL.g:11206:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
+            // InternalCubeDSL.g:11207:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1()); 
+            }
+            // InternalCubeDSL.g:11208:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
+            // InternalCubeDSL.g:11208: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"
+    // InternalCubeDSL.g:11217: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 {
+            // InternalCubeDSL.g:11221:1: ( rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1 )
+            // InternalCubeDSL.g:11222:2: rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1
+            {
+            pushFollow(FOLLOW_87);
+            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"
+    // InternalCubeDSL.g:11229: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 {
+            // InternalCubeDSL.g:11233:1: ( ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) ) )
+            // InternalCubeDSL.g:11234:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
+            {
+            // InternalCubeDSL.g:11234:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
+            // InternalCubeDSL.g:11235:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0()); 
+            }
+            // InternalCubeDSL.g:11236:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
+            // InternalCubeDSL.g:11236: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"
+    // InternalCubeDSL.g:11244: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 {
+            // InternalCubeDSL.g:11248:1: ( rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2 )
+            // InternalCubeDSL.g:11249:2: rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2
+            {
+            pushFollow(FOLLOW_87);
+            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"
+    // InternalCubeDSL.g:11256: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 {
+            // InternalCubeDSL.g:11260:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? ) )
+            // InternalCubeDSL.g:11261:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
+            {
+            // InternalCubeDSL.g:11261:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
+            // InternalCubeDSL.g:11262:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_3_1()); 
+            }
+            // InternalCubeDSL.g:11263:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
+            int alt101=2;
+            int LA101_0 = input.LA(1);
+
+            if ( ((LA101_0>=RULE_ID && LA101_0<=RULE_DECIMAL)||LA101_0==27||LA101_0==31||(LA101_0>=34 && LA101_0<=35)||LA101_0==40||(LA101_0>=45 && LA101_0<=50)||LA101_0==74||LA101_0==88||(LA101_0>=92 && LA101_0<=93)||LA101_0==96||LA101_0==98||(LA101_0>=102 && LA101_0<=110)||LA101_0==112||LA101_0==129||LA101_0==131) ) {
+                alt101=1;
+            }
+            switch (alt101) {
+                case 1 :
+                    // InternalCubeDSL.g:11263: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"
+    // InternalCubeDSL.g:11271: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 {
+            // InternalCubeDSL.g:11275:1: ( rule__XMemberFeatureCall__Group_1_1_3__2__Impl )
+            // InternalCubeDSL.g:11276: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"
+    // InternalCubeDSL.g:11282: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 {
+            // InternalCubeDSL.g:11286:1: ( ( ')' ) )
+            // InternalCubeDSL.g:11287:1: ( ')' )
+            {
+            // InternalCubeDSL.g:11287:1: ( ')' )
+            // InternalCubeDSL.g:11288:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2()); 
+            }
+            match(input,89,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"
+    // InternalCubeDSL.g:11298: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 {
+            // InternalCubeDSL.g:11302:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1 )
+            // InternalCubeDSL.g:11303:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1
+            {
+            pushFollow(FOLLOW_46);
+            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"
+    // InternalCubeDSL.g:11310: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 {
+            // InternalCubeDSL.g:11314:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) ) )
+            // InternalCubeDSL.g:11315:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
+            {
+            // InternalCubeDSL.g:11315:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
+            // InternalCubeDSL.g:11316:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0()); 
+            }
+            // InternalCubeDSL.g:11317:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
+            // InternalCubeDSL.g:11317: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"
+    // InternalCubeDSL.g:11325: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 {
+            // InternalCubeDSL.g:11329:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl )
+            // InternalCubeDSL.g:11330: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"
+    // InternalCubeDSL.g:11336: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 {
+            // InternalCubeDSL.g:11340:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* ) )
+            // InternalCubeDSL.g:11341:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
+            {
+            // InternalCubeDSL.g:11341:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
+            // InternalCubeDSL.g:11342: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()); 
+            }
+            // InternalCubeDSL.g:11343:2: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )*
+            loop102:
+            do {
+                int alt102=2;
+                int LA102_0 = input.LA(1);
+
+                if ( (LA102_0==90) ) {
+                    alt102=1;
+                }
+
+
+                switch (alt102) {
+            	case 1 :
+            	    // InternalCubeDSL.g:11343:3: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_47);
+            	    rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop102;
+                }
+            } 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"
+    // InternalCubeDSL.g:11352: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 {
+            // InternalCubeDSL.g:11356:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 )
+            // InternalCubeDSL.g:11357:2: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:11364: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 {
+            // InternalCubeDSL.g:11368:1: ( ( ',' ) )
+            // InternalCubeDSL.g:11369:1: ( ',' )
+            {
+            // InternalCubeDSL.g:11369:1: ( ',' )
+            // InternalCubeDSL.g:11370:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0()); 
+            }
+            match(input,90,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"
+    // InternalCubeDSL.g:11379: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 {
+            // InternalCubeDSL.g:11383:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl )
+            // InternalCubeDSL.g:11384: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"
+    // InternalCubeDSL.g:11390: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 {
+            // InternalCubeDSL.g:11394:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) ) )
+            // InternalCubeDSL.g:11395:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
+            {
+            // InternalCubeDSL.g:11395:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
+            // InternalCubeDSL.g:11396: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()); 
+            }
+            // InternalCubeDSL.g:11397:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 )
+            // InternalCubeDSL.g:11397: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"
+    // InternalCubeDSL.g:11406: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 {
+            // InternalCubeDSL.g:11410:1: ( rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1 )
+            // InternalCubeDSL.g:11411:2: rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1
+            {
+            pushFollow(FOLLOW_51);
+            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"
+    // InternalCubeDSL.g:11418:1: rule__XSetLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XSetLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:11422:1: ( ( () ) )
+            // InternalCubeDSL.g:11423:1: ( () )
+            {
+            // InternalCubeDSL.g:11423:1: ( () )
+            // InternalCubeDSL.g:11424:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0()); 
+            }
+            // InternalCubeDSL.g:11425:2: ()
+            // InternalCubeDSL.g:11425: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"
+    // InternalCubeDSL.g:11433: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 {
+            // InternalCubeDSL.g:11437:1: ( rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2 )
+            // InternalCubeDSL.g:11438:2: rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            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"
+    // InternalCubeDSL.g:11445:1: rule__XSetLiteral__Group__1__Impl : ( '#' ) ;
+    public final void rule__XSetLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:11449:1: ( ( '#' ) )
+            // InternalCubeDSL.g:11450:1: ( '#' )
+            {
+            // InternalCubeDSL.g:11450:1: ( '#' )
+            // InternalCubeDSL.g:11451:2: '#'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1()); 
+            }
+            match(input,92,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"
+    // InternalCubeDSL.g:11460: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 {
+            // InternalCubeDSL.g:11464:1: ( rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3 )
+            // InternalCubeDSL.g:11465:2: rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3
+            {
+            pushFollow(FOLLOW_88);
+            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"
+    // InternalCubeDSL.g:11472:1: rule__XSetLiteral__Group__2__Impl : ( '{' ) ;
+    public final void rule__XSetLiteral__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:11476:1: ( ( '{' ) )
+            // InternalCubeDSL.g:11477:1: ( '{' )
+            {
+            // InternalCubeDSL.g:11477:1: ( '{' )
+            // InternalCubeDSL.g:11478:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2()); 
+            }
+            match(input,74,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"
+    // InternalCubeDSL.g:11487: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 {
+            // InternalCubeDSL.g:11491:1: ( rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4 )
+            // InternalCubeDSL.g:11492:2: rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4
+            {
+            pushFollow(FOLLOW_88);
+            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"
+    // InternalCubeDSL.g:11499: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 {
+            // InternalCubeDSL.g:11503:1: ( ( ( rule__XSetLiteral__Group_3__0 )? ) )
+            // InternalCubeDSL.g:11504:1: ( ( rule__XSetLiteral__Group_3__0 )? )
+            {
+            // InternalCubeDSL.g:11504:1: ( ( rule__XSetLiteral__Group_3__0 )? )
+            // InternalCubeDSL.g:11505:2: ( rule__XSetLiteral__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getGroup_3()); 
+            }
+            // InternalCubeDSL.g:11506:2: ( rule__XSetLiteral__Group_3__0 )?
+            int alt103=2;
+            int LA103_0 = input.LA(1);
+
+            if ( ((LA103_0>=RULE_ID && LA103_0<=RULE_DECIMAL)||LA103_0==27||(LA103_0>=34 && LA103_0<=35)||LA103_0==40||(LA103_0>=45 && LA103_0<=50)||LA103_0==74||LA103_0==88||(LA103_0>=92 && LA103_0<=93)||LA103_0==96||LA103_0==98||(LA103_0>=102 && LA103_0<=110)||LA103_0==112||LA103_0==131) ) {
+                alt103=1;
+            }
+            switch (alt103) {
+                case 1 :
+                    // InternalCubeDSL.g:11506: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"
+    // InternalCubeDSL.g:11514:1: rule__XSetLiteral__Group__4 : rule__XSetLiteral__Group__4__Impl ;
+    public final void rule__XSetLiteral__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:11518:1: ( rule__XSetLiteral__Group__4__Impl )
+            // InternalCubeDSL.g:11519: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"
+    // InternalCubeDSL.g:11525:1: rule__XSetLiteral__Group__4__Impl : ( '}' ) ;
+    public final void rule__XSetLiteral__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:11529:1: ( ( '}' ) )
+            // InternalCubeDSL.g:11530:1: ( '}' )
+            {
+            // InternalCubeDSL.g:11530:1: ( '}' )
+            // InternalCubeDSL.g:11531:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4()); 
+            }
+            match(input,75,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"
+    // InternalCubeDSL.g:11541: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 {
+            // InternalCubeDSL.g:11545:1: ( rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1 )
+            // InternalCubeDSL.g:11546:2: rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1
+            {
+            pushFollow(FOLLOW_46);
+            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"
+    // InternalCubeDSL.g:11553: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 {
+            // InternalCubeDSL.g:11557:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) ) )
+            // InternalCubeDSL.g:11558:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
+            {
+            // InternalCubeDSL.g:11558:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
+            // InternalCubeDSL.g:11559:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0()); 
+            }
+            // InternalCubeDSL.g:11560:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
+            // InternalCubeDSL.g:11560: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"
+    // InternalCubeDSL.g:11568: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 {
+            // InternalCubeDSL.g:11572:1: ( rule__XSetLiteral__Group_3__1__Impl )
+            // InternalCubeDSL.g:11573: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"
+    // InternalCubeDSL.g:11579: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 {
+            // InternalCubeDSL.g:11583:1: ( ( ( rule__XSetLiteral__Group_3_1__0 )* ) )
+            // InternalCubeDSL.g:11584:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
+            {
+            // InternalCubeDSL.g:11584:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
+            // InternalCubeDSL.g:11585:2: ( rule__XSetLiteral__Group_3_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getGroup_3_1()); 
+            }
+            // InternalCubeDSL.g:11586:2: ( rule__XSetLiteral__Group_3_1__0 )*
+            loop104:
+            do {
+                int alt104=2;
+                int LA104_0 = input.LA(1);
+
+                if ( (LA104_0==90) ) {
+                    alt104=1;
+                }
+
+
+                switch (alt104) {
+            	case 1 :
+            	    // InternalCubeDSL.g:11586:3: rule__XSetLiteral__Group_3_1__0
+            	    {
+            	    pushFollow(FOLLOW_47);
+            	    rule__XSetLiteral__Group_3_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop104;
+                }
+            } 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"
+    // InternalCubeDSL.g:11595: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 {
+            // InternalCubeDSL.g:11599:1: ( rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1 )
+            // InternalCubeDSL.g:11600:2: rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:11607:1: rule__XSetLiteral__Group_3_1__0__Impl : ( ',' ) ;
+    public final void rule__XSetLiteral__Group_3_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:11611:1: ( ( ',' ) )
+            // InternalCubeDSL.g:11612:1: ( ',' )
+            {
+            // InternalCubeDSL.g:11612:1: ( ',' )
+            // InternalCubeDSL.g:11613:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0()); 
+            }
+            match(input,90,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"
+    // InternalCubeDSL.g:11622: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 {
+            // InternalCubeDSL.g:11626:1: ( rule__XSetLiteral__Group_3_1__1__Impl )
+            // InternalCubeDSL.g:11627: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"
+    // InternalCubeDSL.g:11633: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 {
+            // InternalCubeDSL.g:11637:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) ) )
+            // InternalCubeDSL.g:11638:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
+            {
+            // InternalCubeDSL.g:11638:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalCubeDSL.g:11639:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1()); 
+            }
+            // InternalCubeDSL.g:11640:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
+            // InternalCubeDSL.g:11640: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"
+    // InternalCubeDSL.g:11649: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 {
+            // InternalCubeDSL.g:11653:1: ( rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1 )
+            // InternalCubeDSL.g:11654:2: rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1
+            {
+            pushFollow(FOLLOW_51);
+            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"
+    // InternalCubeDSL.g:11661:1: rule__XListLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XListLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:11665:1: ( ( () ) )
+            // InternalCubeDSL.g:11666:1: ( () )
+            {
+            // InternalCubeDSL.g:11666:1: ( () )
+            // InternalCubeDSL.g:11667:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getXListLiteralAction_0()); 
+            }
+            // InternalCubeDSL.g:11668:2: ()
+            // InternalCubeDSL.g:11668: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"
+    // InternalCubeDSL.g:11676: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 {
+            // InternalCubeDSL.g:11680:1: ( rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2 )
+            // InternalCubeDSL.g:11681:2: rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2
+            {
+            pushFollow(FOLLOW_52);
+            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"
+    // InternalCubeDSL.g:11688:1: rule__XListLiteral__Group__1__Impl : ( '#' ) ;
+    public final void rule__XListLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:11692:1: ( ( '#' ) )
+            // InternalCubeDSL.g:11693:1: ( '#' )
+            {
+            // InternalCubeDSL.g:11693:1: ( '#' )
+            // InternalCubeDSL.g:11694:2: '#'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1()); 
+            }
+            match(input,92,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"
+    // InternalCubeDSL.g:11703: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 {
+            // InternalCubeDSL.g:11707:1: ( rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3 )
+            // InternalCubeDSL.g:11708:2: rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3
+            {
+            pushFollow(FOLLOW_50);
+            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"
+    // InternalCubeDSL.g:11715:1: rule__XListLiteral__Group__2__Impl : ( '[' ) ;
+    public final void rule__XListLiteral__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:11719:1: ( ( '[' ) )
+            // InternalCubeDSL.g:11720:1: ( '[' )
+            {
+            // InternalCubeDSL.g:11720:1: ( '[' )
+            // InternalCubeDSL.g:11721:2: '['
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2()); 
+            }
+            match(input,93,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"
+    // InternalCubeDSL.g:11730: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 {
+            // InternalCubeDSL.g:11734:1: ( rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4 )
+            // InternalCubeDSL.g:11735:2: rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4
+            {
+            pushFollow(FOLLOW_50);
+            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"
+    // InternalCubeDSL.g:11742: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 {
+            // InternalCubeDSL.g:11746:1: ( ( ( rule__XListLiteral__Group_3__0 )? ) )
+            // InternalCubeDSL.g:11747:1: ( ( rule__XListLiteral__Group_3__0 )? )
+            {
+            // InternalCubeDSL.g:11747:1: ( ( rule__XListLiteral__Group_3__0 )? )
+            // InternalCubeDSL.g:11748:2: ( rule__XListLiteral__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getGroup_3()); 
+            }
+            // InternalCubeDSL.g:11749:2: ( rule__XListLiteral__Group_3__0 )?
+            int alt105=2;
+            int LA105_0 = input.LA(1);
+
+            if ( ((LA105_0>=RULE_ID && LA105_0<=RULE_DECIMAL)||LA105_0==27||(LA105_0>=34 && LA105_0<=35)||LA105_0==40||(LA105_0>=45 && LA105_0<=50)||LA105_0==74||LA105_0==88||(LA105_0>=92 && LA105_0<=93)||LA105_0==96||LA105_0==98||(LA105_0>=102 && LA105_0<=110)||LA105_0==112||LA105_0==131) ) {
+                alt105=1;
+            }
+            switch (alt105) {
+                case 1 :
+                    // InternalCubeDSL.g:11749: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"
+    // InternalCubeDSL.g:11757:1: rule__XListLiteral__Group__4 : rule__XListLiteral__Group__4__Impl ;
+    public final void rule__XListLiteral__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:11761:1: ( rule__XListLiteral__Group__4__Impl )
+            // InternalCubeDSL.g:11762: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"
+    // InternalCubeDSL.g:11768:1: rule__XListLiteral__Group__4__Impl : ( ']' ) ;
+    public final void rule__XListLiteral__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:11772:1: ( ( ']' ) )
+            // InternalCubeDSL.g:11773:1: ( ']' )
+            {
+            // InternalCubeDSL.g:11773:1: ( ']' )
+            // InternalCubeDSL.g:11774:2: ']'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4()); 
+            }
+            match(input,91,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"
+    // InternalCubeDSL.g:11784: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 {
+            // InternalCubeDSL.g:11788:1: ( rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1 )
+            // InternalCubeDSL.g:11789:2: rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1
+            {
+            pushFollow(FOLLOW_46);
+            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"
+    // InternalCubeDSL.g:11796: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 {
+            // InternalCubeDSL.g:11800:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_0 ) ) )
+            // InternalCubeDSL.g:11801:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
+            {
+            // InternalCubeDSL.g:11801:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
+            // InternalCubeDSL.g:11802:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0()); 
+            }
+            // InternalCubeDSL.g:11803:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
+            // InternalCubeDSL.g:11803: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"
+    // InternalCubeDSL.g:11811: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 {
+            // InternalCubeDSL.g:11815:1: ( rule__XListLiteral__Group_3__1__Impl )
+            // InternalCubeDSL.g:11816: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"
+    // InternalCubeDSL.g:11822: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 {
+            // InternalCubeDSL.g:11826:1: ( ( ( rule__XListLiteral__Group_3_1__0 )* ) )
+            // InternalCubeDSL.g:11827:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
+            {
+            // InternalCubeDSL.g:11827:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
+            // InternalCubeDSL.g:11828:2: ( rule__XListLiteral__Group_3_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getGroup_3_1()); 
+            }
+            // InternalCubeDSL.g:11829:2: ( rule__XListLiteral__Group_3_1__0 )*
+            loop106:
+            do {
+                int alt106=2;
+                int LA106_0 = input.LA(1);
+
+                if ( (LA106_0==90) ) {
+                    alt106=1;
+                }
+
+
+                switch (alt106) {
+            	case 1 :
+            	    // InternalCubeDSL.g:11829:3: rule__XListLiteral__Group_3_1__0
+            	    {
+            	    pushFollow(FOLLOW_47);
+            	    rule__XListLiteral__Group_3_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop106;
+                }
+            } 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"
+    // InternalCubeDSL.g:11838: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 {
+            // InternalCubeDSL.g:11842:1: ( rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1 )
+            // InternalCubeDSL.g:11843:2: rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:11850:1: rule__XListLiteral__Group_3_1__0__Impl : ( ',' ) ;
+    public final void rule__XListLiteral__Group_3_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:11854:1: ( ( ',' ) )
+            // InternalCubeDSL.g:11855:1: ( ',' )
+            {
+            // InternalCubeDSL.g:11855:1: ( ',' )
+            // InternalCubeDSL.g:11856:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0()); 
+            }
+            match(input,90,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"
+    // InternalCubeDSL.g:11865: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 {
+            // InternalCubeDSL.g:11869:1: ( rule__XListLiteral__Group_3_1__1__Impl )
+            // InternalCubeDSL.g:11870: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"
+    // InternalCubeDSL.g:11876: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 {
+            // InternalCubeDSL.g:11880:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) ) )
+            // InternalCubeDSL.g:11881:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
+            {
+            // InternalCubeDSL.g:11881:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalCubeDSL.g:11882:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1()); 
+            }
+            // InternalCubeDSL.g:11883:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
+            // InternalCubeDSL.g:11883: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"
+    // InternalCubeDSL.g:11892: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 {
+            // InternalCubeDSL.g:11896:1: ( rule__XClosure__Group__0__Impl rule__XClosure__Group__1 )
+            // InternalCubeDSL.g:11897:2: rule__XClosure__Group__0__Impl rule__XClosure__Group__1
+            {
+            pushFollow(FOLLOW_89);
+            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"
+    // InternalCubeDSL.g:11904: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 {
+            // InternalCubeDSL.g:11908:1: ( ( ( rule__XClosure__Group_0__0 ) ) )
+            // InternalCubeDSL.g:11909:1: ( ( rule__XClosure__Group_0__0 ) )
+            {
+            // InternalCubeDSL.g:11909:1: ( ( rule__XClosure__Group_0__0 ) )
+            // InternalCubeDSL.g:11910:2: ( rule__XClosure__Group_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_0()); 
+            }
+            // InternalCubeDSL.g:11911:2: ( rule__XClosure__Group_0__0 )
+            // InternalCubeDSL.g:11911: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"
+    // InternalCubeDSL.g:11919: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 {
+            // InternalCubeDSL.g:11923:1: ( rule__XClosure__Group__1__Impl rule__XClosure__Group__2 )
+            // InternalCubeDSL.g:11924:2: rule__XClosure__Group__1__Impl rule__XClosure__Group__2
+            {
+            pushFollow(FOLLOW_89);
+            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"
+    // InternalCubeDSL.g:11931: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 {
+            // InternalCubeDSL.g:11935:1: ( ( ( rule__XClosure__Group_1__0 )? ) )
+            // InternalCubeDSL.g:11936:1: ( ( rule__XClosure__Group_1__0 )? )
+            {
+            // InternalCubeDSL.g:11936:1: ( ( rule__XClosure__Group_1__0 )? )
+            // InternalCubeDSL.g:11937:2: ( rule__XClosure__Group_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_1()); 
+            }
+            // InternalCubeDSL.g:11938:2: ( rule__XClosure__Group_1__0 )?
+            int alt107=2;
+            alt107 = dfa107.predict(input);
+            switch (alt107) {
+                case 1 :
+                    // InternalCubeDSL.g:11938: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"
+    // InternalCubeDSL.g:11946: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 {
+            // InternalCubeDSL.g:11950:1: ( rule__XClosure__Group__2__Impl rule__XClosure__Group__3 )
+            // InternalCubeDSL.g:11951:2: rule__XClosure__Group__2__Impl rule__XClosure__Group__3
+            {
+            pushFollow(FOLLOW_90);
+            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"
+    // InternalCubeDSL.g:11958:1: rule__XClosure__Group__2__Impl : ( ( rule__XClosure__ExpressionAssignment_2 ) ) ;
+    public final void rule__XClosure__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:11962:1: ( ( ( rule__XClosure__ExpressionAssignment_2 ) ) )
+            // InternalCubeDSL.g:11963:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
+            {
+            // InternalCubeDSL.g:11963:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
+            // InternalCubeDSL.g:11964:2: ( rule__XClosure__ExpressionAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getExpressionAssignment_2()); 
+            }
+            // InternalCubeDSL.g:11965:2: ( rule__XClosure__ExpressionAssignment_2 )
+            // InternalCubeDSL.g:11965: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"
+    // InternalCubeDSL.g:11973:1: rule__XClosure__Group__3 : rule__XClosure__Group__3__Impl ;
+    public final void rule__XClosure__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:11977:1: ( rule__XClosure__Group__3__Impl )
+            // InternalCubeDSL.g:11978: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"
+    // InternalCubeDSL.g:11984:1: rule__XClosure__Group__3__Impl : ( ']' ) ;
+    public final void rule__XClosure__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:11988:1: ( ( ']' ) )
+            // InternalCubeDSL.g:11989:1: ( ']' )
+            {
+            // InternalCubeDSL.g:11989:1: ( ']' )
+            // InternalCubeDSL.g:11990:2: ']'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3()); 
+            }
+            match(input,91,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"
+    // InternalCubeDSL.g:12000: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 {
+            // InternalCubeDSL.g:12004:1: ( rule__XClosure__Group_0__0__Impl )
+            // InternalCubeDSL.g:12005: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"
+    // InternalCubeDSL.g:12011: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 {
+            // InternalCubeDSL.g:12015:1: ( ( ( rule__XClosure__Group_0_0__0 ) ) )
+            // InternalCubeDSL.g:12016:1: ( ( rule__XClosure__Group_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:12016:1: ( ( rule__XClosure__Group_0_0__0 ) )
+            // InternalCubeDSL.g:12017:2: ( rule__XClosure__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_0_0()); 
+            }
+            // InternalCubeDSL.g:12018:2: ( rule__XClosure__Group_0_0__0 )
+            // InternalCubeDSL.g:12018: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"
+    // InternalCubeDSL.g:12027: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 {
+            // InternalCubeDSL.g:12031:1: ( rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1 )
+            // InternalCubeDSL.g:12032:2: rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1
+            {
+            pushFollow(FOLLOW_52);
+            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"
+    // InternalCubeDSL.g:12039:1: rule__XClosure__Group_0_0__0__Impl : ( () ) ;
+    public final void rule__XClosure__Group_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12043:1: ( ( () ) )
+            // InternalCubeDSL.g:12044:1: ( () )
+            {
+            // InternalCubeDSL.g:12044:1: ( () )
+            // InternalCubeDSL.g:12045:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getXClosureAction_0_0_0()); 
+            }
+            // InternalCubeDSL.g:12046:2: ()
+            // InternalCubeDSL.g:12046: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"
+    // InternalCubeDSL.g:12054: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 {
+            // InternalCubeDSL.g:12058:1: ( rule__XClosure__Group_0_0__1__Impl )
+            // InternalCubeDSL.g:12059: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"
+    // InternalCubeDSL.g:12065:1: rule__XClosure__Group_0_0__1__Impl : ( '[' ) ;
+    public final void rule__XClosure__Group_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12069:1: ( ( '[' ) )
+            // InternalCubeDSL.g:12070:1: ( '[' )
+            {
+            // InternalCubeDSL.g:12070:1: ( '[' )
+            // InternalCubeDSL.g:12071:2: '['
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1()); 
+            }
+            match(input,93,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"
+    // InternalCubeDSL.g:12081: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 {
+            // InternalCubeDSL.g:12085:1: ( rule__XClosure__Group_1__0__Impl )
+            // InternalCubeDSL.g:12086: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"
+    // InternalCubeDSL.g:12092: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 {
+            // InternalCubeDSL.g:12096:1: ( ( ( rule__XClosure__Group_1_0__0 ) ) )
+            // InternalCubeDSL.g:12097:1: ( ( rule__XClosure__Group_1_0__0 ) )
+            {
+            // InternalCubeDSL.g:12097:1: ( ( rule__XClosure__Group_1_0__0 ) )
+            // InternalCubeDSL.g:12098:2: ( rule__XClosure__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_1_0()); 
+            }
+            // InternalCubeDSL.g:12099:2: ( rule__XClosure__Group_1_0__0 )
+            // InternalCubeDSL.g:12099: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"
+    // InternalCubeDSL.g:12108: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 {
+            // InternalCubeDSL.g:12112:1: ( rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1 )
+            // InternalCubeDSL.g:12113:2: rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1
+            {
+            pushFollow(FOLLOW_91);
+            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"
+    // InternalCubeDSL.g:12120: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 {
+            // InternalCubeDSL.g:12124:1: ( ( ( rule__XClosure__Group_1_0_0__0 )? ) )
+            // InternalCubeDSL.g:12125:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
+            {
+            // InternalCubeDSL.g:12125:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
+            // InternalCubeDSL.g:12126:2: ( rule__XClosure__Group_1_0_0__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_1_0_0()); 
+            }
+            // InternalCubeDSL.g:12127:2: ( rule__XClosure__Group_1_0_0__0 )?
+            int alt108=2;
+            int LA108_0 = input.LA(1);
+
+            if ( (LA108_0==RULE_ID||LA108_0==31||LA108_0==88) ) {
+                alt108=1;
+            }
+            switch (alt108) {
+                case 1 :
+                    // InternalCubeDSL.g:12127: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"
+    // InternalCubeDSL.g:12135: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 {
+            // InternalCubeDSL.g:12139:1: ( rule__XClosure__Group_1_0__1__Impl )
+            // InternalCubeDSL.g:12140: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"
+    // InternalCubeDSL.g:12146: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 {
+            // InternalCubeDSL.g:12150:1: ( ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) ) )
+            // InternalCubeDSL.g:12151:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
+            {
+            // InternalCubeDSL.g:12151:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
+            // InternalCubeDSL.g:12152:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1()); 
+            }
+            // InternalCubeDSL.g:12153:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
+            // InternalCubeDSL.g:12153: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"
+    // InternalCubeDSL.g:12162: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 {
+            // InternalCubeDSL.g:12166:1: ( rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1 )
+            // InternalCubeDSL.g:12167:2: rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_46);
+            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"
+    // InternalCubeDSL.g:12174: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 {
+            // InternalCubeDSL.g:12178:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) ) )
+            // InternalCubeDSL.g:12179:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
+            {
+            // InternalCubeDSL.g:12179:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
+            // InternalCubeDSL.g:12180:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0()); 
+            }
+            // InternalCubeDSL.g:12181:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
+            // InternalCubeDSL.g:12181: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"
+    // InternalCubeDSL.g:12189: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 {
+            // InternalCubeDSL.g:12193:1: ( rule__XClosure__Group_1_0_0__1__Impl )
+            // InternalCubeDSL.g:12194: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"
+    // InternalCubeDSL.g:12200: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 {
+            // InternalCubeDSL.g:12204:1: ( ( ( rule__XClosure__Group_1_0_0_1__0 )* ) )
+            // InternalCubeDSL.g:12205:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
+            {
+            // InternalCubeDSL.g:12205:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
+            // InternalCubeDSL.g:12206:2: ( rule__XClosure__Group_1_0_0_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_1_0_0_1()); 
+            }
+            // InternalCubeDSL.g:12207:2: ( rule__XClosure__Group_1_0_0_1__0 )*
+            loop109:
+            do {
+                int alt109=2;
+                int LA109_0 = input.LA(1);
+
+                if ( (LA109_0==90) ) {
+                    alt109=1;
+                }
+
+
+                switch (alt109) {
+            	case 1 :
+            	    // InternalCubeDSL.g:12207:3: rule__XClosure__Group_1_0_0_1__0
+            	    {
+            	    pushFollow(FOLLOW_47);
+            	    rule__XClosure__Group_1_0_0_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop109;
+                }
+            } 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"
+    // InternalCubeDSL.g:12216: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 {
+            // InternalCubeDSL.g:12220:1: ( rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1 )
+            // InternalCubeDSL.g:12221:2: rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalCubeDSL.g:12228: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 {
+            // InternalCubeDSL.g:12232:1: ( ( ',' ) )
+            // InternalCubeDSL.g:12233:1: ( ',' )
+            {
+            // InternalCubeDSL.g:12233:1: ( ',' )
+            // InternalCubeDSL.g:12234:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0()); 
+            }
+            match(input,90,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"
+    // InternalCubeDSL.g:12243: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 {
+            // InternalCubeDSL.g:12247:1: ( rule__XClosure__Group_1_0_0_1__1__Impl )
+            // InternalCubeDSL.g:12248: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"
+    // InternalCubeDSL.g:12254: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 {
+            // InternalCubeDSL.g:12258:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) ) )
+            // InternalCubeDSL.g:12259:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
+            {
+            // InternalCubeDSL.g:12259:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
+            // InternalCubeDSL.g:12260:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1()); 
+            }
+            // InternalCubeDSL.g:12261:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
+            // InternalCubeDSL.g:12261: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"
+    // InternalCubeDSL.g:12270: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 {
+            // InternalCubeDSL.g:12274:1: ( rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1 )
+            // InternalCubeDSL.g:12275:2: rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1
+            {
+            pushFollow(FOLLOW_89);
+            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"
+    // InternalCubeDSL.g:12282:1: rule__XExpressionInClosure__Group__0__Impl : ( () ) ;
+    public final void rule__XExpressionInClosure__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12286:1: ( ( () ) )
+            // InternalCubeDSL.g:12287:1: ( () )
+            {
+            // InternalCubeDSL.g:12287:1: ( () )
+            // InternalCubeDSL.g:12288:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0()); 
+            }
+            // InternalCubeDSL.g:12289:2: ()
+            // InternalCubeDSL.g:12289: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"
+    // InternalCubeDSL.g:12297:1: rule__XExpressionInClosure__Group__1 : rule__XExpressionInClosure__Group__1__Impl ;
+    public final void rule__XExpressionInClosure__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12301:1: ( rule__XExpressionInClosure__Group__1__Impl )
+            // InternalCubeDSL.g:12302: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"
+    // InternalCubeDSL.g:12308: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 {
+            // InternalCubeDSL.g:12312:1: ( ( ( rule__XExpressionInClosure__Group_1__0 )* ) )
+            // InternalCubeDSL.g:12313:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
+            {
+            // InternalCubeDSL.g:12313:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
+            // InternalCubeDSL.g:12314:2: ( rule__XExpressionInClosure__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getGroup_1()); 
+            }
+            // InternalCubeDSL.g:12315:2: ( rule__XExpressionInClosure__Group_1__0 )*
+            loop110:
+            do {
+                int alt110=2;
+                int LA110_0 = input.LA(1);
+
+                if ( ((LA110_0>=RULE_ID && LA110_0<=RULE_DECIMAL)||LA110_0==27||(LA110_0>=34 && LA110_0<=35)||LA110_0==40||(LA110_0>=44 && LA110_0<=50)||LA110_0==74||LA110_0==88||(LA110_0>=92 && LA110_0<=93)||LA110_0==96||LA110_0==98||(LA110_0>=102 && LA110_0<=110)||LA110_0==112||(LA110_0>=130 && LA110_0<=131)) ) {
+                    alt110=1;
+                }
+
+
+                switch (alt110) {
+            	case 1 :
+            	    // InternalCubeDSL.g:12315:3: rule__XExpressionInClosure__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_92);
+            	    rule__XExpressionInClosure__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop110;
+                }
+            } 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"
+    // InternalCubeDSL.g:12324: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 {
+            // InternalCubeDSL.g:12328:1: ( rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1 )
+            // InternalCubeDSL.g:12329:2: rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1
+            {
+            pushFollow(FOLLOW_40);
+            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"
+    // InternalCubeDSL.g:12336: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 {
+            // InternalCubeDSL.g:12340:1: ( ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) ) )
+            // InternalCubeDSL.g:12341:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
+            {
+            // InternalCubeDSL.g:12341:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
+            // InternalCubeDSL.g:12342:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0()); 
+            }
+            // InternalCubeDSL.g:12343:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
+            // InternalCubeDSL.g:12343: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"
+    // InternalCubeDSL.g:12351: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 {
+            // InternalCubeDSL.g:12355:1: ( rule__XExpressionInClosure__Group_1__1__Impl )
+            // InternalCubeDSL.g:12356: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"
+    // InternalCubeDSL.g:12362:1: rule__XExpressionInClosure__Group_1__1__Impl : ( ( ';' )? ) ;
+    public final void rule__XExpressionInClosure__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12366:1: ( ( ( ';' )? ) )
+            // InternalCubeDSL.g:12367:1: ( ( ';' )? )
+            {
+            // InternalCubeDSL.g:12367:1: ( ( ';' )? )
+            // InternalCubeDSL.g:12368:2: ( ';' )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1()); 
+            }
+            // InternalCubeDSL.g:12369:2: ( ';' )?
+            int alt111=2;
+            int LA111_0 = input.LA(1);
+
+            if ( (LA111_0==86) ) {
+                alt111=1;
+            }
+            switch (alt111) {
+                case 1 :
+                    // InternalCubeDSL.g:12369:3: ';'
+                    {
+                    match(input,86,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"
+    // InternalCubeDSL.g:12378: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 {
+            // InternalCubeDSL.g:12382:1: ( rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1 )
+            // InternalCubeDSL.g:12383:2: rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:12390: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 {
+            // InternalCubeDSL.g:12394:1: ( ( ( rule__XShortClosure__Group_0__0 ) ) )
+            // InternalCubeDSL.g:12395:1: ( ( rule__XShortClosure__Group_0__0 ) )
+            {
+            // InternalCubeDSL.g:12395:1: ( ( rule__XShortClosure__Group_0__0 ) )
+            // InternalCubeDSL.g:12396:2: ( rule__XShortClosure__Group_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup_0()); 
+            }
+            // InternalCubeDSL.g:12397:2: ( rule__XShortClosure__Group_0__0 )
+            // InternalCubeDSL.g:12397: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"
+    // InternalCubeDSL.g:12405:1: rule__XShortClosure__Group__1 : rule__XShortClosure__Group__1__Impl ;
+    public final void rule__XShortClosure__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12409:1: ( rule__XShortClosure__Group__1__Impl )
+            // InternalCubeDSL.g:12410: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"
+    // InternalCubeDSL.g:12416:1: rule__XShortClosure__Group__1__Impl : ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) ;
+    public final void rule__XShortClosure__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12420:1: ( ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) )
+            // InternalCubeDSL.g:12421:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:12421:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
+            // InternalCubeDSL.g:12422:2: ( rule__XShortClosure__ExpressionAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1()); 
+            }
+            // InternalCubeDSL.g:12423:2: ( rule__XShortClosure__ExpressionAssignment_1 )
+            // InternalCubeDSL.g:12423: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"
+    // InternalCubeDSL.g:12432: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 {
+            // InternalCubeDSL.g:12436:1: ( rule__XShortClosure__Group_0__0__Impl )
+            // InternalCubeDSL.g:12437: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"
+    // InternalCubeDSL.g:12443: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 {
+            // InternalCubeDSL.g:12447:1: ( ( ( rule__XShortClosure__Group_0_0__0 ) ) )
+            // InternalCubeDSL.g:12448:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:12448:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
+            // InternalCubeDSL.g:12449:2: ( rule__XShortClosure__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup_0_0()); 
+            }
+            // InternalCubeDSL.g:12450:2: ( rule__XShortClosure__Group_0_0__0 )
+            // InternalCubeDSL.g:12450: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"
+    // InternalCubeDSL.g:12459: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 {
+            // InternalCubeDSL.g:12463:1: ( rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1 )
+            // InternalCubeDSL.g:12464:2: rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1
+            {
+            pushFollow(FOLLOW_91);
+            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"
+    // InternalCubeDSL.g:12471:1: rule__XShortClosure__Group_0_0__0__Impl : ( () ) ;
+    public final void rule__XShortClosure__Group_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12475:1: ( ( () ) )
+            // InternalCubeDSL.g:12476:1: ( () )
+            {
+            // InternalCubeDSL.g:12476:1: ( () )
+            // InternalCubeDSL.g:12477:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0()); 
+            }
+            // InternalCubeDSL.g:12478:2: ()
+            // InternalCubeDSL.g:12478: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"
+    // InternalCubeDSL.g:12486: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 {
+            // InternalCubeDSL.g:12490:1: ( rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2 )
+            // InternalCubeDSL.g:12491:2: rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2
+            {
+            pushFollow(FOLLOW_91);
+            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"
+    // InternalCubeDSL.g:12498: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 {
+            // InternalCubeDSL.g:12502:1: ( ( ( rule__XShortClosure__Group_0_0_1__0 )? ) )
+            // InternalCubeDSL.g:12503:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
+            {
+            // InternalCubeDSL.g:12503:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
+            // InternalCubeDSL.g:12504:2: ( rule__XShortClosure__Group_0_0_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup_0_0_1()); 
+            }
+            // InternalCubeDSL.g:12505:2: ( rule__XShortClosure__Group_0_0_1__0 )?
+            int alt112=2;
+            int LA112_0 = input.LA(1);
+
+            if ( (LA112_0==RULE_ID||LA112_0==31||LA112_0==88) ) {
+                alt112=1;
+            }
+            switch (alt112) {
+                case 1 :
+                    // InternalCubeDSL.g:12505: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"
+    // InternalCubeDSL.g:12513: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 {
+            // InternalCubeDSL.g:12517:1: ( rule__XShortClosure__Group_0_0__2__Impl )
+            // InternalCubeDSL.g:12518: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"
+    // InternalCubeDSL.g:12524: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 {
+            // InternalCubeDSL.g:12528:1: ( ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) ) )
+            // InternalCubeDSL.g:12529:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
+            {
+            // InternalCubeDSL.g:12529:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
+            // InternalCubeDSL.g:12530:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2()); 
+            }
+            // InternalCubeDSL.g:12531:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
+            // InternalCubeDSL.g:12531: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"
+    // InternalCubeDSL.g:12540: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 {
+            // InternalCubeDSL.g:12544:1: ( rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1 )
+            // InternalCubeDSL.g:12545:2: rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1
+            {
+            pushFollow(FOLLOW_46);
+            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"
+    // InternalCubeDSL.g:12552: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 {
+            // InternalCubeDSL.g:12556:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) ) )
+            // InternalCubeDSL.g:12557:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
+            {
+            // InternalCubeDSL.g:12557:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
+            // InternalCubeDSL.g:12558:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0()); 
+            }
+            // InternalCubeDSL.g:12559:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
+            // InternalCubeDSL.g:12559: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"
+    // InternalCubeDSL.g:12567: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 {
+            // InternalCubeDSL.g:12571:1: ( rule__XShortClosure__Group_0_0_1__1__Impl )
+            // InternalCubeDSL.g:12572: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"
+    // InternalCubeDSL.g:12578: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 {
+            // InternalCubeDSL.g:12582:1: ( ( ( rule__XShortClosure__Group_0_0_1_1__0 )* ) )
+            // InternalCubeDSL.g:12583:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
+            {
+            // InternalCubeDSL.g:12583:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
+            // InternalCubeDSL.g:12584:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1()); 
+            }
+            // InternalCubeDSL.g:12585:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
+            loop113:
+            do {
+                int alt113=2;
+                int LA113_0 = input.LA(1);
+
+                if ( (LA113_0==90) ) {
+                    alt113=1;
+                }
+
+
+                switch (alt113) {
+            	case 1 :
+            	    // InternalCubeDSL.g:12585:3: rule__XShortClosure__Group_0_0_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_47);
+            	    rule__XShortClosure__Group_0_0_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop113;
+                }
+            } 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"
+    // InternalCubeDSL.g:12594: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 {
+            // InternalCubeDSL.g:12598:1: ( rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1 )
+            // InternalCubeDSL.g:12599:2: rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalCubeDSL.g:12606: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 {
+            // InternalCubeDSL.g:12610:1: ( ( ',' ) )
+            // InternalCubeDSL.g:12611:1: ( ',' )
+            {
+            // InternalCubeDSL.g:12611:1: ( ',' )
+            // InternalCubeDSL.g:12612:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0()); 
+            }
+            match(input,90,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"
+    // InternalCubeDSL.g:12621: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 {
+            // InternalCubeDSL.g:12625:1: ( rule__XShortClosure__Group_0_0_1_1__1__Impl )
+            // InternalCubeDSL.g:12626: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"
+    // InternalCubeDSL.g:12632: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 {
+            // InternalCubeDSL.g:12636:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) ) )
+            // InternalCubeDSL.g:12637:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
+            {
+            // InternalCubeDSL.g:12637:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
+            // InternalCubeDSL.g:12638:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1()); 
+            }
+            // InternalCubeDSL.g:12639:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
+            // InternalCubeDSL.g:12639: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"
+    // InternalCubeDSL.g:12648: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 {
+            // InternalCubeDSL.g:12652:1: ( rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1 )
+            // InternalCubeDSL.g:12653:2: rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:12660:1: rule__XParenthesizedExpression__Group__0__Impl : ( '(' ) ;
+    public final void rule__XParenthesizedExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12664:1: ( ( '(' ) )
+            // InternalCubeDSL.g:12665:1: ( '(' )
+            {
+            // InternalCubeDSL.g:12665:1: ( '(' )
+            // InternalCubeDSL.g:12666:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0()); 
+            }
+            match(input,88,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"
+    // InternalCubeDSL.g:12675: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 {
+            // InternalCubeDSL.g:12679:1: ( rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2 )
+            // InternalCubeDSL.g:12680:2: rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2
+            {
+            pushFollow(FOLLOW_93);
+            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"
+    // InternalCubeDSL.g:12687:1: rule__XParenthesizedExpression__Group__1__Impl : ( ruleXExpression ) ;
+    public final void rule__XParenthesizedExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12691:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:12692:1: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:12692:1: ( ruleXExpression )
+            // InternalCubeDSL.g:12693: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"
+    // InternalCubeDSL.g:12702:1: rule__XParenthesizedExpression__Group__2 : rule__XParenthesizedExpression__Group__2__Impl ;
+    public final void rule__XParenthesizedExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12706:1: ( rule__XParenthesizedExpression__Group__2__Impl )
+            // InternalCubeDSL.g:12707: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"
+    // InternalCubeDSL.g:12713:1: rule__XParenthesizedExpression__Group__2__Impl : ( ')' ) ;
+    public final void rule__XParenthesizedExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12717:1: ( ( ')' ) )
+            // InternalCubeDSL.g:12718:1: ( ')' )
+            {
+            // InternalCubeDSL.g:12718:1: ( ')' )
+            // InternalCubeDSL.g:12719:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2()); 
+            }
+            match(input,89,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"
+    // InternalCubeDSL.g:12729: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 {
+            // InternalCubeDSL.g:12733:1: ( rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1 )
+            // InternalCubeDSL.g:12734:2: rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1
+            {
+            pushFollow(FOLLOW_94);
+            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"
+    // InternalCubeDSL.g:12741:1: rule__XIfExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XIfExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12745:1: ( ( () ) )
+            // InternalCubeDSL.g:12746:1: ( () )
+            {
+            // InternalCubeDSL.g:12746:1: ( () )
+            // InternalCubeDSL.g:12747:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0()); 
+            }
+            // InternalCubeDSL.g:12748:2: ()
+            // InternalCubeDSL.g:12748: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"
+    // InternalCubeDSL.g:12756: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 {
+            // InternalCubeDSL.g:12760:1: ( rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2 )
+            // InternalCubeDSL.g:12761:2: rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2
+            {
+            pushFollow(FOLLOW_44);
+            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"
+    // InternalCubeDSL.g:12768:1: rule__XIfExpression__Group__1__Impl : ( 'if' ) ;
+    public final void rule__XIfExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12772:1: ( ( 'if' ) )
+            // InternalCubeDSL.g:12773:1: ( 'if' )
+            {
+            // InternalCubeDSL.g:12773:1: ( 'if' )
+            // InternalCubeDSL.g:12774:2: 'if'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getIfKeyword_1()); 
+            }
+            match(input,96,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"
+    // InternalCubeDSL.g:12783: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 {
+            // InternalCubeDSL.g:12787:1: ( rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3 )
+            // InternalCubeDSL.g:12788:2: rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:12795:1: rule__XIfExpression__Group__2__Impl : ( '(' ) ;
+    public final void rule__XIfExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12799:1: ( ( '(' ) )
+            // InternalCubeDSL.g:12800:1: ( '(' )
+            {
+            // InternalCubeDSL.g:12800:1: ( '(' )
+            // InternalCubeDSL.g:12801:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2()); 
+            }
+            match(input,88,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"
+    // InternalCubeDSL.g:12810: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 {
+            // InternalCubeDSL.g:12814:1: ( rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4 )
+            // InternalCubeDSL.g:12815:2: rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4
+            {
+            pushFollow(FOLLOW_93);
+            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"
+    // InternalCubeDSL.g:12822:1: rule__XIfExpression__Group__3__Impl : ( ( rule__XIfExpression__IfAssignment_3 ) ) ;
+    public final void rule__XIfExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12826:1: ( ( ( rule__XIfExpression__IfAssignment_3 ) ) )
+            // InternalCubeDSL.g:12827:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
+            {
+            // InternalCubeDSL.g:12827:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
+            // InternalCubeDSL.g:12828:2: ( rule__XIfExpression__IfAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getIfAssignment_3()); 
+            }
+            // InternalCubeDSL.g:12829:2: ( rule__XIfExpression__IfAssignment_3 )
+            // InternalCubeDSL.g:12829: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"
+    // InternalCubeDSL.g:12837: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 {
+            // InternalCubeDSL.g:12841:1: ( rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5 )
+            // InternalCubeDSL.g:12842:2: rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:12849:1: rule__XIfExpression__Group__4__Impl : ( ')' ) ;
+    public final void rule__XIfExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12853:1: ( ( ')' ) )
+            // InternalCubeDSL.g:12854:1: ( ')' )
+            {
+            // InternalCubeDSL.g:12854:1: ( ')' )
+            // InternalCubeDSL.g:12855:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4()); 
+            }
+            match(input,89,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"
+    // InternalCubeDSL.g:12864: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 {
+            // InternalCubeDSL.g:12868:1: ( rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6 )
+            // InternalCubeDSL.g:12869:2: rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6
+            {
+            pushFollow(FOLLOW_95);
+            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"
+    // InternalCubeDSL.g:12876:1: rule__XIfExpression__Group__5__Impl : ( ( rule__XIfExpression__ThenAssignment_5 ) ) ;
+    public final void rule__XIfExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12880:1: ( ( ( rule__XIfExpression__ThenAssignment_5 ) ) )
+            // InternalCubeDSL.g:12881:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
+            {
+            // InternalCubeDSL.g:12881:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
+            // InternalCubeDSL.g:12882:2: ( rule__XIfExpression__ThenAssignment_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getThenAssignment_5()); 
+            }
+            // InternalCubeDSL.g:12883:2: ( rule__XIfExpression__ThenAssignment_5 )
+            // InternalCubeDSL.g:12883: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"
+    // InternalCubeDSL.g:12891:1: rule__XIfExpression__Group__6 : rule__XIfExpression__Group__6__Impl ;
+    public final void rule__XIfExpression__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12895:1: ( rule__XIfExpression__Group__6__Impl )
+            // InternalCubeDSL.g:12896: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"
+    // InternalCubeDSL.g:12902: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 {
+            // InternalCubeDSL.g:12906:1: ( ( ( rule__XIfExpression__Group_6__0 )? ) )
+            // InternalCubeDSL.g:12907:1: ( ( rule__XIfExpression__Group_6__0 )? )
+            {
+            // InternalCubeDSL.g:12907:1: ( ( rule__XIfExpression__Group_6__0 )? )
+            // InternalCubeDSL.g:12908:2: ( rule__XIfExpression__Group_6__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getGroup_6()); 
+            }
+            // InternalCubeDSL.g:12909:2: ( rule__XIfExpression__Group_6__0 )?
+            int alt114=2;
+            int LA114_0 = input.LA(1);
+
+            if ( (LA114_0==97) ) {
+                int LA114_1 = input.LA(2);
+
+                if ( (synpred175_InternalCubeDSL()) ) {
+                    alt114=1;
+                }
+            }
+            switch (alt114) {
+                case 1 :
+                    // InternalCubeDSL.g:12909: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"
+    // InternalCubeDSL.g:12918: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 {
+            // InternalCubeDSL.g:12922:1: ( rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1 )
+            // InternalCubeDSL.g:12923:2: rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:12930:1: rule__XIfExpression__Group_6__0__Impl : ( ( 'else' ) ) ;
+    public final void rule__XIfExpression__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12934:1: ( ( ( 'else' ) ) )
+            // InternalCubeDSL.g:12935:1: ( ( 'else' ) )
+            {
+            // InternalCubeDSL.g:12935:1: ( ( 'else' ) )
+            // InternalCubeDSL.g:12936:2: ( 'else' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0()); 
+            }
+            // InternalCubeDSL.g:12937:2: ( 'else' )
+            // InternalCubeDSL.g:12937:3: 'else'
+            {
+            match(input,97,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"
+    // InternalCubeDSL.g:12945: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 {
+            // InternalCubeDSL.g:12949:1: ( rule__XIfExpression__Group_6__1__Impl )
+            // InternalCubeDSL.g:12950: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"
+    // InternalCubeDSL.g:12956: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 {
+            // InternalCubeDSL.g:12960:1: ( ( ( rule__XIfExpression__ElseAssignment_6_1 ) ) )
+            // InternalCubeDSL.g:12961:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
+            {
+            // InternalCubeDSL.g:12961:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
+            // InternalCubeDSL.g:12962:2: ( rule__XIfExpression__ElseAssignment_6_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1()); 
+            }
+            // InternalCubeDSL.g:12963:2: ( rule__XIfExpression__ElseAssignment_6_1 )
+            // InternalCubeDSL.g:12963: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"
+    // InternalCubeDSL.g:12972: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 {
+            // InternalCubeDSL.g:12976:1: ( rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1 )
+            // InternalCubeDSL.g:12977:2: rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1
+            {
+            pushFollow(FOLLOW_96);
+            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"
+    // InternalCubeDSL.g:12984:1: rule__XSwitchExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XSwitchExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:12988:1: ( ( () ) )
+            // InternalCubeDSL.g:12989:1: ( () )
+            {
+            // InternalCubeDSL.g:12989:1: ( () )
+            // InternalCubeDSL.g:12990:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0()); 
+            }
+            // InternalCubeDSL.g:12991:2: ()
+            // InternalCubeDSL.g:12991: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"
+    // InternalCubeDSL.g:12999: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 {
+            // InternalCubeDSL.g:13003:1: ( rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2 )
+            // InternalCubeDSL.g:13004:2: rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2
+            {
+            pushFollow(FOLLOW_97);
+            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"
+    // InternalCubeDSL.g:13011:1: rule__XSwitchExpression__Group__1__Impl : ( 'switch' ) ;
+    public final void rule__XSwitchExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13015:1: ( ( 'switch' ) )
+            // InternalCubeDSL.g:13016:1: ( 'switch' )
+            {
+            // InternalCubeDSL.g:13016:1: ( 'switch' )
+            // InternalCubeDSL.g:13017:2: 'switch'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1()); 
+            }
+            match(input,98,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"
+    // InternalCubeDSL.g:13026: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 {
+            // InternalCubeDSL.g:13030:1: ( rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3 )
+            // InternalCubeDSL.g:13031:2: rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3
+            {
+            pushFollow(FOLLOW_7);
+            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"
+    // InternalCubeDSL.g:13038:1: rule__XSwitchExpression__Group__2__Impl : ( ( rule__XSwitchExpression__Alternatives_2 ) ) ;
+    public final void rule__XSwitchExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13042:1: ( ( ( rule__XSwitchExpression__Alternatives_2 ) ) )
+            // InternalCubeDSL.g:13043:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
+            {
+            // InternalCubeDSL.g:13043:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
+            // InternalCubeDSL.g:13044:2: ( rule__XSwitchExpression__Alternatives_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getAlternatives_2()); 
+            }
+            // InternalCubeDSL.g:13045:2: ( rule__XSwitchExpression__Alternatives_2 )
+            // InternalCubeDSL.g:13045: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"
+    // InternalCubeDSL.g:13053: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 {
+            // InternalCubeDSL.g:13057:1: ( rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4 )
+            // InternalCubeDSL.g:13058:2: rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalCubeDSL.g:13065:1: rule__XSwitchExpression__Group__3__Impl : ( '{' ) ;
+    public final void rule__XSwitchExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13069:1: ( ( '{' ) )
+            // InternalCubeDSL.g:13070:1: ( '{' )
+            {
+            // InternalCubeDSL.g:13070:1: ( '{' )
+            // InternalCubeDSL.g:13071:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3()); 
+            }
+            match(input,74,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"
+    // InternalCubeDSL.g:13080: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 {
+            // InternalCubeDSL.g:13084:1: ( rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5 )
+            // InternalCubeDSL.g:13085:2: rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalCubeDSL.g:13092:1: rule__XSwitchExpression__Group__4__Impl : ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) ;
+    public final void rule__XSwitchExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13096:1: ( ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) )
+            // InternalCubeDSL.g:13097:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
+            {
+            // InternalCubeDSL.g:13097:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
+            // InternalCubeDSL.g:13098:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4()); 
+            }
+            // InternalCubeDSL.g:13099:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
+            loop115:
+            do {
+                int alt115=2;
+                int LA115_0 = input.LA(1);
+
+                if ( (LA115_0==RULE_ID||LA115_0==31||LA115_0==88||LA115_0==90||LA115_0==99||LA115_0==101) ) {
+                    alt115=1;
+                }
+
+
+                switch (alt115) {
+            	case 1 :
+            	    // InternalCubeDSL.g:13099:3: rule__XSwitchExpression__CasesAssignment_4
+            	    {
+            	    pushFollow(FOLLOW_99);
+            	    rule__XSwitchExpression__CasesAssignment_4();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop115;
+                }
+            } 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"
+    // InternalCubeDSL.g:13107: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 {
+            // InternalCubeDSL.g:13111:1: ( rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6 )
+            // InternalCubeDSL.g:13112:2: rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalCubeDSL.g:13119: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 {
+            // InternalCubeDSL.g:13123:1: ( ( ( rule__XSwitchExpression__Group_5__0 )? ) )
+            // InternalCubeDSL.g:13124:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
+            {
+            // InternalCubeDSL.g:13124:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
+            // InternalCubeDSL.g:13125:2: ( rule__XSwitchExpression__Group_5__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup_5()); 
+            }
+            // InternalCubeDSL.g:13126:2: ( rule__XSwitchExpression__Group_5__0 )?
+            int alt116=2;
+            int LA116_0 = input.LA(1);
+
+            if ( (LA116_0==100) ) {
+                alt116=1;
+            }
+            switch (alt116) {
+                case 1 :
+                    // InternalCubeDSL.g:13126: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"
+    // InternalCubeDSL.g:13134:1: rule__XSwitchExpression__Group__6 : rule__XSwitchExpression__Group__6__Impl ;
+    public final void rule__XSwitchExpression__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13138:1: ( rule__XSwitchExpression__Group__6__Impl )
+            // InternalCubeDSL.g:13139: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"
+    // InternalCubeDSL.g:13145:1: rule__XSwitchExpression__Group__6__Impl : ( '}' ) ;
+    public final void rule__XSwitchExpression__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13149:1: ( ( '}' ) )
+            // InternalCubeDSL.g:13150:1: ( '}' )
+            {
+            // InternalCubeDSL.g:13150:1: ( '}' )
+            // InternalCubeDSL.g:13151:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6()); 
+            }
+            match(input,75,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"
+    // InternalCubeDSL.g:13161: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 {
+            // InternalCubeDSL.g:13165:1: ( rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1 )
+            // InternalCubeDSL.g:13166:2: rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:13173: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 {
+            // InternalCubeDSL.g:13177:1: ( ( ( rule__XSwitchExpression__Group_2_0_0__0 ) ) )
+            // InternalCubeDSL.g:13178:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:13178:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
+            // InternalCubeDSL.g:13179:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0()); 
+            }
+            // InternalCubeDSL.g:13180:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
+            // InternalCubeDSL.g:13180: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"
+    // InternalCubeDSL.g:13188: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 {
+            // InternalCubeDSL.g:13192:1: ( rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2 )
+            // InternalCubeDSL.g:13193:2: rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2
+            {
+            pushFollow(FOLLOW_93);
+            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"
+    // InternalCubeDSL.g:13200: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 {
+            // InternalCubeDSL.g:13204:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) ) )
+            // InternalCubeDSL.g:13205:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
+            {
+            // InternalCubeDSL.g:13205:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
+            // InternalCubeDSL.g:13206:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1()); 
+            }
+            // InternalCubeDSL.g:13207:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
+            // InternalCubeDSL.g:13207: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"
+    // InternalCubeDSL.g:13215: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 {
+            // InternalCubeDSL.g:13219:1: ( rule__XSwitchExpression__Group_2_0__2__Impl )
+            // InternalCubeDSL.g:13220: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"
+    // InternalCubeDSL.g:13226:1: rule__XSwitchExpression__Group_2_0__2__Impl : ( ')' ) ;
+    public final void rule__XSwitchExpression__Group_2_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13230:1: ( ( ')' ) )
+            // InternalCubeDSL.g:13231:1: ( ')' )
+            {
+            // InternalCubeDSL.g:13231:1: ( ')' )
+            // InternalCubeDSL.g:13232:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2()); 
+            }
+            match(input,89,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"
+    // InternalCubeDSL.g:13242: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 {
+            // InternalCubeDSL.g:13246:1: ( rule__XSwitchExpression__Group_2_0_0__0__Impl )
+            // InternalCubeDSL.g:13247: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"
+    // InternalCubeDSL.g:13253: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 {
+            // InternalCubeDSL.g:13257:1: ( ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) ) )
+            // InternalCubeDSL.g:13258:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:13258:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
+            // InternalCubeDSL.g:13259:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0()); 
+            }
+            // InternalCubeDSL.g:13260:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
+            // InternalCubeDSL.g:13260: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"
+    // InternalCubeDSL.g:13269: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 {
+            // InternalCubeDSL.g:13273:1: ( rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1 )
+            // InternalCubeDSL.g:13274:2: rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalCubeDSL.g:13281: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 {
+            // InternalCubeDSL.g:13285:1: ( ( '(' ) )
+            // InternalCubeDSL.g:13286:1: ( '(' )
+            {
+            // InternalCubeDSL.g:13286:1: ( '(' )
+            // InternalCubeDSL.g:13287:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0()); 
+            }
+            match(input,88,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"
+    // InternalCubeDSL.g:13296: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 {
+            // InternalCubeDSL.g:13300:1: ( rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2 )
+            // InternalCubeDSL.g:13301:2: rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2
+            {
+            pushFollow(FOLLOW_100);
+            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"
+    // InternalCubeDSL.g:13308: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 {
+            // InternalCubeDSL.g:13312:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) ) )
+            // InternalCubeDSL.g:13313:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
+            {
+            // InternalCubeDSL.g:13313:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
+            // InternalCubeDSL.g:13314:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1()); 
+            }
+            // InternalCubeDSL.g:13315:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
+            // InternalCubeDSL.g:13315: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"
+    // InternalCubeDSL.g:13323: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 {
+            // InternalCubeDSL.g:13327:1: ( rule__XSwitchExpression__Group_2_0_0_0__2__Impl )
+            // InternalCubeDSL.g:13328: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"
+    // InternalCubeDSL.g:13334: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 {
+            // InternalCubeDSL.g:13338:1: ( ( ':' ) )
+            // InternalCubeDSL.g:13339:1: ( ':' )
+            {
+            // InternalCubeDSL.g:13339:1: ( ':' )
+            // InternalCubeDSL.g:13340:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2()); 
+            }
+            match(input,99,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"
+    // InternalCubeDSL.g:13350: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 {
+            // InternalCubeDSL.g:13354:1: ( rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1 )
+            // InternalCubeDSL.g:13355:2: rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1
+            {
+            pushFollow(FOLLOW_97);
+            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"
+    // InternalCubeDSL.g:13362: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 {
+            // InternalCubeDSL.g:13366:1: ( ( ( rule__XSwitchExpression__Group_2_1_0__0 )? ) )
+            // InternalCubeDSL.g:13367:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
+            {
+            // InternalCubeDSL.g:13367:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
+            // InternalCubeDSL.g:13368:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0()); 
+            }
+            // InternalCubeDSL.g:13369:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
+            int alt117=2;
+            alt117 = dfa117.predict(input);
+            switch (alt117) {
+                case 1 :
+                    // InternalCubeDSL.g:13369: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"
+    // InternalCubeDSL.g:13377: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 {
+            // InternalCubeDSL.g:13381:1: ( rule__XSwitchExpression__Group_2_1__1__Impl )
+            // InternalCubeDSL.g:13382: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"
+    // InternalCubeDSL.g:13388: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 {
+            // InternalCubeDSL.g:13392:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) ) )
+            // InternalCubeDSL.g:13393:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
+            {
+            // InternalCubeDSL.g:13393:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
+            // InternalCubeDSL.g:13394:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1()); 
+            }
+            // InternalCubeDSL.g:13395:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
+            // InternalCubeDSL.g:13395: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"
+    // InternalCubeDSL.g:13404: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 {
+            // InternalCubeDSL.g:13408:1: ( rule__XSwitchExpression__Group_2_1_0__0__Impl )
+            // InternalCubeDSL.g:13409: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"
+    // InternalCubeDSL.g:13415: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 {
+            // InternalCubeDSL.g:13419:1: ( ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) ) )
+            // InternalCubeDSL.g:13420:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:13420:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
+            // InternalCubeDSL.g:13421:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0()); 
+            }
+            // InternalCubeDSL.g:13422:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
+            // InternalCubeDSL.g:13422: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"
+    // InternalCubeDSL.g:13431: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 {
+            // InternalCubeDSL.g:13435:1: ( rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1 )
+            // InternalCubeDSL.g:13436:2: rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1
+            {
+            pushFollow(FOLLOW_100);
+            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"
+    // InternalCubeDSL.g:13443: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 {
+            // InternalCubeDSL.g:13447:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) ) )
+            // InternalCubeDSL.g:13448:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
+            {
+            // InternalCubeDSL.g:13448:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
+            // InternalCubeDSL.g:13449:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0()); 
+            }
+            // InternalCubeDSL.g:13450:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
+            // InternalCubeDSL.g:13450: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"
+    // InternalCubeDSL.g:13458: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 {
+            // InternalCubeDSL.g:13462:1: ( rule__XSwitchExpression__Group_2_1_0_0__1__Impl )
+            // InternalCubeDSL.g:13463: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"
+    // InternalCubeDSL.g:13469: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 {
+            // InternalCubeDSL.g:13473:1: ( ( ':' ) )
+            // InternalCubeDSL.g:13474:1: ( ':' )
+            {
+            // InternalCubeDSL.g:13474:1: ( ':' )
+            // InternalCubeDSL.g:13475:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1()); 
+            }
+            match(input,99,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"
+    // InternalCubeDSL.g:13485: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 {
+            // InternalCubeDSL.g:13489:1: ( rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1 )
+            // InternalCubeDSL.g:13490:2: rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1
+            {
+            pushFollow(FOLLOW_100);
+            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"
+    // InternalCubeDSL.g:13497:1: rule__XSwitchExpression__Group_5__0__Impl : ( 'default' ) ;
+    public final void rule__XSwitchExpression__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13501:1: ( ( 'default' ) )
+            // InternalCubeDSL.g:13502:1: ( 'default' )
+            {
+            // InternalCubeDSL.g:13502:1: ( 'default' )
+            // InternalCubeDSL.g:13503:2: 'default'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0()); 
+            }
+            match(input,100,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"
+    // InternalCubeDSL.g:13512: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 {
+            // InternalCubeDSL.g:13516:1: ( rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2 )
+            // InternalCubeDSL.g:13517:2: rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:13524:1: rule__XSwitchExpression__Group_5__1__Impl : ( ':' ) ;
+    public final void rule__XSwitchExpression__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13528:1: ( ( ':' ) )
+            // InternalCubeDSL.g:13529:1: ( ':' )
+            {
+            // InternalCubeDSL.g:13529:1: ( ':' )
+            // InternalCubeDSL.g:13530:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1()); 
+            }
+            match(input,99,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"
+    // InternalCubeDSL.g:13539: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 {
+            // InternalCubeDSL.g:13543:1: ( rule__XSwitchExpression__Group_5__2__Impl )
+            // InternalCubeDSL.g:13544: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"
+    // InternalCubeDSL.g:13550: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 {
+            // InternalCubeDSL.g:13554:1: ( ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) ) )
+            // InternalCubeDSL.g:13555:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
+            {
+            // InternalCubeDSL.g:13555:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
+            // InternalCubeDSL.g:13556:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2()); 
+            }
+            // InternalCubeDSL.g:13557:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
+            // InternalCubeDSL.g:13557: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"
+    // InternalCubeDSL.g:13566: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 {
+            // InternalCubeDSL.g:13570:1: ( rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1 )
+            // InternalCubeDSL.g:13571:2: rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1
+            {
+            pushFollow(FOLLOW_101);
+            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"
+    // InternalCubeDSL.g:13578:1: rule__XCasePart__Group__0__Impl : ( () ) ;
+    public final void rule__XCasePart__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13582:1: ( ( () ) )
+            // InternalCubeDSL.g:13583:1: ( () )
+            {
+            // InternalCubeDSL.g:13583:1: ( () )
+            // InternalCubeDSL.g:13584:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getXCasePartAction_0()); 
+            }
+            // InternalCubeDSL.g:13585:2: ()
+            // InternalCubeDSL.g:13585: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"
+    // InternalCubeDSL.g:13593: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 {
+            // InternalCubeDSL.g:13597:1: ( rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2 )
+            // InternalCubeDSL.g:13598:2: rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2
+            {
+            pushFollow(FOLLOW_101);
+            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"
+    // InternalCubeDSL.g:13605:1: rule__XCasePart__Group__1__Impl : ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) ;
+    public final void rule__XCasePart__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13609:1: ( ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) )
+            // InternalCubeDSL.g:13610:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
+            {
+            // InternalCubeDSL.g:13610:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
+            // InternalCubeDSL.g:13611:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1()); 
+            }
+            // InternalCubeDSL.g:13612:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
+            int alt118=2;
+            int LA118_0 = input.LA(1);
+
+            if ( (LA118_0==RULE_ID||LA118_0==31||LA118_0==88) ) {
+                alt118=1;
+            }
+            switch (alt118) {
+                case 1 :
+                    // InternalCubeDSL.g:13612: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"
+    // InternalCubeDSL.g:13620: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 {
+            // InternalCubeDSL.g:13624:1: ( rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3 )
+            // InternalCubeDSL.g:13625:2: rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3
+            {
+            pushFollow(FOLLOW_101);
+            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"
+    // InternalCubeDSL.g:13632: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 {
+            // InternalCubeDSL.g:13636:1: ( ( ( rule__XCasePart__Group_2__0 )? ) )
+            // InternalCubeDSL.g:13637:1: ( ( rule__XCasePart__Group_2__0 )? )
+            {
+            // InternalCubeDSL.g:13637:1: ( ( rule__XCasePart__Group_2__0 )? )
+            // InternalCubeDSL.g:13638:2: ( rule__XCasePart__Group_2__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getGroup_2()); 
+            }
+            // InternalCubeDSL.g:13639:2: ( rule__XCasePart__Group_2__0 )?
+            int alt119=2;
+            int LA119_0 = input.LA(1);
+
+            if ( (LA119_0==101) ) {
+                alt119=1;
+            }
+            switch (alt119) {
+                case 1 :
+                    // InternalCubeDSL.g:13639: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"
+    // InternalCubeDSL.g:13647:1: rule__XCasePart__Group__3 : rule__XCasePart__Group__3__Impl ;
+    public final void rule__XCasePart__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13651:1: ( rule__XCasePart__Group__3__Impl )
+            // InternalCubeDSL.g:13652: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"
+    // InternalCubeDSL.g:13658:1: rule__XCasePart__Group__3__Impl : ( ( rule__XCasePart__Alternatives_3 ) ) ;
+    public final void rule__XCasePart__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13662:1: ( ( ( rule__XCasePart__Alternatives_3 ) ) )
+            // InternalCubeDSL.g:13663:1: ( ( rule__XCasePart__Alternatives_3 ) )
+            {
+            // InternalCubeDSL.g:13663:1: ( ( rule__XCasePart__Alternatives_3 ) )
+            // InternalCubeDSL.g:13664:2: ( rule__XCasePart__Alternatives_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getAlternatives_3()); 
+            }
+            // InternalCubeDSL.g:13665:2: ( rule__XCasePart__Alternatives_3 )
+            // InternalCubeDSL.g:13665: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"
+    // InternalCubeDSL.g:13674: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 {
+            // InternalCubeDSL.g:13678:1: ( rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1 )
+            // InternalCubeDSL.g:13679:2: rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:13686:1: rule__XCasePart__Group_2__0__Impl : ( 'case' ) ;
+    public final void rule__XCasePart__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13690:1: ( ( 'case' ) )
+            // InternalCubeDSL.g:13691:1: ( 'case' )
+            {
+            // InternalCubeDSL.g:13691:1: ( 'case' )
+            // InternalCubeDSL.g:13692:2: 'case'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getCaseKeyword_2_0()); 
+            }
+            match(input,101,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"
+    // InternalCubeDSL.g:13701: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 {
+            // InternalCubeDSL.g:13705:1: ( rule__XCasePart__Group_2__1__Impl )
+            // InternalCubeDSL.g:13706: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"
+    // InternalCubeDSL.g:13712: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 {
+            // InternalCubeDSL.g:13716:1: ( ( ( rule__XCasePart__CaseAssignment_2_1 ) ) )
+            // InternalCubeDSL.g:13717:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
+            {
+            // InternalCubeDSL.g:13717:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
+            // InternalCubeDSL.g:13718:2: ( rule__XCasePart__CaseAssignment_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1()); 
+            }
+            // InternalCubeDSL.g:13719:2: ( rule__XCasePart__CaseAssignment_2_1 )
+            // InternalCubeDSL.g:13719: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"
+    // InternalCubeDSL.g:13728: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 {
+            // InternalCubeDSL.g:13732:1: ( rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1 )
+            // InternalCubeDSL.g:13733:2: rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:13740:1: rule__XCasePart__Group_3_0__0__Impl : ( ':' ) ;
+    public final void rule__XCasePart__Group_3_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13744:1: ( ( ':' ) )
+            // InternalCubeDSL.g:13745:1: ( ':' )
+            {
+            // InternalCubeDSL.g:13745:1: ( ':' )
+            // InternalCubeDSL.g:13746:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0()); 
+            }
+            match(input,99,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"
+    // InternalCubeDSL.g:13755: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 {
+            // InternalCubeDSL.g:13759:1: ( rule__XCasePart__Group_3_0__1__Impl )
+            // InternalCubeDSL.g:13760: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"
+    // InternalCubeDSL.g:13766: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 {
+            // InternalCubeDSL.g:13770:1: ( ( ( rule__XCasePart__ThenAssignment_3_0_1 ) ) )
+            // InternalCubeDSL.g:13771:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
+            {
+            // InternalCubeDSL.g:13771:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
+            // InternalCubeDSL.g:13772:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1()); 
+            }
+            // InternalCubeDSL.g:13773:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
+            // InternalCubeDSL.g:13773: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"
+    // InternalCubeDSL.g:13782: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 {
+            // InternalCubeDSL.g:13786:1: ( rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1 )
+            // InternalCubeDSL.g:13787:2: rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:13794: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 {
+            // InternalCubeDSL.g:13798:1: ( ( ( rule__XForLoopExpression__Group_0__0 ) ) )
+            // InternalCubeDSL.g:13799:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
+            {
+            // InternalCubeDSL.g:13799:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
+            // InternalCubeDSL.g:13800:2: ( rule__XForLoopExpression__Group_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getGroup_0()); 
+            }
+            // InternalCubeDSL.g:13801:2: ( rule__XForLoopExpression__Group_0__0 )
+            // InternalCubeDSL.g:13801: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"
+    // InternalCubeDSL.g:13809: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 {
+            // InternalCubeDSL.g:13813:1: ( rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2 )
+            // InternalCubeDSL.g:13814:2: rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2
+            {
+            pushFollow(FOLLOW_93);
+            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"
+    // InternalCubeDSL.g:13821:1: rule__XForLoopExpression__Group__1__Impl : ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) ;
+    public final void rule__XForLoopExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13825:1: ( ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) )
+            // InternalCubeDSL.g:13826:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:13826:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
+            // InternalCubeDSL.g:13827:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1()); 
+            }
+            // InternalCubeDSL.g:13828:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
+            // InternalCubeDSL.g:13828: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"
+    // InternalCubeDSL.g:13836: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 {
+            // InternalCubeDSL.g:13840:1: ( rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3 )
+            // InternalCubeDSL.g:13841:2: rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:13848:1: rule__XForLoopExpression__Group__2__Impl : ( ')' ) ;
+    public final void rule__XForLoopExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13852:1: ( ( ')' ) )
+            // InternalCubeDSL.g:13853:1: ( ')' )
+            {
+            // InternalCubeDSL.g:13853:1: ( ')' )
+            // InternalCubeDSL.g:13854:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2()); 
+            }
+            match(input,89,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"
+    // InternalCubeDSL.g:13863:1: rule__XForLoopExpression__Group__3 : rule__XForLoopExpression__Group__3__Impl ;
+    public final void rule__XForLoopExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13867:1: ( rule__XForLoopExpression__Group__3__Impl )
+            // InternalCubeDSL.g:13868: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"
+    // InternalCubeDSL.g:13874:1: rule__XForLoopExpression__Group__3__Impl : ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) ;
+    public final void rule__XForLoopExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13878:1: ( ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) )
+            // InternalCubeDSL.g:13879:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
+            {
+            // InternalCubeDSL.g:13879:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
+            // InternalCubeDSL.g:13880:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3()); 
+            }
+            // InternalCubeDSL.g:13881:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
+            // InternalCubeDSL.g:13881: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"
+    // InternalCubeDSL.g:13890: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 {
+            // InternalCubeDSL.g:13894:1: ( rule__XForLoopExpression__Group_0__0__Impl )
+            // InternalCubeDSL.g:13895: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"
+    // InternalCubeDSL.g:13901: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 {
+            // InternalCubeDSL.g:13905:1: ( ( ( rule__XForLoopExpression__Group_0_0__0 ) ) )
+            // InternalCubeDSL.g:13906:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:13906:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
+            // InternalCubeDSL.g:13907:2: ( rule__XForLoopExpression__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0()); 
+            }
+            // InternalCubeDSL.g:13908:2: ( rule__XForLoopExpression__Group_0_0__0 )
+            // InternalCubeDSL.g:13908: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"
+    // InternalCubeDSL.g:13917: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 {
+            // InternalCubeDSL.g:13921:1: ( rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1 )
+            // InternalCubeDSL.g:13922:2: rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1
+            {
+            pushFollow(FOLLOW_102);
+            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"
+    // InternalCubeDSL.g:13929:1: rule__XForLoopExpression__Group_0_0__0__Impl : ( () ) ;
+    public final void rule__XForLoopExpression__Group_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13933:1: ( ( () ) )
+            // InternalCubeDSL.g:13934:1: ( () )
+            {
+            // InternalCubeDSL.g:13934:1: ( () )
+            // InternalCubeDSL.g:13935:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0()); 
+            }
+            // InternalCubeDSL.g:13936:2: ()
+            // InternalCubeDSL.g:13936: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"
+    // InternalCubeDSL.g:13944: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 {
+            // InternalCubeDSL.g:13948:1: ( rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2 )
+            // InternalCubeDSL.g:13949:2: rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2
+            {
+            pushFollow(FOLLOW_44);
+            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"
+    // InternalCubeDSL.g:13956: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 {
+            // InternalCubeDSL.g:13960:1: ( ( 'for' ) )
+            // InternalCubeDSL.g:13961:1: ( 'for' )
+            {
+            // InternalCubeDSL.g:13961:1: ( 'for' )
+            // InternalCubeDSL.g:13962:2: 'for'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1()); 
+            }
+            match(input,102,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"
+    // InternalCubeDSL.g:13971: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 {
+            // InternalCubeDSL.g:13975:1: ( rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3 )
+            // InternalCubeDSL.g:13976:2: rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalCubeDSL.g:13983:1: rule__XForLoopExpression__Group_0_0__2__Impl : ( '(' ) ;
+    public final void rule__XForLoopExpression__Group_0_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:13987:1: ( ( '(' ) )
+            // InternalCubeDSL.g:13988:1: ( '(' )
+            {
+            // InternalCubeDSL.g:13988:1: ( '(' )
+            // InternalCubeDSL.g:13989:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
+            }
+            match(input,88,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"
+    // InternalCubeDSL.g:13998: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 {
+            // InternalCubeDSL.g:14002:1: ( rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4 )
+            // InternalCubeDSL.g:14003:2: rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4
+            {
+            pushFollow(FOLLOW_100);
+            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"
+    // InternalCubeDSL.g:14010: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 {
+            // InternalCubeDSL.g:14014:1: ( ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) ) )
+            // InternalCubeDSL.g:14015:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
+            {
+            // InternalCubeDSL.g:14015:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
+            // InternalCubeDSL.g:14016:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3()); 
+            }
+            // InternalCubeDSL.g:14017:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
+            // InternalCubeDSL.g:14017: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"
+    // InternalCubeDSL.g:14025: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 {
+            // InternalCubeDSL.g:14029:1: ( rule__XForLoopExpression__Group_0_0__4__Impl )
+            // InternalCubeDSL.g:14030: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"
+    // InternalCubeDSL.g:14036:1: rule__XForLoopExpression__Group_0_0__4__Impl : ( ':' ) ;
+    public final void rule__XForLoopExpression__Group_0_0__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14040:1: ( ( ':' ) )
+            // InternalCubeDSL.g:14041:1: ( ':' )
+            {
+            // InternalCubeDSL.g:14041:1: ( ':' )
+            // InternalCubeDSL.g:14042:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4()); 
+            }
+            match(input,99,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"
+    // InternalCubeDSL.g:14052: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 {
+            // InternalCubeDSL.g:14056:1: ( rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1 )
+            // InternalCubeDSL.g:14057:2: rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1
+            {
+            pushFollow(FOLLOW_102);
+            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"
+    // InternalCubeDSL.g:14064:1: rule__XBasicForLoopExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XBasicForLoopExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14068:1: ( ( () ) )
+            // InternalCubeDSL.g:14069:1: ( () )
+            {
+            // InternalCubeDSL.g:14069:1: ( () )
+            // InternalCubeDSL.g:14070:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0()); 
+            }
+            // InternalCubeDSL.g:14071:2: ()
+            // InternalCubeDSL.g:14071: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"
+    // InternalCubeDSL.g:14079: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 {
+            // InternalCubeDSL.g:14083:1: ( rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2 )
+            // InternalCubeDSL.g:14084:2: rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2
+            {
+            pushFollow(FOLLOW_44);
+            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"
+    // InternalCubeDSL.g:14091:1: rule__XBasicForLoopExpression__Group__1__Impl : ( 'for' ) ;
+    public final void rule__XBasicForLoopExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14095:1: ( ( 'for' ) )
+            // InternalCubeDSL.g:14096:1: ( 'for' )
+            {
+            // InternalCubeDSL.g:14096:1: ( 'for' )
+            // InternalCubeDSL.g:14097:2: 'for'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1()); 
+            }
+            match(input,102,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"
+    // InternalCubeDSL.g:14106: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 {
+            // InternalCubeDSL.g:14110:1: ( rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3 )
+            // InternalCubeDSL.g:14111:2: rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3
+            {
+            pushFollow(FOLLOW_103);
+            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"
+    // InternalCubeDSL.g:14118:1: rule__XBasicForLoopExpression__Group__2__Impl : ( '(' ) ;
+    public final void rule__XBasicForLoopExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14122:1: ( ( '(' ) )
+            // InternalCubeDSL.g:14123:1: ( '(' )
+            {
+            // InternalCubeDSL.g:14123:1: ( '(' )
+            // InternalCubeDSL.g:14124:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2()); 
+            }
+            match(input,88,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"
+    // InternalCubeDSL.g:14133: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 {
+            // InternalCubeDSL.g:14137:1: ( rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4 )
+            // InternalCubeDSL.g:14138:2: rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4
+            {
+            pushFollow(FOLLOW_103);
+            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"
+    // InternalCubeDSL.g:14145: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 {
+            // InternalCubeDSL.g:14149:1: ( ( ( rule__XBasicForLoopExpression__Group_3__0 )? ) )
+            // InternalCubeDSL.g:14150:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
+            {
+            // InternalCubeDSL.g:14150:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
+            // InternalCubeDSL.g:14151:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3()); 
+            }
+            // InternalCubeDSL.g:14152:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
+            int alt120=2;
+            int LA120_0 = input.LA(1);
+
+            if ( ((LA120_0>=RULE_ID && LA120_0<=RULE_DECIMAL)||LA120_0==27||(LA120_0>=34 && LA120_0<=35)||LA120_0==40||(LA120_0>=44 && LA120_0<=50)||LA120_0==74||LA120_0==88||(LA120_0>=92 && LA120_0<=93)||LA120_0==96||LA120_0==98||(LA120_0>=102 && LA120_0<=110)||LA120_0==112||(LA120_0>=130 && LA120_0<=131)) ) {
+                alt120=1;
+            }
+            switch (alt120) {
+                case 1 :
+                    // InternalCubeDSL.g:14152: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"
+    // InternalCubeDSL.g:14160: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 {
+            // InternalCubeDSL.g:14164:1: ( rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5 )
+            // InternalCubeDSL.g:14165:2: rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5
+            {
+            pushFollow(FOLLOW_104);
+            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"
+    // InternalCubeDSL.g:14172:1: rule__XBasicForLoopExpression__Group__4__Impl : ( ';' ) ;
+    public final void rule__XBasicForLoopExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14176:1: ( ( ';' ) )
+            // InternalCubeDSL.g:14177:1: ( ';' )
+            {
+            // InternalCubeDSL.g:14177:1: ( ';' )
+            // InternalCubeDSL.g:14178:2: ';'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4()); 
+            }
+            match(input,86,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"
+    // InternalCubeDSL.g:14187: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 {
+            // InternalCubeDSL.g:14191:1: ( rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6 )
+            // InternalCubeDSL.g:14192:2: rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6
+            {
+            pushFollow(FOLLOW_104);
+            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"
+    // InternalCubeDSL.g:14199:1: rule__XBasicForLoopExpression__Group__5__Impl : ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) ;
+    public final void rule__XBasicForLoopExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14203:1: ( ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) )
+            // InternalCubeDSL.g:14204:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
+            {
+            // InternalCubeDSL.g:14204:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
+            // InternalCubeDSL.g:14205:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5()); 
+            }
+            // InternalCubeDSL.g:14206:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
+            int alt121=2;
+            int LA121_0 = input.LA(1);
+
+            if ( ((LA121_0>=RULE_ID && LA121_0<=RULE_DECIMAL)||LA121_0==27||(LA121_0>=34 && LA121_0<=35)||LA121_0==40||(LA121_0>=45 && LA121_0<=50)||LA121_0==74||LA121_0==88||(LA121_0>=92 && LA121_0<=93)||LA121_0==96||LA121_0==98||(LA121_0>=102 && LA121_0<=110)||LA121_0==112||LA121_0==131) ) {
+                alt121=1;
+            }
+            switch (alt121) {
+                case 1 :
+                    // InternalCubeDSL.g:14206: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"
+    // InternalCubeDSL.g:14214: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 {
+            // InternalCubeDSL.g:14218:1: ( rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7 )
+            // InternalCubeDSL.g:14219:2: rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7
+            {
+            pushFollow(FOLLOW_45);
+            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"
+    // InternalCubeDSL.g:14226:1: rule__XBasicForLoopExpression__Group__6__Impl : ( ';' ) ;
+    public final void rule__XBasicForLoopExpression__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14230:1: ( ( ';' ) )
+            // InternalCubeDSL.g:14231:1: ( ';' )
+            {
+            // InternalCubeDSL.g:14231:1: ( ';' )
+            // InternalCubeDSL.g:14232:2: ';'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6()); 
+            }
+            match(input,86,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"
+    // InternalCubeDSL.g:14241: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 {
+            // InternalCubeDSL.g:14245:1: ( rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8 )
+            // InternalCubeDSL.g:14246:2: rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8
+            {
+            pushFollow(FOLLOW_45);
+            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"
+    // InternalCubeDSL.g:14253: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 {
+            // InternalCubeDSL.g:14257:1: ( ( ( rule__XBasicForLoopExpression__Group_7__0 )? ) )
+            // InternalCubeDSL.g:14258:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
+            {
+            // InternalCubeDSL.g:14258:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
+            // InternalCubeDSL.g:14259:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7()); 
+            }
+            // InternalCubeDSL.g:14260:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
+            int alt122=2;
+            int LA122_0 = input.LA(1);
+
+            if ( ((LA122_0>=RULE_ID && LA122_0<=RULE_DECIMAL)||LA122_0==27||(LA122_0>=34 && LA122_0<=35)||LA122_0==40||(LA122_0>=45 && LA122_0<=50)||LA122_0==74||LA122_0==88||(LA122_0>=92 && LA122_0<=93)||LA122_0==96||LA122_0==98||(LA122_0>=102 && LA122_0<=110)||LA122_0==112||LA122_0==131) ) {
+                alt122=1;
+            }
+            switch (alt122) {
+                case 1 :
+                    // InternalCubeDSL.g:14260: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"
+    // InternalCubeDSL.g:14268: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 {
+            // InternalCubeDSL.g:14272:1: ( rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9 )
+            // InternalCubeDSL.g:14273:2: rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:14280:1: rule__XBasicForLoopExpression__Group__8__Impl : ( ')' ) ;
+    public final void rule__XBasicForLoopExpression__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14284:1: ( ( ')' ) )
+            // InternalCubeDSL.g:14285:1: ( ')' )
+            {
+            // InternalCubeDSL.g:14285:1: ( ')' )
+            // InternalCubeDSL.g:14286:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8()); 
+            }
+            match(input,89,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"
+    // InternalCubeDSL.g:14295:1: rule__XBasicForLoopExpression__Group__9 : rule__XBasicForLoopExpression__Group__9__Impl ;
+    public final void rule__XBasicForLoopExpression__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14299:1: ( rule__XBasicForLoopExpression__Group__9__Impl )
+            // InternalCubeDSL.g:14300: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"
+    // InternalCubeDSL.g:14306:1: rule__XBasicForLoopExpression__Group__9__Impl : ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) ;
+    public final void rule__XBasicForLoopExpression__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14310:1: ( ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) )
+            // InternalCubeDSL.g:14311:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
+            {
+            // InternalCubeDSL.g:14311:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
+            // InternalCubeDSL.g:14312:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9()); 
+            }
+            // InternalCubeDSL.g:14313:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
+            // InternalCubeDSL.g:14313: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"
+    // InternalCubeDSL.g:14322: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 {
+            // InternalCubeDSL.g:14326:1: ( rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1 )
+            // InternalCubeDSL.g:14327:2: rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1
+            {
+            pushFollow(FOLLOW_46);
+            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"
+    // InternalCubeDSL.g:14334: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 {
+            // InternalCubeDSL.g:14338:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) ) )
+            // InternalCubeDSL.g:14339:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
+            {
+            // InternalCubeDSL.g:14339:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
+            // InternalCubeDSL.g:14340:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0()); 
+            }
+            // InternalCubeDSL.g:14341:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
+            // InternalCubeDSL.g:14341: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"
+    // InternalCubeDSL.g:14349: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 {
+            // InternalCubeDSL.g:14353:1: ( rule__XBasicForLoopExpression__Group_3__1__Impl )
+            // InternalCubeDSL.g:14354: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"
+    // InternalCubeDSL.g:14360: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 {
+            // InternalCubeDSL.g:14364:1: ( ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* ) )
+            // InternalCubeDSL.g:14365:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
+            {
+            // InternalCubeDSL.g:14365:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
+            // InternalCubeDSL.g:14366:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1()); 
+            }
+            // InternalCubeDSL.g:14367:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
+            loop123:
+            do {
+                int alt123=2;
+                int LA123_0 = input.LA(1);
+
+                if ( (LA123_0==90) ) {
+                    alt123=1;
+                }
+
+
+                switch (alt123) {
+            	case 1 :
+            	    // InternalCubeDSL.g:14367:3: rule__XBasicForLoopExpression__Group_3_1__0
+            	    {
+            	    pushFollow(FOLLOW_47);
+            	    rule__XBasicForLoopExpression__Group_3_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop123;
+                }
+            } 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"
+    // InternalCubeDSL.g:14376: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 {
+            // InternalCubeDSL.g:14380:1: ( rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1 )
+            // InternalCubeDSL.g:14381:2: rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1
+            {
+            pushFollow(FOLLOW_105);
+            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"
+    // InternalCubeDSL.g:14388:1: rule__XBasicForLoopExpression__Group_3_1__0__Impl : ( ',' ) ;
+    public final void rule__XBasicForLoopExpression__Group_3_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14392:1: ( ( ',' ) )
+            // InternalCubeDSL.g:14393:1: ( ',' )
+            {
+            // InternalCubeDSL.g:14393:1: ( ',' )
+            // InternalCubeDSL.g:14394:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0()); 
+            }
+            match(input,90,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"
+    // InternalCubeDSL.g:14403: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 {
+            // InternalCubeDSL.g:14407:1: ( rule__XBasicForLoopExpression__Group_3_1__1__Impl )
+            // InternalCubeDSL.g:14408: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"
+    // InternalCubeDSL.g:14414: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 {
+            // InternalCubeDSL.g:14418:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) ) )
+            // InternalCubeDSL.g:14419:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
+            {
+            // InternalCubeDSL.g:14419:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
+            // InternalCubeDSL.g:14420:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1()); 
+            }
+            // InternalCubeDSL.g:14421:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
+            // InternalCubeDSL.g:14421: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"
+    // InternalCubeDSL.g:14430: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 {
+            // InternalCubeDSL.g:14434:1: ( rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1 )
+            // InternalCubeDSL.g:14435:2: rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1
+            {
+            pushFollow(FOLLOW_46);
+            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"
+    // InternalCubeDSL.g:14442: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 {
+            // InternalCubeDSL.g:14446:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) ) )
+            // InternalCubeDSL.g:14447:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
+            {
+            // InternalCubeDSL.g:14447:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
+            // InternalCubeDSL.g:14448:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0()); 
+            }
+            // InternalCubeDSL.g:14449:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
+            // InternalCubeDSL.g:14449: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"
+    // InternalCubeDSL.g:14457: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 {
+            // InternalCubeDSL.g:14461:1: ( rule__XBasicForLoopExpression__Group_7__1__Impl )
+            // InternalCubeDSL.g:14462: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"
+    // InternalCubeDSL.g:14468: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 {
+            // InternalCubeDSL.g:14472:1: ( ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* ) )
+            // InternalCubeDSL.g:14473:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
+            {
+            // InternalCubeDSL.g:14473:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
+            // InternalCubeDSL.g:14474:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1()); 
+            }
+            // InternalCubeDSL.g:14475:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
+            loop124:
+            do {
+                int alt124=2;
+                int LA124_0 = input.LA(1);
+
+                if ( (LA124_0==90) ) {
+                    alt124=1;
+                }
+
+
+                switch (alt124) {
+            	case 1 :
+            	    // InternalCubeDSL.g:14475:3: rule__XBasicForLoopExpression__Group_7_1__0
+            	    {
+            	    pushFollow(FOLLOW_47);
+            	    rule__XBasicForLoopExpression__Group_7_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop124;
+                }
+            } 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"
+    // InternalCubeDSL.g:14484: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 {
+            // InternalCubeDSL.g:14488:1: ( rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1 )
+            // InternalCubeDSL.g:14489:2: rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:14496:1: rule__XBasicForLoopExpression__Group_7_1__0__Impl : ( ',' ) ;
+    public final void rule__XBasicForLoopExpression__Group_7_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14500:1: ( ( ',' ) )
+            // InternalCubeDSL.g:14501:1: ( ',' )
+            {
+            // InternalCubeDSL.g:14501:1: ( ',' )
+            // InternalCubeDSL.g:14502:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0()); 
+            }
+            match(input,90,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"
+    // InternalCubeDSL.g:14511: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 {
+            // InternalCubeDSL.g:14515:1: ( rule__XBasicForLoopExpression__Group_7_1__1__Impl )
+            // InternalCubeDSL.g:14516: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"
+    // InternalCubeDSL.g:14522: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 {
+            // InternalCubeDSL.g:14526:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) ) )
+            // InternalCubeDSL.g:14527:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
+            {
+            // InternalCubeDSL.g:14527:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
+            // InternalCubeDSL.g:14528:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1()); 
+            }
+            // InternalCubeDSL.g:14529:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
+            // InternalCubeDSL.g:14529: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"
+    // InternalCubeDSL.g:14538: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 {
+            // InternalCubeDSL.g:14542:1: ( rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1 )
+            // InternalCubeDSL.g:14543:2: rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1
+            {
+            pushFollow(FOLLOW_106);
+            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"
+    // InternalCubeDSL.g:14550:1: rule__XWhileExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XWhileExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14554:1: ( ( () ) )
+            // InternalCubeDSL.g:14555:1: ( () )
+            {
+            // InternalCubeDSL.g:14555:1: ( () )
+            // InternalCubeDSL.g:14556:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0()); 
+            }
+            // InternalCubeDSL.g:14557:2: ()
+            // InternalCubeDSL.g:14557: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"
+    // InternalCubeDSL.g:14565: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 {
+            // InternalCubeDSL.g:14569:1: ( rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2 )
+            // InternalCubeDSL.g:14570:2: rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2
+            {
+            pushFollow(FOLLOW_44);
+            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"
+    // InternalCubeDSL.g:14577:1: rule__XWhileExpression__Group__1__Impl : ( 'while' ) ;
+    public final void rule__XWhileExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14581:1: ( ( 'while' ) )
+            // InternalCubeDSL.g:14582:1: ( 'while' )
+            {
+            // InternalCubeDSL.g:14582:1: ( 'while' )
+            // InternalCubeDSL.g:14583:2: 'while'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1()); 
+            }
+            match(input,103,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"
+    // InternalCubeDSL.g:14592: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 {
+            // InternalCubeDSL.g:14596:1: ( rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3 )
+            // InternalCubeDSL.g:14597:2: rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:14604:1: rule__XWhileExpression__Group__2__Impl : ( '(' ) ;
+    public final void rule__XWhileExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14608:1: ( ( '(' ) )
+            // InternalCubeDSL.g:14609:1: ( '(' )
+            {
+            // InternalCubeDSL.g:14609:1: ( '(' )
+            // InternalCubeDSL.g:14610:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2()); 
+            }
+            match(input,88,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"
+    // InternalCubeDSL.g:14619: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 {
+            // InternalCubeDSL.g:14623:1: ( rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4 )
+            // InternalCubeDSL.g:14624:2: rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4
+            {
+            pushFollow(FOLLOW_93);
+            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"
+    // InternalCubeDSL.g:14631:1: rule__XWhileExpression__Group__3__Impl : ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) ;
+    public final void rule__XWhileExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14635:1: ( ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) )
+            // InternalCubeDSL.g:14636:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
+            {
+            // InternalCubeDSL.g:14636:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
+            // InternalCubeDSL.g:14637:2: ( rule__XWhileExpression__PredicateAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3()); 
+            }
+            // InternalCubeDSL.g:14638:2: ( rule__XWhileExpression__PredicateAssignment_3 )
+            // InternalCubeDSL.g:14638: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"
+    // InternalCubeDSL.g:14646: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 {
+            // InternalCubeDSL.g:14650:1: ( rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5 )
+            // InternalCubeDSL.g:14651:2: rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:14658:1: rule__XWhileExpression__Group__4__Impl : ( ')' ) ;
+    public final void rule__XWhileExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14662:1: ( ( ')' ) )
+            // InternalCubeDSL.g:14663:1: ( ')' )
+            {
+            // InternalCubeDSL.g:14663:1: ( ')' )
+            // InternalCubeDSL.g:14664:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4()); 
+            }
+            match(input,89,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"
+    // InternalCubeDSL.g:14673:1: rule__XWhileExpression__Group__5 : rule__XWhileExpression__Group__5__Impl ;
+    public final void rule__XWhileExpression__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14677:1: ( rule__XWhileExpression__Group__5__Impl )
+            // InternalCubeDSL.g:14678: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"
+    // InternalCubeDSL.g:14684:1: rule__XWhileExpression__Group__5__Impl : ( ( rule__XWhileExpression__BodyAssignment_5 ) ) ;
+    public final void rule__XWhileExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14688:1: ( ( ( rule__XWhileExpression__BodyAssignment_5 ) ) )
+            // InternalCubeDSL.g:14689:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
+            {
+            // InternalCubeDSL.g:14689:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
+            // InternalCubeDSL.g:14690:2: ( rule__XWhileExpression__BodyAssignment_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5()); 
+            }
+            // InternalCubeDSL.g:14691:2: ( rule__XWhileExpression__BodyAssignment_5 )
+            // InternalCubeDSL.g:14691: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"
+    // InternalCubeDSL.g:14700: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 {
+            // InternalCubeDSL.g:14704:1: ( rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1 )
+            // InternalCubeDSL.g:14705:2: rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1
+            {
+            pushFollow(FOLLOW_107);
+            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"
+    // InternalCubeDSL.g:14712:1: rule__XDoWhileExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XDoWhileExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14716:1: ( ( () ) )
+            // InternalCubeDSL.g:14717:1: ( () )
+            {
+            // InternalCubeDSL.g:14717:1: ( () )
+            // InternalCubeDSL.g:14718:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0()); 
+            }
+            // InternalCubeDSL.g:14719:2: ()
+            // InternalCubeDSL.g:14719: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"
+    // InternalCubeDSL.g:14727: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 {
+            // InternalCubeDSL.g:14731:1: ( rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2 )
+            // InternalCubeDSL.g:14732:2: rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:14739:1: rule__XDoWhileExpression__Group__1__Impl : ( 'do' ) ;
+    public final void rule__XDoWhileExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14743:1: ( ( 'do' ) )
+            // InternalCubeDSL.g:14744:1: ( 'do' )
+            {
+            // InternalCubeDSL.g:14744:1: ( 'do' )
+            // InternalCubeDSL.g:14745:2: 'do'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1()); 
+            }
+            match(input,104,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"
+    // InternalCubeDSL.g:14754: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 {
+            // InternalCubeDSL.g:14758:1: ( rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3 )
+            // InternalCubeDSL.g:14759:2: rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3
+            {
+            pushFollow(FOLLOW_106);
+            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"
+    // InternalCubeDSL.g:14766:1: rule__XDoWhileExpression__Group__2__Impl : ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) ;
+    public final void rule__XDoWhileExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14770:1: ( ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) )
+            // InternalCubeDSL.g:14771:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
+            {
+            // InternalCubeDSL.g:14771:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
+            // InternalCubeDSL.g:14772:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2()); 
+            }
+            // InternalCubeDSL.g:14773:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
+            // InternalCubeDSL.g:14773: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"
+    // InternalCubeDSL.g:14781: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 {
+            // InternalCubeDSL.g:14785:1: ( rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4 )
+            // InternalCubeDSL.g:14786:2: rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4
+            {
+            pushFollow(FOLLOW_44);
+            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"
+    // InternalCubeDSL.g:14793:1: rule__XDoWhileExpression__Group__3__Impl : ( 'while' ) ;
+    public final void rule__XDoWhileExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14797:1: ( ( 'while' ) )
+            // InternalCubeDSL.g:14798:1: ( 'while' )
+            {
+            // InternalCubeDSL.g:14798:1: ( 'while' )
+            // InternalCubeDSL.g:14799:2: 'while'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3()); 
+            }
+            match(input,103,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"
+    // InternalCubeDSL.g:14808: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 {
+            // InternalCubeDSL.g:14812:1: ( rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5 )
+            // InternalCubeDSL.g:14813:2: rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:14820:1: rule__XDoWhileExpression__Group__4__Impl : ( '(' ) ;
+    public final void rule__XDoWhileExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14824:1: ( ( '(' ) )
+            // InternalCubeDSL.g:14825:1: ( '(' )
+            {
+            // InternalCubeDSL.g:14825:1: ( '(' )
+            // InternalCubeDSL.g:14826:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4()); 
+            }
+            match(input,88,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"
+    // InternalCubeDSL.g:14835: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 {
+            // InternalCubeDSL.g:14839:1: ( rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6 )
+            // InternalCubeDSL.g:14840:2: rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6
+            {
+            pushFollow(FOLLOW_93);
+            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"
+    // InternalCubeDSL.g:14847:1: rule__XDoWhileExpression__Group__5__Impl : ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) ;
+    public final void rule__XDoWhileExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14851:1: ( ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) )
+            // InternalCubeDSL.g:14852:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
+            {
+            // InternalCubeDSL.g:14852:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
+            // InternalCubeDSL.g:14853:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5()); 
+            }
+            // InternalCubeDSL.g:14854:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
+            // InternalCubeDSL.g:14854: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"
+    // InternalCubeDSL.g:14862:1: rule__XDoWhileExpression__Group__6 : rule__XDoWhileExpression__Group__6__Impl ;
+    public final void rule__XDoWhileExpression__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14866:1: ( rule__XDoWhileExpression__Group__6__Impl )
+            // InternalCubeDSL.g:14867: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"
+    // InternalCubeDSL.g:14873:1: rule__XDoWhileExpression__Group__6__Impl : ( ')' ) ;
+    public final void rule__XDoWhileExpression__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14877:1: ( ( ')' ) )
+            // InternalCubeDSL.g:14878:1: ( ')' )
+            {
+            // InternalCubeDSL.g:14878:1: ( ')' )
+            // InternalCubeDSL.g:14879:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6()); 
+            }
+            match(input,89,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"
+    // InternalCubeDSL.g:14889: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 {
+            // InternalCubeDSL.g:14893:1: ( rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1 )
+            // InternalCubeDSL.g:14894:2: rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1
+            {
+            pushFollow(FOLLOW_7);
+            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"
+    // InternalCubeDSL.g:14901:1: rule__XBlockExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XBlockExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14905:1: ( ( () ) )
+            // InternalCubeDSL.g:14906:1: ( () )
+            {
+            // InternalCubeDSL.g:14906:1: ( () )
+            // InternalCubeDSL.g:14907:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0()); 
+            }
+            // InternalCubeDSL.g:14908:2: ()
+            // InternalCubeDSL.g:14908: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"
+    // InternalCubeDSL.g:14916: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 {
+            // InternalCubeDSL.g:14920:1: ( rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2 )
+            // InternalCubeDSL.g:14921:2: rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2
+            {
+            pushFollow(FOLLOW_108);
+            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"
+    // InternalCubeDSL.g:14928:1: rule__XBlockExpression__Group__1__Impl : ( '{' ) ;
+    public final void rule__XBlockExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14932:1: ( ( '{' ) )
+            // InternalCubeDSL.g:14933:1: ( '{' )
+            {
+            // InternalCubeDSL.g:14933:1: ( '{' )
+            // InternalCubeDSL.g:14934:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+            }
+            match(input,74,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"
+    // InternalCubeDSL.g:14943: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 {
+            // InternalCubeDSL.g:14947:1: ( rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3 )
+            // InternalCubeDSL.g:14948:2: rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3
+            {
+            pushFollow(FOLLOW_108);
+            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"
+    // InternalCubeDSL.g:14955: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 {
+            // InternalCubeDSL.g:14959:1: ( ( ( rule__XBlockExpression__Group_2__0 )* ) )
+            // InternalCubeDSL.g:14960:1: ( ( rule__XBlockExpression__Group_2__0 )* )
+            {
+            // InternalCubeDSL.g:14960:1: ( ( rule__XBlockExpression__Group_2__0 )* )
+            // InternalCubeDSL.g:14961:2: ( rule__XBlockExpression__Group_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getGroup_2()); 
+            }
+            // InternalCubeDSL.g:14962:2: ( rule__XBlockExpression__Group_2__0 )*
+            loop125:
+            do {
+                int alt125=2;
+                int LA125_0 = input.LA(1);
+
+                if ( ((LA125_0>=RULE_ID && LA125_0<=RULE_DECIMAL)||LA125_0==27||(LA125_0>=34 && LA125_0<=35)||LA125_0==40||(LA125_0>=44 && LA125_0<=50)||LA125_0==74||LA125_0==88||(LA125_0>=92 && LA125_0<=93)||LA125_0==96||LA125_0==98||(LA125_0>=102 && LA125_0<=110)||LA125_0==112||(LA125_0>=130 && LA125_0<=131)) ) {
+                    alt125=1;
+                }
+
+
+                switch (alt125) {
+            	case 1 :
+            	    // InternalCubeDSL.g:14962:3: rule__XBlockExpression__Group_2__0
+            	    {
+            	    pushFollow(FOLLOW_92);
+            	    rule__XBlockExpression__Group_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop125;
+                }
+            } 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"
+    // InternalCubeDSL.g:14970:1: rule__XBlockExpression__Group__3 : rule__XBlockExpression__Group__3__Impl ;
+    public final void rule__XBlockExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14974:1: ( rule__XBlockExpression__Group__3__Impl )
+            // InternalCubeDSL.g:14975: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"
+    // InternalCubeDSL.g:14981:1: rule__XBlockExpression__Group__3__Impl : ( '}' ) ;
+    public final void rule__XBlockExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:14985:1: ( ( '}' ) )
+            // InternalCubeDSL.g:14986:1: ( '}' )
+            {
+            // InternalCubeDSL.g:14986:1: ( '}' )
+            // InternalCubeDSL.g:14987:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3()); 
+            }
+            match(input,75,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"
+    // InternalCubeDSL.g:14997: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 {
+            // InternalCubeDSL.g:15001:1: ( rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1 )
+            // InternalCubeDSL.g:15002:2: rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1
+            {
+            pushFollow(FOLLOW_40);
+            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"
+    // InternalCubeDSL.g:15009: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 {
+            // InternalCubeDSL.g:15013:1: ( ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) ) )
+            // InternalCubeDSL.g:15014:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
+            {
+            // InternalCubeDSL.g:15014:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
+            // InternalCubeDSL.g:15015:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0()); 
+            }
+            // InternalCubeDSL.g:15016:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
+            // InternalCubeDSL.g:15016: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"
+    // InternalCubeDSL.g:15024: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 {
+            // InternalCubeDSL.g:15028:1: ( rule__XBlockExpression__Group_2__1__Impl )
+            // InternalCubeDSL.g:15029: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"
+    // InternalCubeDSL.g:15035:1: rule__XBlockExpression__Group_2__1__Impl : ( ( ';' )? ) ;
+    public final void rule__XBlockExpression__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15039:1: ( ( ( ';' )? ) )
+            // InternalCubeDSL.g:15040:1: ( ( ';' )? )
+            {
+            // InternalCubeDSL.g:15040:1: ( ( ';' )? )
+            // InternalCubeDSL.g:15041:2: ( ';' )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1()); 
+            }
+            // InternalCubeDSL.g:15042:2: ( ';' )?
+            int alt126=2;
+            int LA126_0 = input.LA(1);
+
+            if ( (LA126_0==86) ) {
+                alt126=1;
+            }
+            switch (alt126) {
+                case 1 :
+                    // InternalCubeDSL.g:15042:3: ';'
+                    {
+                    match(input,86,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"
+    // InternalCubeDSL.g:15051: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 {
+            // InternalCubeDSL.g:15055:1: ( rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1 )
+            // InternalCubeDSL.g:15056:2: rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1
+            {
+            pushFollow(FOLLOW_109);
+            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"
+    // InternalCubeDSL.g:15063:1: rule__XVariableDeclaration__Group__0__Impl : ( () ) ;
+    public final void rule__XVariableDeclaration__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15067:1: ( ( () ) )
+            // InternalCubeDSL.g:15068:1: ( () )
+            {
+            // InternalCubeDSL.g:15068:1: ( () )
+            // InternalCubeDSL.g:15069:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0()); 
+            }
+            // InternalCubeDSL.g:15070:2: ()
+            // InternalCubeDSL.g:15070: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"
+    // InternalCubeDSL.g:15078: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 {
+            // InternalCubeDSL.g:15082:1: ( rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2 )
+            // InternalCubeDSL.g:15083:2: rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalCubeDSL.g:15090:1: rule__XVariableDeclaration__Group__1__Impl : ( ( rule__XVariableDeclaration__Alternatives_1 ) ) ;
+    public final void rule__XVariableDeclaration__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15094:1: ( ( ( rule__XVariableDeclaration__Alternatives_1 ) ) )
+            // InternalCubeDSL.g:15095:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
+            {
+            // InternalCubeDSL.g:15095:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
+            // InternalCubeDSL.g:15096:2: ( rule__XVariableDeclaration__Alternatives_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getAlternatives_1()); 
+            }
+            // InternalCubeDSL.g:15097:2: ( rule__XVariableDeclaration__Alternatives_1 )
+            // InternalCubeDSL.g:15097: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"
+    // InternalCubeDSL.g:15105: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 {
+            // InternalCubeDSL.g:15109:1: ( rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3 )
+            // InternalCubeDSL.g:15110:2: rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3
+            {
+            pushFollow(FOLLOW_49);
+            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"
+    // InternalCubeDSL.g:15117:1: rule__XVariableDeclaration__Group__2__Impl : ( ( rule__XVariableDeclaration__Alternatives_2 ) ) ;
+    public final void rule__XVariableDeclaration__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15121:1: ( ( ( rule__XVariableDeclaration__Alternatives_2 ) ) )
+            // InternalCubeDSL.g:15122:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
+            {
+            // InternalCubeDSL.g:15122:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
+            // InternalCubeDSL.g:15123:2: ( rule__XVariableDeclaration__Alternatives_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getAlternatives_2()); 
+            }
+            // InternalCubeDSL.g:15124:2: ( rule__XVariableDeclaration__Alternatives_2 )
+            // InternalCubeDSL.g:15124: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"
+    // InternalCubeDSL.g:15132:1: rule__XVariableDeclaration__Group__3 : rule__XVariableDeclaration__Group__3__Impl ;
+    public final void rule__XVariableDeclaration__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15136:1: ( rule__XVariableDeclaration__Group__3__Impl )
+            // InternalCubeDSL.g:15137: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"
+    // InternalCubeDSL.g:15143: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 {
+            // InternalCubeDSL.g:15147:1: ( ( ( rule__XVariableDeclaration__Group_3__0 )? ) )
+            // InternalCubeDSL.g:15148:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
+            {
+            // InternalCubeDSL.g:15148:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
+            // InternalCubeDSL.g:15149:2: ( rule__XVariableDeclaration__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getGroup_3()); 
+            }
+            // InternalCubeDSL.g:15150:2: ( rule__XVariableDeclaration__Group_3__0 )?
+            int alt127=2;
+            int LA127_0 = input.LA(1);
+
+            if ( (LA127_0==13) ) {
+                alt127=1;
+            }
+            switch (alt127) {
+                case 1 :
+                    // InternalCubeDSL.g:15150: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"
+    // InternalCubeDSL.g:15159: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 {
+            // InternalCubeDSL.g:15163:1: ( rule__XVariableDeclaration__Group_2_0__0__Impl )
+            // InternalCubeDSL.g:15164: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"
+    // InternalCubeDSL.g:15170: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 {
+            // InternalCubeDSL.g:15174:1: ( ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) ) )
+            // InternalCubeDSL.g:15175:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:15175:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
+            // InternalCubeDSL.g:15176:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0()); 
+            }
+            // InternalCubeDSL.g:15177:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
+            // InternalCubeDSL.g:15177: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"
+    // InternalCubeDSL.g:15186: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 {
+            // InternalCubeDSL.g:15190:1: ( rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1 )
+            // InternalCubeDSL.g:15191:2: rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1
+            {
+            pushFollow(FOLLOW_6);
+            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"
+    // InternalCubeDSL.g:15198: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 {
+            // InternalCubeDSL.g:15202:1: ( ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) ) )
+            // InternalCubeDSL.g:15203:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
+            {
+            // InternalCubeDSL.g:15203:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
+            // InternalCubeDSL.g:15204:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0()); 
+            }
+            // InternalCubeDSL.g:15205:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
+            // InternalCubeDSL.g:15205: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"
+    // InternalCubeDSL.g:15213: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 {
+            // InternalCubeDSL.g:15217:1: ( rule__XVariableDeclaration__Group_2_0_0__1__Impl )
+            // InternalCubeDSL.g:15218: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"
+    // InternalCubeDSL.g:15224: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 {
+            // InternalCubeDSL.g:15228:1: ( ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) ) )
+            // InternalCubeDSL.g:15229:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
+            {
+            // InternalCubeDSL.g:15229:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
+            // InternalCubeDSL.g:15230:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1()); 
+            }
+            // InternalCubeDSL.g:15231:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
+            // InternalCubeDSL.g:15231: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"
+    // InternalCubeDSL.g:15240: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 {
+            // InternalCubeDSL.g:15244:1: ( rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1 )
+            // InternalCubeDSL.g:15245:2: rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:15252:1: rule__XVariableDeclaration__Group_3__0__Impl : ( '=' ) ;
+    public final void rule__XVariableDeclaration__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15256:1: ( ( '=' ) )
+            // InternalCubeDSL.g:15257:1: ( '=' )
+            {
+            // InternalCubeDSL.g:15257:1: ( '=' )
+            // InternalCubeDSL.g:15258: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"
+    // InternalCubeDSL.g:15267: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 {
+            // InternalCubeDSL.g:15271:1: ( rule__XVariableDeclaration__Group_3__1__Impl )
+            // InternalCubeDSL.g:15272: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"
+    // InternalCubeDSL.g:15278: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 {
+            // InternalCubeDSL.g:15282:1: ( ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) ) )
+            // InternalCubeDSL.g:15283:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
+            {
+            // InternalCubeDSL.g:15283:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
+            // InternalCubeDSL.g:15284:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1()); 
+            }
+            // InternalCubeDSL.g:15285:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
+            // InternalCubeDSL.g:15285: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"
+    // InternalCubeDSL.g:15294: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 {
+            // InternalCubeDSL.g:15298:1: ( rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1 )
+            // InternalCubeDSL.g:15299:2: rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalCubeDSL.g:15306:1: rule__JvmFormalParameter__Group__0__Impl : ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) ;
+    public final void rule__JvmFormalParameter__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15310:1: ( ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) )
+            // InternalCubeDSL.g:15311:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
+            {
+            // InternalCubeDSL.g:15311:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
+            // InternalCubeDSL.g:15312:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0()); 
+            }
+            // InternalCubeDSL.g:15313:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
+            int alt128=2;
+            int LA128_0 = input.LA(1);
+
+            if ( (LA128_0==RULE_ID) ) {
+                int LA128_1 = input.LA(2);
+
+                if ( (LA128_1==RULE_ID||LA128_1==27||LA128_1==43||LA128_1==93) ) {
+                    alt128=1;
+                }
+            }
+            else if ( (LA128_0==31||LA128_0==88) ) {
+                alt128=1;
+            }
+            switch (alt128) {
+                case 1 :
+                    // InternalCubeDSL.g:15313: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"
+    // InternalCubeDSL.g:15321:1: rule__JvmFormalParameter__Group__1 : rule__JvmFormalParameter__Group__1__Impl ;
+    public final void rule__JvmFormalParameter__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15325:1: ( rule__JvmFormalParameter__Group__1__Impl )
+            // InternalCubeDSL.g:15326: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"
+    // InternalCubeDSL.g:15332:1: rule__JvmFormalParameter__Group__1__Impl : ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) ;
+    public final void rule__JvmFormalParameter__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15336:1: ( ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) )
+            // InternalCubeDSL.g:15337:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:15337:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
+            // InternalCubeDSL.g:15338:2: ( rule__JvmFormalParameter__NameAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1()); 
+            }
+            // InternalCubeDSL.g:15339:2: ( rule__JvmFormalParameter__NameAssignment_1 )
+            // InternalCubeDSL.g:15339: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"
+    // InternalCubeDSL.g:15348: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 {
+            // InternalCubeDSL.g:15352:1: ( rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1 )
+            // InternalCubeDSL.g:15353:2: rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1
+            {
+            pushFollow(FOLLOW_6);
+            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"
+    // InternalCubeDSL.g:15360:1: rule__FullJvmFormalParameter__Group__0__Impl : ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) ;
+    public final void rule__FullJvmFormalParameter__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15364:1: ( ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) )
+            // InternalCubeDSL.g:15365:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
+            {
+            // InternalCubeDSL.g:15365:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
+            // InternalCubeDSL.g:15366:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0()); 
+            }
+            // InternalCubeDSL.g:15367:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
+            // InternalCubeDSL.g:15367: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"
+    // InternalCubeDSL.g:15375:1: rule__FullJvmFormalParameter__Group__1 : rule__FullJvmFormalParameter__Group__1__Impl ;
+    public final void rule__FullJvmFormalParameter__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15379:1: ( rule__FullJvmFormalParameter__Group__1__Impl )
+            // InternalCubeDSL.g:15380: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"
+    // InternalCubeDSL.g:15386:1: rule__FullJvmFormalParameter__Group__1__Impl : ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) ;
+    public final void rule__FullJvmFormalParameter__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15390:1: ( ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) )
+            // InternalCubeDSL.g:15391:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:15391:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
+            // InternalCubeDSL.g:15392:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1()); 
+            }
+            // InternalCubeDSL.g:15393:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
+            // InternalCubeDSL.g:15393: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"
+    // InternalCubeDSL.g:15402: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 {
+            // InternalCubeDSL.g:15406:1: ( rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1 )
+            // InternalCubeDSL.g:15407:2: rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1
+            {
+            pushFollow(FOLLOW_83);
+            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"
+    // InternalCubeDSL.g:15414:1: rule__XFeatureCall__Group__0__Impl : ( () ) ;
+    public final void rule__XFeatureCall__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15418:1: ( ( () ) )
+            // InternalCubeDSL.g:15419:1: ( () )
+            {
+            // InternalCubeDSL.g:15419:1: ( () )
+            // InternalCubeDSL.g:15420:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0()); 
+            }
+            // InternalCubeDSL.g:15421:2: ()
+            // InternalCubeDSL.g:15421: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"
+    // InternalCubeDSL.g:15429: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 {
+            // InternalCubeDSL.g:15433:1: ( rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2 )
+            // InternalCubeDSL.g:15434:2: rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2
+            {
+            pushFollow(FOLLOW_83);
+            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"
+    // InternalCubeDSL.g:15441: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 {
+            // InternalCubeDSL.g:15445:1: ( ( ( rule__XFeatureCall__Group_1__0 )? ) )
+            // InternalCubeDSL.g:15446:1: ( ( rule__XFeatureCall__Group_1__0 )? )
+            {
+            // InternalCubeDSL.g:15446:1: ( ( rule__XFeatureCall__Group_1__0 )? )
+            // InternalCubeDSL.g:15447:2: ( rule__XFeatureCall__Group_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup_1()); 
+            }
+            // InternalCubeDSL.g:15448:2: ( rule__XFeatureCall__Group_1__0 )?
+            int alt129=2;
+            int LA129_0 = input.LA(1);
+
+            if ( (LA129_0==27) ) {
+                alt129=1;
+            }
+            switch (alt129) {
+                case 1 :
+                    // InternalCubeDSL.g:15448: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"
+    // InternalCubeDSL.g:15456: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 {
+            // InternalCubeDSL.g:15460:1: ( rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3 )
+            // InternalCubeDSL.g:15461:2: rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3
+            {
+            pushFollow(FOLLOW_84);
+            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"
+    // InternalCubeDSL.g:15468:1: rule__XFeatureCall__Group__2__Impl : ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) ;
+    public final void rule__XFeatureCall__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15472:1: ( ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) )
+            // InternalCubeDSL.g:15473:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
+            {
+            // InternalCubeDSL.g:15473:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
+            // InternalCubeDSL.g:15474:2: ( rule__XFeatureCall__FeatureAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2()); 
+            }
+            // InternalCubeDSL.g:15475:2: ( rule__XFeatureCall__FeatureAssignment_2 )
+            // InternalCubeDSL.g:15475: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"
+    // InternalCubeDSL.g:15483: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 {
+            // InternalCubeDSL.g:15487:1: ( rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4 )
+            // InternalCubeDSL.g:15488:2: rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4
+            {
+            pushFollow(FOLLOW_84);
+            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"
+    // InternalCubeDSL.g:15495: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 {
+            // InternalCubeDSL.g:15499:1: ( ( ( rule__XFeatureCall__Group_3__0 )? ) )
+            // InternalCubeDSL.g:15500:1: ( ( rule__XFeatureCall__Group_3__0 )? )
+            {
+            // InternalCubeDSL.g:15500:1: ( ( rule__XFeatureCall__Group_3__0 )? )
+            // InternalCubeDSL.g:15501:2: ( rule__XFeatureCall__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup_3()); 
+            }
+            // InternalCubeDSL.g:15502:2: ( rule__XFeatureCall__Group_3__0 )?
+            int alt130=2;
+            alt130 = dfa130.predict(input);
+            switch (alt130) {
+                case 1 :
+                    // InternalCubeDSL.g:15502: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"
+    // InternalCubeDSL.g:15510:1: rule__XFeatureCall__Group__4 : rule__XFeatureCall__Group__4__Impl ;
+    public final void rule__XFeatureCall__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15514:1: ( rule__XFeatureCall__Group__4__Impl )
+            // InternalCubeDSL.g:15515: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"
+    // InternalCubeDSL.g:15521:1: rule__XFeatureCall__Group__4__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) ;
+    public final void rule__XFeatureCall__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15525:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) )
+            // InternalCubeDSL.g:15526:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
+            {
+            // InternalCubeDSL.g:15526:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
+            // InternalCubeDSL.g:15527:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4()); 
+            }
+            // InternalCubeDSL.g:15528:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
+            int alt131=2;
+            alt131 = dfa131.predict(input);
+            switch (alt131) {
+                case 1 :
+                    // InternalCubeDSL.g:15528: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"
+    // InternalCubeDSL.g:15537: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 {
+            // InternalCubeDSL.g:15541:1: ( rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1 )
+            // InternalCubeDSL.g:15542:2: rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1
+            {
+            pushFollow(FOLLOW_85);
+            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"
+    // InternalCubeDSL.g:15549:1: rule__XFeatureCall__Group_1__0__Impl : ( '<' ) ;
+    public final void rule__XFeatureCall__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15553:1: ( ( '<' ) )
+            // InternalCubeDSL.g:15554:1: ( '<' )
+            {
+            // InternalCubeDSL.g:15554:1: ( '<' )
+            // InternalCubeDSL.g:15555:2: '<'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0()); 
+            }
+            match(input,27,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"
+    // InternalCubeDSL.g:15564: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 {
+            // InternalCubeDSL.g:15568:1: ( rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2 )
+            // InternalCubeDSL.g:15569:2: rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2
+            {
+            pushFollow(FOLLOW_86);
+            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"
+    // InternalCubeDSL.g:15576: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 {
+            // InternalCubeDSL.g:15580:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) ) )
+            // InternalCubeDSL.g:15581:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
+            {
+            // InternalCubeDSL.g:15581:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
+            // InternalCubeDSL.g:15582:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1()); 
+            }
+            // InternalCubeDSL.g:15583:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
+            // InternalCubeDSL.g:15583: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"
+    // InternalCubeDSL.g:15591: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 {
+            // InternalCubeDSL.g:15595:1: ( rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3 )
+            // InternalCubeDSL.g:15596:2: rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3
+            {
+            pushFollow(FOLLOW_86);
+            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"
+    // InternalCubeDSL.g:15603: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 {
+            // InternalCubeDSL.g:15607:1: ( ( ( rule__XFeatureCall__Group_1_2__0 )* ) )
+            // InternalCubeDSL.g:15608:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
+            {
+            // InternalCubeDSL.g:15608:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
+            // InternalCubeDSL.g:15609:2: ( rule__XFeatureCall__Group_1_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup_1_2()); 
+            }
+            // InternalCubeDSL.g:15610:2: ( rule__XFeatureCall__Group_1_2__0 )*
+            loop132:
+            do {
+                int alt132=2;
+                int LA132_0 = input.LA(1);
+
+                if ( (LA132_0==90) ) {
+                    alt132=1;
+                }
+
+
+                switch (alt132) {
+            	case 1 :
+            	    // InternalCubeDSL.g:15610:3: rule__XFeatureCall__Group_1_2__0
+            	    {
+            	    pushFollow(FOLLOW_47);
+            	    rule__XFeatureCall__Group_1_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop132;
+                }
+            } 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"
+    // InternalCubeDSL.g:15618: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 {
+            // InternalCubeDSL.g:15622:1: ( rule__XFeatureCall__Group_1__3__Impl )
+            // InternalCubeDSL.g:15623: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"
+    // InternalCubeDSL.g:15629:1: rule__XFeatureCall__Group_1__3__Impl : ( '>' ) ;
+    public final void rule__XFeatureCall__Group_1__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15633:1: ( ( '>' ) )
+            // InternalCubeDSL.g:15634:1: ( '>' )
+            {
+            // InternalCubeDSL.g:15634:1: ( '>' )
+            // InternalCubeDSL.g:15635:2: '>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3()); 
+            }
+            match(input,26,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"
+    // InternalCubeDSL.g:15645: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 {
+            // InternalCubeDSL.g:15649:1: ( rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1 )
+            // InternalCubeDSL.g:15650:2: rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1
+            {
+            pushFollow(FOLLOW_85);
+            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"
+    // InternalCubeDSL.g:15657:1: rule__XFeatureCall__Group_1_2__0__Impl : ( ',' ) ;
+    public final void rule__XFeatureCall__Group_1_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15661:1: ( ( ',' ) )
+            // InternalCubeDSL.g:15662:1: ( ',' )
+            {
+            // InternalCubeDSL.g:15662:1: ( ',' )
+            // InternalCubeDSL.g:15663:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0()); 
+            }
+            match(input,90,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"
+    // InternalCubeDSL.g:15672: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 {
+            // InternalCubeDSL.g:15676:1: ( rule__XFeatureCall__Group_1_2__1__Impl )
+            // InternalCubeDSL.g:15677: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"
+    // InternalCubeDSL.g:15683: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 {
+            // InternalCubeDSL.g:15687:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) ) )
+            // InternalCubeDSL.g:15688:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
+            {
+            // InternalCubeDSL.g:15688:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
+            // InternalCubeDSL.g:15689:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1()); 
+            }
+            // InternalCubeDSL.g:15690:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
+            // InternalCubeDSL.g:15690: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"
+    // InternalCubeDSL.g:15699: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 {
+            // InternalCubeDSL.g:15703:1: ( rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1 )
+            // InternalCubeDSL.g:15704:2: rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1
+            {
+            pushFollow(FOLLOW_87);
+            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"
+    // InternalCubeDSL.g:15711: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 {
+            // InternalCubeDSL.g:15715:1: ( ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) ) )
+            // InternalCubeDSL.g:15716:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
+            {
+            // InternalCubeDSL.g:15716:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
+            // InternalCubeDSL.g:15717:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0()); 
+            }
+            // InternalCubeDSL.g:15718:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
+            // InternalCubeDSL.g:15718: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"
+    // InternalCubeDSL.g:15726: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 {
+            // InternalCubeDSL.g:15730:1: ( rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2 )
+            // InternalCubeDSL.g:15731:2: rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2
+            {
+            pushFollow(FOLLOW_87);
+            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"
+    // InternalCubeDSL.g:15738: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 {
+            // InternalCubeDSL.g:15742:1: ( ( ( rule__XFeatureCall__Alternatives_3_1 )? ) )
+            // InternalCubeDSL.g:15743:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
+            {
+            // InternalCubeDSL.g:15743:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
+            // InternalCubeDSL.g:15744:2: ( rule__XFeatureCall__Alternatives_3_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getAlternatives_3_1()); 
+            }
+            // InternalCubeDSL.g:15745:2: ( rule__XFeatureCall__Alternatives_3_1 )?
+            int alt133=2;
+            int LA133_0 = input.LA(1);
+
+            if ( ((LA133_0>=RULE_ID && LA133_0<=RULE_DECIMAL)||LA133_0==27||LA133_0==31||(LA133_0>=34 && LA133_0<=35)||LA133_0==40||(LA133_0>=45 && LA133_0<=50)||LA133_0==74||LA133_0==88||(LA133_0>=92 && LA133_0<=93)||LA133_0==96||LA133_0==98||(LA133_0>=102 && LA133_0<=110)||LA133_0==112||LA133_0==129||LA133_0==131) ) {
+                alt133=1;
+            }
+            switch (alt133) {
+                case 1 :
+                    // InternalCubeDSL.g:15745: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"
+    // InternalCubeDSL.g:15753: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 {
+            // InternalCubeDSL.g:15757:1: ( rule__XFeatureCall__Group_3__2__Impl )
+            // InternalCubeDSL.g:15758: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"
+    // InternalCubeDSL.g:15764:1: rule__XFeatureCall__Group_3__2__Impl : ( ')' ) ;
+    public final void rule__XFeatureCall__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15768:1: ( ( ')' ) )
+            // InternalCubeDSL.g:15769:1: ( ')' )
+            {
+            // InternalCubeDSL.g:15769:1: ( ')' )
+            // InternalCubeDSL.g:15770:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2()); 
+            }
+            match(input,89,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"
+    // InternalCubeDSL.g:15780: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 {
+            // InternalCubeDSL.g:15784:1: ( rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1 )
+            // InternalCubeDSL.g:15785:2: rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1
+            {
+            pushFollow(FOLLOW_46);
+            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"
+    // InternalCubeDSL.g:15792: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 {
+            // InternalCubeDSL.g:15796:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) ) )
+            // InternalCubeDSL.g:15797:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
+            {
+            // InternalCubeDSL.g:15797:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
+            // InternalCubeDSL.g:15798:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0()); 
+            }
+            // InternalCubeDSL.g:15799:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
+            // InternalCubeDSL.g:15799: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"
+    // InternalCubeDSL.g:15807: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 {
+            // InternalCubeDSL.g:15811:1: ( rule__XFeatureCall__Group_3_1_1__1__Impl )
+            // InternalCubeDSL.g:15812: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"
+    // InternalCubeDSL.g:15818: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 {
+            // InternalCubeDSL.g:15822:1: ( ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* ) )
+            // InternalCubeDSL.g:15823:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
+            {
+            // InternalCubeDSL.g:15823:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
+            // InternalCubeDSL.g:15824:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1()); 
+            }
+            // InternalCubeDSL.g:15825:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
+            loop134:
+            do {
+                int alt134=2;
+                int LA134_0 = input.LA(1);
+
+                if ( (LA134_0==90) ) {
+                    alt134=1;
+                }
+
+
+                switch (alt134) {
+            	case 1 :
+            	    // InternalCubeDSL.g:15825:3: rule__XFeatureCall__Group_3_1_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_47);
+            	    rule__XFeatureCall__Group_3_1_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop134;
+                }
+            } 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"
+    // InternalCubeDSL.g:15834: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 {
+            // InternalCubeDSL.g:15838:1: ( rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1 )
+            // InternalCubeDSL.g:15839:2: rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:15846: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 {
+            // InternalCubeDSL.g:15850:1: ( ( ',' ) )
+            // InternalCubeDSL.g:15851:1: ( ',' )
+            {
+            // InternalCubeDSL.g:15851:1: ( ',' )
+            // InternalCubeDSL.g:15852:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0()); 
+            }
+            match(input,90,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"
+    // InternalCubeDSL.g:15861: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 {
+            // InternalCubeDSL.g:15865:1: ( rule__XFeatureCall__Group_3_1_1_1__1__Impl )
+            // InternalCubeDSL.g:15866: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"
+    // InternalCubeDSL.g:15872: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 {
+            // InternalCubeDSL.g:15876:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) ) )
+            // InternalCubeDSL.g:15877:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
+            {
+            // InternalCubeDSL.g:15877:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
+            // InternalCubeDSL.g:15878:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1()); 
+            }
+            // InternalCubeDSL.g:15879:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
+            // InternalCubeDSL.g:15879: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"
+    // InternalCubeDSL.g:15888: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 {
+            // InternalCubeDSL.g:15892:1: ( rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1 )
+            // InternalCubeDSL.g:15893:2: rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1
+            {
+            pushFollow(FOLLOW_110);
+            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"
+    // InternalCubeDSL.g:15900:1: rule__XConstructorCall__Group__0__Impl : ( () ) ;
+    public final void rule__XConstructorCall__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15904:1: ( ( () ) )
+            // InternalCubeDSL.g:15905:1: ( () )
+            {
+            // InternalCubeDSL.g:15905:1: ( () )
+            // InternalCubeDSL.g:15906:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0()); 
+            }
+            // InternalCubeDSL.g:15907:2: ()
+            // InternalCubeDSL.g:15907: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"
+    // InternalCubeDSL.g:15915: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 {
+            // InternalCubeDSL.g:15919:1: ( rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2 )
+            // InternalCubeDSL.g:15920:2: rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2
+            {
+            pushFollow(FOLLOW_6);
+            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"
+    // InternalCubeDSL.g:15927:1: rule__XConstructorCall__Group__1__Impl : ( 'new' ) ;
+    public final void rule__XConstructorCall__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15931:1: ( ( 'new' ) )
+            // InternalCubeDSL.g:15932:1: ( 'new' )
+            {
+            // InternalCubeDSL.g:15932:1: ( 'new' )
+            // InternalCubeDSL.g:15933:2: 'new'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getNewKeyword_1()); 
+            }
+            match(input,105,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"
+    // InternalCubeDSL.g:15942: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 {
+            // InternalCubeDSL.g:15946:1: ( rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3 )
+            // InternalCubeDSL.g:15947:2: rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3
+            {
+            pushFollow(FOLLOW_111);
+            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"
+    // InternalCubeDSL.g:15954:1: rule__XConstructorCall__Group__2__Impl : ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) ;
+    public final void rule__XConstructorCall__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:15958:1: ( ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) )
+            // InternalCubeDSL.g:15959:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
+            {
+            // InternalCubeDSL.g:15959:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
+            // InternalCubeDSL.g:15960:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2()); 
+            }
+            // InternalCubeDSL.g:15961:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
+            // InternalCubeDSL.g:15961: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"
+    // InternalCubeDSL.g:15969: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 {
+            // InternalCubeDSL.g:15973:1: ( rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4 )
+            // InternalCubeDSL.g:15974:2: rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4
+            {
+            pushFollow(FOLLOW_111);
+            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"
+    // InternalCubeDSL.g:15981: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 {
+            // InternalCubeDSL.g:15985:1: ( ( ( rule__XConstructorCall__Group_3__0 )? ) )
+            // InternalCubeDSL.g:15986:1: ( ( rule__XConstructorCall__Group_3__0 )? )
+            {
+            // InternalCubeDSL.g:15986:1: ( ( rule__XConstructorCall__Group_3__0 )? )
+            // InternalCubeDSL.g:15987:2: ( rule__XConstructorCall__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup_3()); 
+            }
+            // InternalCubeDSL.g:15988:2: ( rule__XConstructorCall__Group_3__0 )?
+            int alt135=2;
+            alt135 = dfa135.predict(input);
+            switch (alt135) {
+                case 1 :
+                    // InternalCubeDSL.g:15988: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"
+    // InternalCubeDSL.g:15996: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 {
+            // InternalCubeDSL.g:16000:1: ( rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5 )
+            // InternalCubeDSL.g:16001:2: rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5
+            {
+            pushFollow(FOLLOW_111);
+            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"
+    // InternalCubeDSL.g:16008: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 {
+            // InternalCubeDSL.g:16012:1: ( ( ( rule__XConstructorCall__Group_4__0 )? ) )
+            // InternalCubeDSL.g:16013:1: ( ( rule__XConstructorCall__Group_4__0 )? )
+            {
+            // InternalCubeDSL.g:16013:1: ( ( rule__XConstructorCall__Group_4__0 )? )
+            // InternalCubeDSL.g:16014:2: ( rule__XConstructorCall__Group_4__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup_4()); 
+            }
+            // InternalCubeDSL.g:16015:2: ( rule__XConstructorCall__Group_4__0 )?
+            int alt136=2;
+            alt136 = dfa136.predict(input);
+            switch (alt136) {
+                case 1 :
+                    // InternalCubeDSL.g:16015: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"
+    // InternalCubeDSL.g:16023:1: rule__XConstructorCall__Group__5 : rule__XConstructorCall__Group__5__Impl ;
+    public final void rule__XConstructorCall__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16027:1: ( rule__XConstructorCall__Group__5__Impl )
+            // InternalCubeDSL.g:16028: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"
+    // InternalCubeDSL.g:16034:1: rule__XConstructorCall__Group__5__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) ;
+    public final void rule__XConstructorCall__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16038:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) )
+            // InternalCubeDSL.g:16039:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
+            {
+            // InternalCubeDSL.g:16039:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
+            // InternalCubeDSL.g:16040:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5()); 
+            }
+            // InternalCubeDSL.g:16041:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
+            int alt137=2;
+            alt137 = dfa137.predict(input);
+            switch (alt137) {
+                case 1 :
+                    // InternalCubeDSL.g:16041: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"
+    // InternalCubeDSL.g:16050: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 {
+            // InternalCubeDSL.g:16054:1: ( rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1 )
+            // InternalCubeDSL.g:16055:2: rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1
+            {
+            pushFollow(FOLLOW_85);
+            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"
+    // InternalCubeDSL.g:16062:1: rule__XConstructorCall__Group_3__0__Impl : ( ( '<' ) ) ;
+    public final void rule__XConstructorCall__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16066:1: ( ( ( '<' ) ) )
+            // InternalCubeDSL.g:16067:1: ( ( '<' ) )
+            {
+            // InternalCubeDSL.g:16067:1: ( ( '<' ) )
+            // InternalCubeDSL.g:16068:2: ( '<' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0()); 
+            }
+            // InternalCubeDSL.g:16069:2: ( '<' )
+            // InternalCubeDSL.g:16069:3: '<'
+            {
+            match(input,27,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"
+    // InternalCubeDSL.g:16077: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 {
+            // InternalCubeDSL.g:16081:1: ( rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2 )
+            // InternalCubeDSL.g:16082:2: rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2
+            {
+            pushFollow(FOLLOW_86);
+            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"
+    // InternalCubeDSL.g:16089: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 {
+            // InternalCubeDSL.g:16093:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) ) )
+            // InternalCubeDSL.g:16094:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
+            {
+            // InternalCubeDSL.g:16094:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
+            // InternalCubeDSL.g:16095:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1()); 
+            }
+            // InternalCubeDSL.g:16096:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
+            // InternalCubeDSL.g:16096: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"
+    // InternalCubeDSL.g:16104: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 {
+            // InternalCubeDSL.g:16108:1: ( rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3 )
+            // InternalCubeDSL.g:16109:2: rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3
+            {
+            pushFollow(FOLLOW_86);
+            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"
+    // InternalCubeDSL.g:16116: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 {
+            // InternalCubeDSL.g:16120:1: ( ( ( rule__XConstructorCall__Group_3_2__0 )* ) )
+            // InternalCubeDSL.g:16121:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
+            {
+            // InternalCubeDSL.g:16121:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
+            // InternalCubeDSL.g:16122:2: ( rule__XConstructorCall__Group_3_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup_3_2()); 
+            }
+            // InternalCubeDSL.g:16123:2: ( rule__XConstructorCall__Group_3_2__0 )*
+            loop138:
+            do {
+                int alt138=2;
+                int LA138_0 = input.LA(1);
+
+                if ( (LA138_0==90) ) {
+                    alt138=1;
+                }
+
+
+                switch (alt138) {
+            	case 1 :
+            	    // InternalCubeDSL.g:16123:3: rule__XConstructorCall__Group_3_2__0
+            	    {
+            	    pushFollow(FOLLOW_47);
+            	    rule__XConstructorCall__Group_3_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop138;
+                }
+            } 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"
+    // InternalCubeDSL.g:16131: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 {
+            // InternalCubeDSL.g:16135:1: ( rule__XConstructorCall__Group_3__3__Impl )
+            // InternalCubeDSL.g:16136: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"
+    // InternalCubeDSL.g:16142:1: rule__XConstructorCall__Group_3__3__Impl : ( '>' ) ;
+    public final void rule__XConstructorCall__Group_3__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16146:1: ( ( '>' ) )
+            // InternalCubeDSL.g:16147:1: ( '>' )
+            {
+            // InternalCubeDSL.g:16147:1: ( '>' )
+            // InternalCubeDSL.g:16148:2: '>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3()); 
+            }
+            match(input,26,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"
+    // InternalCubeDSL.g:16158: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 {
+            // InternalCubeDSL.g:16162:1: ( rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1 )
+            // InternalCubeDSL.g:16163:2: rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1
+            {
+            pushFollow(FOLLOW_85);
+            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"
+    // InternalCubeDSL.g:16170:1: rule__XConstructorCall__Group_3_2__0__Impl : ( ',' ) ;
+    public final void rule__XConstructorCall__Group_3_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16174:1: ( ( ',' ) )
+            // InternalCubeDSL.g:16175:1: ( ',' )
+            {
+            // InternalCubeDSL.g:16175:1: ( ',' )
+            // InternalCubeDSL.g:16176:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0()); 
+            }
+            match(input,90,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"
+    // InternalCubeDSL.g:16185: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 {
+            // InternalCubeDSL.g:16189:1: ( rule__XConstructorCall__Group_3_2__1__Impl )
+            // InternalCubeDSL.g:16190: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"
+    // InternalCubeDSL.g:16196: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 {
+            // InternalCubeDSL.g:16200:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) ) )
+            // InternalCubeDSL.g:16201:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
+            {
+            // InternalCubeDSL.g:16201:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
+            // InternalCubeDSL.g:16202:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1()); 
+            }
+            // InternalCubeDSL.g:16203:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
+            // InternalCubeDSL.g:16203: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"
+    // InternalCubeDSL.g:16212: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 {
+            // InternalCubeDSL.g:16216:1: ( rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1 )
+            // InternalCubeDSL.g:16217:2: rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1
+            {
+            pushFollow(FOLLOW_87);
+            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"
+    // InternalCubeDSL.g:16224: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 {
+            // InternalCubeDSL.g:16228:1: ( ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) ) )
+            // InternalCubeDSL.g:16229:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
+            {
+            // InternalCubeDSL.g:16229:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
+            // InternalCubeDSL.g:16230:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0()); 
+            }
+            // InternalCubeDSL.g:16231:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
+            // InternalCubeDSL.g:16231: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"
+    // InternalCubeDSL.g:16239: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 {
+            // InternalCubeDSL.g:16243:1: ( rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2 )
+            // InternalCubeDSL.g:16244:2: rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2
+            {
+            pushFollow(FOLLOW_87);
+            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"
+    // InternalCubeDSL.g:16251: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 {
+            // InternalCubeDSL.g:16255:1: ( ( ( rule__XConstructorCall__Alternatives_4_1 )? ) )
+            // InternalCubeDSL.g:16256:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
+            {
+            // InternalCubeDSL.g:16256:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
+            // InternalCubeDSL.g:16257:2: ( rule__XConstructorCall__Alternatives_4_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getAlternatives_4_1()); 
+            }
+            // InternalCubeDSL.g:16258:2: ( rule__XConstructorCall__Alternatives_4_1 )?
+            int alt139=2;
+            int LA139_0 = input.LA(1);
+
+            if ( ((LA139_0>=RULE_ID && LA139_0<=RULE_DECIMAL)||LA139_0==27||LA139_0==31||(LA139_0>=34 && LA139_0<=35)||LA139_0==40||(LA139_0>=45 && LA139_0<=50)||LA139_0==74||LA139_0==88||(LA139_0>=92 && LA139_0<=93)||LA139_0==96||LA139_0==98||(LA139_0>=102 && LA139_0<=110)||LA139_0==112||LA139_0==129||LA139_0==131) ) {
+                alt139=1;
+            }
+            switch (alt139) {
+                case 1 :
+                    // InternalCubeDSL.g:16258: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"
+    // InternalCubeDSL.g:16266: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 {
+            // InternalCubeDSL.g:16270:1: ( rule__XConstructorCall__Group_4__2__Impl )
+            // InternalCubeDSL.g:16271: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"
+    // InternalCubeDSL.g:16277:1: rule__XConstructorCall__Group_4__2__Impl : ( ')' ) ;
+    public final void rule__XConstructorCall__Group_4__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16281:1: ( ( ')' ) )
+            // InternalCubeDSL.g:16282:1: ( ')' )
+            {
+            // InternalCubeDSL.g:16282:1: ( ')' )
+            // InternalCubeDSL.g:16283:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2()); 
+            }
+            match(input,89,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"
+    // InternalCubeDSL.g:16293: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 {
+            // InternalCubeDSL.g:16297:1: ( rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1 )
+            // InternalCubeDSL.g:16298:2: rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1
+            {
+            pushFollow(FOLLOW_46);
+            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"
+    // InternalCubeDSL.g:16305: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 {
+            // InternalCubeDSL.g:16309:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) ) )
+            // InternalCubeDSL.g:16310:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
+            {
+            // InternalCubeDSL.g:16310:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
+            // InternalCubeDSL.g:16311:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0()); 
+            }
+            // InternalCubeDSL.g:16312:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
+            // InternalCubeDSL.g:16312: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"
+    // InternalCubeDSL.g:16320: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 {
+            // InternalCubeDSL.g:16324:1: ( rule__XConstructorCall__Group_4_1_1__1__Impl )
+            // InternalCubeDSL.g:16325: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"
+    // InternalCubeDSL.g:16331: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 {
+            // InternalCubeDSL.g:16335:1: ( ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* ) )
+            // InternalCubeDSL.g:16336:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
+            {
+            // InternalCubeDSL.g:16336:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
+            // InternalCubeDSL.g:16337:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1()); 
+            }
+            // InternalCubeDSL.g:16338:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
+            loop140:
+            do {
+                int alt140=2;
+                int LA140_0 = input.LA(1);
+
+                if ( (LA140_0==90) ) {
+                    alt140=1;
+                }
+
+
+                switch (alt140) {
+            	case 1 :
+            	    // InternalCubeDSL.g:16338:3: rule__XConstructorCall__Group_4_1_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_47);
+            	    rule__XConstructorCall__Group_4_1_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop140;
+                }
+            } 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"
+    // InternalCubeDSL.g:16347: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 {
+            // InternalCubeDSL.g:16351:1: ( rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1 )
+            // InternalCubeDSL.g:16352:2: rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:16359: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 {
+            // InternalCubeDSL.g:16363:1: ( ( ',' ) )
+            // InternalCubeDSL.g:16364:1: ( ',' )
+            {
+            // InternalCubeDSL.g:16364:1: ( ',' )
+            // InternalCubeDSL.g:16365:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0()); 
+            }
+            match(input,90,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"
+    // InternalCubeDSL.g:16374: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 {
+            // InternalCubeDSL.g:16378:1: ( rule__XConstructorCall__Group_4_1_1_1__1__Impl )
+            // InternalCubeDSL.g:16379: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"
+    // InternalCubeDSL.g:16385: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 {
+            // InternalCubeDSL.g:16389:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) ) )
+            // InternalCubeDSL.g:16390:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
+            {
+            // InternalCubeDSL.g:16390:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
+            // InternalCubeDSL.g:16391:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1()); 
+            }
+            // InternalCubeDSL.g:16392:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
+            // InternalCubeDSL.g:16392: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"
+    // InternalCubeDSL.g:16401: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 {
+            // InternalCubeDSL.g:16405:1: ( rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1 )
+            // InternalCubeDSL.g:16406:2: rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1
+            {
+            pushFollow(FOLLOW_112);
+            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"
+    // InternalCubeDSL.g:16413:1: rule__XBooleanLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XBooleanLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16417:1: ( ( () ) )
+            // InternalCubeDSL.g:16418:1: ( () )
+            {
+            // InternalCubeDSL.g:16418:1: ( () )
+            // InternalCubeDSL.g:16419:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0()); 
+            }
+            // InternalCubeDSL.g:16420:2: ()
+            // InternalCubeDSL.g:16420: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"
+    // InternalCubeDSL.g:16428:1: rule__XBooleanLiteral__Group__1 : rule__XBooleanLiteral__Group__1__Impl ;
+    public final void rule__XBooleanLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16432:1: ( rule__XBooleanLiteral__Group__1__Impl )
+            // InternalCubeDSL.g:16433: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"
+    // InternalCubeDSL.g:16439:1: rule__XBooleanLiteral__Group__1__Impl : ( ( rule__XBooleanLiteral__Alternatives_1 ) ) ;
+    public final void rule__XBooleanLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16443:1: ( ( ( rule__XBooleanLiteral__Alternatives_1 ) ) )
+            // InternalCubeDSL.g:16444:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
+            {
+            // InternalCubeDSL.g:16444:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
+            // InternalCubeDSL.g:16445:2: ( rule__XBooleanLiteral__Alternatives_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getAlternatives_1()); 
+            }
+            // InternalCubeDSL.g:16446:2: ( rule__XBooleanLiteral__Alternatives_1 )
+            // InternalCubeDSL.g:16446: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"
+    // InternalCubeDSL.g:16455: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 {
+            // InternalCubeDSL.g:16459:1: ( rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1 )
+            // InternalCubeDSL.g:16460:2: rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1
+            {
+            pushFollow(FOLLOW_113);
+            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"
+    // InternalCubeDSL.g:16467:1: rule__XNullLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XNullLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16471:1: ( ( () ) )
+            // InternalCubeDSL.g:16472:1: ( () )
+            {
+            // InternalCubeDSL.g:16472:1: ( () )
+            // InternalCubeDSL.g:16473:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0()); 
+            }
+            // InternalCubeDSL.g:16474:2: ()
+            // InternalCubeDSL.g:16474: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"
+    // InternalCubeDSL.g:16482:1: rule__XNullLiteral__Group__1 : rule__XNullLiteral__Group__1__Impl ;
+    public final void rule__XNullLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16486:1: ( rule__XNullLiteral__Group__1__Impl )
+            // InternalCubeDSL.g:16487: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"
+    // InternalCubeDSL.g:16493:1: rule__XNullLiteral__Group__1__Impl : ( 'null' ) ;
+    public final void rule__XNullLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16497:1: ( ( 'null' ) )
+            // InternalCubeDSL.g:16498:1: ( 'null' )
+            {
+            // InternalCubeDSL.g:16498:1: ( 'null' )
+            // InternalCubeDSL.g:16499:2: 'null'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNullLiteralAccess().getNullKeyword_1()); 
+            }
+            match(input,106,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"
+    // InternalCubeDSL.g:16509: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 {
+            // InternalCubeDSL.g:16513:1: ( rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1 )
+            // InternalCubeDSL.g:16514:2: rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1
+            {
+            pushFollow(FOLLOW_114);
+            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"
+    // InternalCubeDSL.g:16521:1: rule__XNumberLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XNumberLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16525:1: ( ( () ) )
+            // InternalCubeDSL.g:16526:1: ( () )
+            {
+            // InternalCubeDSL.g:16526:1: ( () )
+            // InternalCubeDSL.g:16527:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0()); 
+            }
+            // InternalCubeDSL.g:16528:2: ()
+            // InternalCubeDSL.g:16528: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"
+    // InternalCubeDSL.g:16536:1: rule__XNumberLiteral__Group__1 : rule__XNumberLiteral__Group__1__Impl ;
+    public final void rule__XNumberLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16540:1: ( rule__XNumberLiteral__Group__1__Impl )
+            // InternalCubeDSL.g:16541: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"
+    // InternalCubeDSL.g:16547:1: rule__XNumberLiteral__Group__1__Impl : ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) ;
+    public final void rule__XNumberLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16551:1: ( ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) )
+            // InternalCubeDSL.g:16552:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:16552:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
+            // InternalCubeDSL.g:16553:2: ( rule__XNumberLiteral__ValueAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1()); 
+            }
+            // InternalCubeDSL.g:16554:2: ( rule__XNumberLiteral__ValueAssignment_1 )
+            // InternalCubeDSL.g:16554: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"
+    // InternalCubeDSL.g:16563: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 {
+            // InternalCubeDSL.g:16567:1: ( rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1 )
+            // InternalCubeDSL.g:16568: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"
+    // InternalCubeDSL.g:16575:1: rule__XStringLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XStringLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16579:1: ( ( () ) )
+            // InternalCubeDSL.g:16580:1: ( () )
+            {
+            // InternalCubeDSL.g:16580:1: ( () )
+            // InternalCubeDSL.g:16581:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0()); 
+            }
+            // InternalCubeDSL.g:16582:2: ()
+            // InternalCubeDSL.g:16582: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"
+    // InternalCubeDSL.g:16590:1: rule__XStringLiteral__Group__1 : rule__XStringLiteral__Group__1__Impl ;
+    public final void rule__XStringLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16594:1: ( rule__XStringLiteral__Group__1__Impl )
+            // InternalCubeDSL.g:16595: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"
+    // InternalCubeDSL.g:16601:1: rule__XStringLiteral__Group__1__Impl : ( ( rule__XStringLiteral__ValueAssignment_1 ) ) ;
+    public final void rule__XStringLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16605:1: ( ( ( rule__XStringLiteral__ValueAssignment_1 ) ) )
+            // InternalCubeDSL.g:16606:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:16606:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
+            // InternalCubeDSL.g:16607:2: ( rule__XStringLiteral__ValueAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXStringLiteralAccess().getValueAssignment_1()); 
+            }
+            // InternalCubeDSL.g:16608:2: ( rule__XStringLiteral__ValueAssignment_1 )
+            // InternalCubeDSL.g:16608: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"
+    // InternalCubeDSL.g:16617: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 {
+            // InternalCubeDSL.g:16621:1: ( rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1 )
+            // InternalCubeDSL.g:16622:2: rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1
+            {
+            pushFollow(FOLLOW_115);
+            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"
+    // InternalCubeDSL.g:16629:1: rule__XTypeLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XTypeLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16633:1: ( ( () ) )
+            // InternalCubeDSL.g:16634:1: ( () )
+            {
+            // InternalCubeDSL.g:16634:1: ( () )
+            // InternalCubeDSL.g:16635:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0()); 
+            }
+            // InternalCubeDSL.g:16636:2: ()
+            // InternalCubeDSL.g:16636: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"
+    // InternalCubeDSL.g:16644: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 {
+            // InternalCubeDSL.g:16648:1: ( rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2 )
+            // InternalCubeDSL.g:16649:2: rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2
+            {
+            pushFollow(FOLLOW_44);
+            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"
+    // InternalCubeDSL.g:16656:1: rule__XTypeLiteral__Group__1__Impl : ( 'typeof' ) ;
+    public final void rule__XTypeLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16660:1: ( ( 'typeof' ) )
+            // InternalCubeDSL.g:16661:1: ( 'typeof' )
+            {
+            // InternalCubeDSL.g:16661:1: ( 'typeof' )
+            // InternalCubeDSL.g:16662:2: 'typeof'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1()); 
+            }
+            match(input,107,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"
+    // InternalCubeDSL.g:16671: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 {
+            // InternalCubeDSL.g:16675:1: ( rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3 )
+            // InternalCubeDSL.g:16676:2: rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3
+            {
+            pushFollow(FOLLOW_6);
+            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"
+    // InternalCubeDSL.g:16683:1: rule__XTypeLiteral__Group__2__Impl : ( '(' ) ;
+    public final void rule__XTypeLiteral__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16687:1: ( ( '(' ) )
+            // InternalCubeDSL.g:16688:1: ( '(' )
+            {
+            // InternalCubeDSL.g:16688:1: ( '(' )
+            // InternalCubeDSL.g:16689:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2()); 
+            }
+            match(input,88,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"
+    // InternalCubeDSL.g:16698: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 {
+            // InternalCubeDSL.g:16702:1: ( rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4 )
+            // InternalCubeDSL.g:16703:2: rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4
+            {
+            pushFollow(FOLLOW_116);
+            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"
+    // InternalCubeDSL.g:16710:1: rule__XTypeLiteral__Group__3__Impl : ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) ;
+    public final void rule__XTypeLiteral__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16714:1: ( ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) )
+            // InternalCubeDSL.g:16715:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
+            {
+            // InternalCubeDSL.g:16715:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
+            // InternalCubeDSL.g:16716:2: ( rule__XTypeLiteral__TypeAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3()); 
+            }
+            // InternalCubeDSL.g:16717:2: ( rule__XTypeLiteral__TypeAssignment_3 )
+            // InternalCubeDSL.g:16717: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"
+    // InternalCubeDSL.g:16725: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 {
+            // InternalCubeDSL.g:16729:1: ( rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5 )
+            // InternalCubeDSL.g:16730:2: rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5
+            {
+            pushFollow(FOLLOW_116);
+            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"
+    // InternalCubeDSL.g:16737:1: rule__XTypeLiteral__Group__4__Impl : ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) ;
+    public final void rule__XTypeLiteral__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16741:1: ( ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) )
+            // InternalCubeDSL.g:16742:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
+            {
+            // InternalCubeDSL.g:16742:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
+            // InternalCubeDSL.g:16743:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4()); 
+            }
+            // InternalCubeDSL.g:16744:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
+            loop141:
+            do {
+                int alt141=2;
+                int LA141_0 = input.LA(1);
+
+                if ( (LA141_0==93) ) {
+                    alt141=1;
+                }
+
+
+                switch (alt141) {
+            	case 1 :
+            	    // InternalCubeDSL.g:16744:3: rule__XTypeLiteral__ArrayDimensionsAssignment_4
+            	    {
+            	    pushFollow(FOLLOW_117);
+            	    rule__XTypeLiteral__ArrayDimensionsAssignment_4();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop141;
+                }
+            } 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"
+    // InternalCubeDSL.g:16752:1: rule__XTypeLiteral__Group__5 : rule__XTypeLiteral__Group__5__Impl ;
+    public final void rule__XTypeLiteral__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16756:1: ( rule__XTypeLiteral__Group__5__Impl )
+            // InternalCubeDSL.g:16757: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"
+    // InternalCubeDSL.g:16763:1: rule__XTypeLiteral__Group__5__Impl : ( ')' ) ;
+    public final void rule__XTypeLiteral__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16767:1: ( ( ')' ) )
+            // InternalCubeDSL.g:16768:1: ( ')' )
+            {
+            // InternalCubeDSL.g:16768:1: ( ')' )
+            // InternalCubeDSL.g:16769:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5()); 
+            }
+            match(input,89,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"
+    // InternalCubeDSL.g:16779: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 {
+            // InternalCubeDSL.g:16783:1: ( rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1 )
+            // InternalCubeDSL.g:16784:2: rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1
+            {
+            pushFollow(FOLLOW_118);
+            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"
+    // InternalCubeDSL.g:16791:1: rule__XThrowExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XThrowExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16795:1: ( ( () ) )
+            // InternalCubeDSL.g:16796:1: ( () )
+            {
+            // InternalCubeDSL.g:16796:1: ( () )
+            // InternalCubeDSL.g:16797:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0()); 
+            }
+            // InternalCubeDSL.g:16798:2: ()
+            // InternalCubeDSL.g:16798: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"
+    // InternalCubeDSL.g:16806: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 {
+            // InternalCubeDSL.g:16810:1: ( rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2 )
+            // InternalCubeDSL.g:16811:2: rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:16818:1: rule__XThrowExpression__Group__1__Impl : ( 'throw' ) ;
+    public final void rule__XThrowExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16822:1: ( ( 'throw' ) )
+            // InternalCubeDSL.g:16823:1: ( 'throw' )
+            {
+            // InternalCubeDSL.g:16823:1: ( 'throw' )
+            // InternalCubeDSL.g:16824:2: 'throw'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1()); 
+            }
+            match(input,108,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"
+    // InternalCubeDSL.g:16833:1: rule__XThrowExpression__Group__2 : rule__XThrowExpression__Group__2__Impl ;
+    public final void rule__XThrowExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16837:1: ( rule__XThrowExpression__Group__2__Impl )
+            // InternalCubeDSL.g:16838: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"
+    // InternalCubeDSL.g:16844:1: rule__XThrowExpression__Group__2__Impl : ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) ;
+    public final void rule__XThrowExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16848:1: ( ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) )
+            // InternalCubeDSL.g:16849:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
+            {
+            // InternalCubeDSL.g:16849:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
+            // InternalCubeDSL.g:16850:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2()); 
+            }
+            // InternalCubeDSL.g:16851:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
+            // InternalCubeDSL.g:16851: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"
+    // InternalCubeDSL.g:16860: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 {
+            // InternalCubeDSL.g:16864:1: ( rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1 )
+            // InternalCubeDSL.g:16865:2: rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1
+            {
+            pushFollow(FOLLOW_119);
+            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"
+    // InternalCubeDSL.g:16872:1: rule__XReturnExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XReturnExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16876:1: ( ( () ) )
+            // InternalCubeDSL.g:16877:1: ( () )
+            {
+            // InternalCubeDSL.g:16877:1: ( () )
+            // InternalCubeDSL.g:16878:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0()); 
+            }
+            // InternalCubeDSL.g:16879:2: ()
+            // InternalCubeDSL.g:16879: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"
+    // InternalCubeDSL.g:16887: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 {
+            // InternalCubeDSL.g:16891:1: ( rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2 )
+            // InternalCubeDSL.g:16892:2: rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:16899:1: rule__XReturnExpression__Group__1__Impl : ( 'return' ) ;
+    public final void rule__XReturnExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16903:1: ( ( 'return' ) )
+            // InternalCubeDSL.g:16904:1: ( 'return' )
+            {
+            // InternalCubeDSL.g:16904:1: ( 'return' )
+            // InternalCubeDSL.g:16905:2: 'return'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1()); 
+            }
+            match(input,109,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"
+    // InternalCubeDSL.g:16914:1: rule__XReturnExpression__Group__2 : rule__XReturnExpression__Group__2__Impl ;
+    public final void rule__XReturnExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16918:1: ( rule__XReturnExpression__Group__2__Impl )
+            // InternalCubeDSL.g:16919: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"
+    // InternalCubeDSL.g:16925:1: rule__XReturnExpression__Group__2__Impl : ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) ;
+    public final void rule__XReturnExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16929:1: ( ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) )
+            // InternalCubeDSL.g:16930:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
+            {
+            // InternalCubeDSL.g:16930:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
+            // InternalCubeDSL.g:16931:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2()); 
+            }
+            // InternalCubeDSL.g:16932:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
+            int alt142=2;
+            alt142 = dfa142.predict(input);
+            switch (alt142) {
+                case 1 :
+                    // InternalCubeDSL.g:16932: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"
+    // InternalCubeDSL.g:16941: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 {
+            // InternalCubeDSL.g:16945:1: ( rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1 )
+            // InternalCubeDSL.g:16946:2: rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1
+            {
+            pushFollow(FOLLOW_120);
+            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"
+    // InternalCubeDSL.g:16953:1: rule__XTryCatchFinallyExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XTryCatchFinallyExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16957:1: ( ( () ) )
+            // InternalCubeDSL.g:16958:1: ( () )
+            {
+            // InternalCubeDSL.g:16958:1: ( () )
+            // InternalCubeDSL.g:16959:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0()); 
+            }
+            // InternalCubeDSL.g:16960:2: ()
+            // InternalCubeDSL.g:16960: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"
+    // InternalCubeDSL.g:16968: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 {
+            // InternalCubeDSL.g:16972:1: ( rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2 )
+            // InternalCubeDSL.g:16973:2: rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:16980:1: rule__XTryCatchFinallyExpression__Group__1__Impl : ( 'try' ) ;
+    public final void rule__XTryCatchFinallyExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:16984:1: ( ( 'try' ) )
+            // InternalCubeDSL.g:16985:1: ( 'try' )
+            {
+            // InternalCubeDSL.g:16985:1: ( 'try' )
+            // InternalCubeDSL.g:16986:2: 'try'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1()); 
+            }
+            match(input,110,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"
+    // InternalCubeDSL.g:16995: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 {
+            // InternalCubeDSL.g:16999:1: ( rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3 )
+            // InternalCubeDSL.g:17000:2: rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3
+            {
+            pushFollow(FOLLOW_121);
+            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"
+    // InternalCubeDSL.g:17007:1: rule__XTryCatchFinallyExpression__Group__2__Impl : ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) ;
+    public final void rule__XTryCatchFinallyExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17011:1: ( ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) )
+            // InternalCubeDSL.g:17012:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
+            {
+            // InternalCubeDSL.g:17012:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
+            // InternalCubeDSL.g:17013:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2()); 
+            }
+            // InternalCubeDSL.g:17014:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
+            // InternalCubeDSL.g:17014: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"
+    // InternalCubeDSL.g:17022:1: rule__XTryCatchFinallyExpression__Group__3 : rule__XTryCatchFinallyExpression__Group__3__Impl ;
+    public final void rule__XTryCatchFinallyExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17026:1: ( rule__XTryCatchFinallyExpression__Group__3__Impl )
+            // InternalCubeDSL.g:17027: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"
+    // InternalCubeDSL.g:17033:1: rule__XTryCatchFinallyExpression__Group__3__Impl : ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) ;
+    public final void rule__XTryCatchFinallyExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17037:1: ( ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) )
+            // InternalCubeDSL.g:17038:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
+            {
+            // InternalCubeDSL.g:17038:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
+            // InternalCubeDSL.g:17039:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getAlternatives_3()); 
+            }
+            // InternalCubeDSL.g:17040:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
+            // InternalCubeDSL.g:17040: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"
+    // InternalCubeDSL.g:17049: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 {
+            // InternalCubeDSL.g:17053:1: ( rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1 )
+            // InternalCubeDSL.g:17054:2: rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1
+            {
+            pushFollow(FOLLOW_122);
+            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"
+    // InternalCubeDSL.g:17061: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 {
+            // InternalCubeDSL.g:17065:1: ( ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) ) )
+            // InternalCubeDSL.g:17066:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
+            {
+            // InternalCubeDSL.g:17066:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
+            // InternalCubeDSL.g:17067:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
+            {
+            // InternalCubeDSL.g:17067:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) )
+            // InternalCubeDSL.g:17068:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
+            }
+            // InternalCubeDSL.g:17069:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+            // InternalCubeDSL.g:17069:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+            {
+            pushFollow(FOLLOW_123);
+            rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
+            }
+
+            }
+
+            // InternalCubeDSL.g:17072:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
+            // InternalCubeDSL.g:17073:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
+            }
+            // InternalCubeDSL.g:17074:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
+            loop143:
+            do {
+                int alt143=2;
+                int LA143_0 = input.LA(1);
+
+                if ( (LA143_0==113) ) {
+                    int LA143_2 = input.LA(2);
+
+                    if ( (synpred204_InternalCubeDSL()) ) {
+                        alt143=1;
+                    }
+
+
+                }
+
+
+                switch (alt143) {
+            	case 1 :
+            	    // InternalCubeDSL.g:17074:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+            	    {
+            	    pushFollow(FOLLOW_123);
+            	    rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop143;
+                }
+            } 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"
+    // InternalCubeDSL.g:17083: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 {
+            // InternalCubeDSL.g:17087:1: ( rule__XTryCatchFinallyExpression__Group_3_0__1__Impl )
+            // InternalCubeDSL.g:17088: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"
+    // InternalCubeDSL.g:17094: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 {
+            // InternalCubeDSL.g:17098:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? ) )
+            // InternalCubeDSL.g:17099:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
+            {
+            // InternalCubeDSL.g:17099:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
+            // InternalCubeDSL.g:17100:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1()); 
+            }
+            // InternalCubeDSL.g:17101:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
+            int alt144=2;
+            int LA144_0 = input.LA(1);
+
+            if ( (LA144_0==111) ) {
+                int LA144_1 = input.LA(2);
+
+                if ( (synpred205_InternalCubeDSL()) ) {
+                    alt144=1;
+                }
+            }
+            switch (alt144) {
+                case 1 :
+                    // InternalCubeDSL.g:17101: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"
+    // InternalCubeDSL.g:17110: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 {
+            // InternalCubeDSL.g:17114:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1 )
+            // InternalCubeDSL.g:17115:2: rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:17122: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 {
+            // InternalCubeDSL.g:17126:1: ( ( ( 'finally' ) ) )
+            // InternalCubeDSL.g:17127:1: ( ( 'finally' ) )
+            {
+            // InternalCubeDSL.g:17127:1: ( ( 'finally' ) )
+            // InternalCubeDSL.g:17128:2: ( 'finally' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0()); 
+            }
+            // InternalCubeDSL.g:17129:2: ( 'finally' )
+            // InternalCubeDSL.g:17129:3: 'finally'
+            {
+            match(input,111,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"
+    // InternalCubeDSL.g:17137: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 {
+            // InternalCubeDSL.g:17141:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl )
+            // InternalCubeDSL.g:17142: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"
+    // InternalCubeDSL.g:17148: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 {
+            // InternalCubeDSL.g:17152:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) ) )
+            // InternalCubeDSL.g:17153:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
+            {
+            // InternalCubeDSL.g:17153:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
+            // InternalCubeDSL.g:17154:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1()); 
+            }
+            // InternalCubeDSL.g:17155:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
+            // InternalCubeDSL.g:17155: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"
+    // InternalCubeDSL.g:17164: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 {
+            // InternalCubeDSL.g:17168:1: ( rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1 )
+            // InternalCubeDSL.g:17169:2: rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:17176: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 {
+            // InternalCubeDSL.g:17180:1: ( ( 'finally' ) )
+            // InternalCubeDSL.g:17181:1: ( 'finally' )
+            {
+            // InternalCubeDSL.g:17181:1: ( 'finally' )
+            // InternalCubeDSL.g:17182:2: 'finally'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0()); 
+            }
+            match(input,111,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"
+    // InternalCubeDSL.g:17191: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 {
+            // InternalCubeDSL.g:17195:1: ( rule__XTryCatchFinallyExpression__Group_3_1__1__Impl )
+            // InternalCubeDSL.g:17196: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"
+    // InternalCubeDSL.g:17202: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 {
+            // InternalCubeDSL.g:17206:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) ) )
+            // InternalCubeDSL.g:17207:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
+            {
+            // InternalCubeDSL.g:17207:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
+            // InternalCubeDSL.g:17208:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1()); 
+            }
+            // InternalCubeDSL.g:17209:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
+            // InternalCubeDSL.g:17209: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"
+    // InternalCubeDSL.g:17218: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 {
+            // InternalCubeDSL.g:17222:1: ( rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1 )
+            // InternalCubeDSL.g:17223:2: rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:17230: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 {
+            // InternalCubeDSL.g:17234:1: ( ( ( rule__XSynchronizedExpression__Group_0__0 ) ) )
+            // InternalCubeDSL.g:17235:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
+            {
+            // InternalCubeDSL.g:17235:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
+            // InternalCubeDSL.g:17236:2: ( rule__XSynchronizedExpression__Group_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0()); 
+            }
+            // InternalCubeDSL.g:17237:2: ( rule__XSynchronizedExpression__Group_0__0 )
+            // InternalCubeDSL.g:17237: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"
+    // InternalCubeDSL.g:17245: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 {
+            // InternalCubeDSL.g:17249:1: ( rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2 )
+            // InternalCubeDSL.g:17250:2: rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2
+            {
+            pushFollow(FOLLOW_93);
+            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"
+    // InternalCubeDSL.g:17257:1: rule__XSynchronizedExpression__Group__1__Impl : ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) ;
+    public final void rule__XSynchronizedExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17261:1: ( ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) )
+            // InternalCubeDSL.g:17262:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:17262:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
+            // InternalCubeDSL.g:17263:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1()); 
+            }
+            // InternalCubeDSL.g:17264:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
+            // InternalCubeDSL.g:17264: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"
+    // InternalCubeDSL.g:17272: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 {
+            // InternalCubeDSL.g:17276:1: ( rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3 )
+            // InternalCubeDSL.g:17277:2: rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:17284:1: rule__XSynchronizedExpression__Group__2__Impl : ( ')' ) ;
+    public final void rule__XSynchronizedExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17288:1: ( ( ')' ) )
+            // InternalCubeDSL.g:17289:1: ( ')' )
+            {
+            // InternalCubeDSL.g:17289:1: ( ')' )
+            // InternalCubeDSL.g:17290:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2()); 
+            }
+            match(input,89,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"
+    // InternalCubeDSL.g:17299:1: rule__XSynchronizedExpression__Group__3 : rule__XSynchronizedExpression__Group__3__Impl ;
+    public final void rule__XSynchronizedExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17303:1: ( rule__XSynchronizedExpression__Group__3__Impl )
+            // InternalCubeDSL.g:17304: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"
+    // InternalCubeDSL.g:17310:1: rule__XSynchronizedExpression__Group__3__Impl : ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) ;
+    public final void rule__XSynchronizedExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17314:1: ( ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) )
+            // InternalCubeDSL.g:17315:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
+            {
+            // InternalCubeDSL.g:17315:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
+            // InternalCubeDSL.g:17316:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3()); 
+            }
+            // InternalCubeDSL.g:17317:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
+            // InternalCubeDSL.g:17317: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"
+    // InternalCubeDSL.g:17326: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 {
+            // InternalCubeDSL.g:17330:1: ( rule__XSynchronizedExpression__Group_0__0__Impl )
+            // InternalCubeDSL.g:17331: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"
+    // InternalCubeDSL.g:17337: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 {
+            // InternalCubeDSL.g:17341:1: ( ( ( rule__XSynchronizedExpression__Group_0_0__0 ) ) )
+            // InternalCubeDSL.g:17342:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:17342:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
+            // InternalCubeDSL.g:17343:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0()); 
+            }
+            // InternalCubeDSL.g:17344:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
+            // InternalCubeDSL.g:17344: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"
+    // InternalCubeDSL.g:17353: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 {
+            // InternalCubeDSL.g:17357:1: ( rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1 )
+            // InternalCubeDSL.g:17358:2: rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1
+            {
+            pushFollow(FOLLOW_124);
+            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"
+    // InternalCubeDSL.g:17365:1: rule__XSynchronizedExpression__Group_0_0__0__Impl : ( () ) ;
+    public final void rule__XSynchronizedExpression__Group_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17369:1: ( ( () ) )
+            // InternalCubeDSL.g:17370:1: ( () )
+            {
+            // InternalCubeDSL.g:17370:1: ( () )
+            // InternalCubeDSL.g:17371:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0()); 
+            }
+            // InternalCubeDSL.g:17372:2: ()
+            // InternalCubeDSL.g:17372: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"
+    // InternalCubeDSL.g:17380: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 {
+            // InternalCubeDSL.g:17384:1: ( rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2 )
+            // InternalCubeDSL.g:17385:2: rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2
+            {
+            pushFollow(FOLLOW_44);
+            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"
+    // InternalCubeDSL.g:17392: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 {
+            // InternalCubeDSL.g:17396:1: ( ( 'synchronized' ) )
+            // InternalCubeDSL.g:17397:1: ( 'synchronized' )
+            {
+            // InternalCubeDSL.g:17397:1: ( 'synchronized' )
+            // InternalCubeDSL.g:17398:2: 'synchronized'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1()); 
+            }
+            match(input,112,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"
+    // InternalCubeDSL.g:17407: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 {
+            // InternalCubeDSL.g:17411:1: ( rule__XSynchronizedExpression__Group_0_0__2__Impl )
+            // InternalCubeDSL.g:17412: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"
+    // InternalCubeDSL.g:17418:1: rule__XSynchronizedExpression__Group_0_0__2__Impl : ( '(' ) ;
+    public final void rule__XSynchronizedExpression__Group_0_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17422:1: ( ( '(' ) )
+            // InternalCubeDSL.g:17423:1: ( '(' )
+            {
+            // InternalCubeDSL.g:17423:1: ( '(' )
+            // InternalCubeDSL.g:17424:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
+            }
+            match(input,88,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"
+    // InternalCubeDSL.g:17434: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 {
+            // InternalCubeDSL.g:17438:1: ( rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1 )
+            // InternalCubeDSL.g:17439:2: rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1
+            {
+            pushFollow(FOLLOW_44);
+            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"
+    // InternalCubeDSL.g:17446:1: rule__XCatchClause__Group__0__Impl : ( ( 'catch' ) ) ;
+    public final void rule__XCatchClause__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17450:1: ( ( ( 'catch' ) ) )
+            // InternalCubeDSL.g:17451:1: ( ( 'catch' ) )
+            {
+            // InternalCubeDSL.g:17451:1: ( ( 'catch' ) )
+            // InternalCubeDSL.g:17452:2: ( 'catch' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getCatchKeyword_0()); 
+            }
+            // InternalCubeDSL.g:17453:2: ( 'catch' )
+            // InternalCubeDSL.g:17453:3: 'catch'
+            {
+            match(input,113,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"
+    // InternalCubeDSL.g:17461: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 {
+            // InternalCubeDSL.g:17465:1: ( rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2 )
+            // InternalCubeDSL.g:17466:2: rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalCubeDSL.g:17473:1: rule__XCatchClause__Group__1__Impl : ( '(' ) ;
+    public final void rule__XCatchClause__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17477:1: ( ( '(' ) )
+            // InternalCubeDSL.g:17478:1: ( '(' )
+            {
+            // InternalCubeDSL.g:17478:1: ( '(' )
+            // InternalCubeDSL.g:17479:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1()); 
+            }
+            match(input,88,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"
+    // InternalCubeDSL.g:17488: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 {
+            // InternalCubeDSL.g:17492:1: ( rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3 )
+            // InternalCubeDSL.g:17493:2: rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3
+            {
+            pushFollow(FOLLOW_93);
+            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"
+    // InternalCubeDSL.g:17500:1: rule__XCatchClause__Group__2__Impl : ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) ;
+    public final void rule__XCatchClause__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17504:1: ( ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) )
+            // InternalCubeDSL.g:17505:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
+            {
+            // InternalCubeDSL.g:17505:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
+            // InternalCubeDSL.g:17506:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2()); 
+            }
+            // InternalCubeDSL.g:17507:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
+            // InternalCubeDSL.g:17507: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"
+    // InternalCubeDSL.g:17515: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 {
+            // InternalCubeDSL.g:17519:1: ( rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4 )
+            // InternalCubeDSL.g:17520:2: rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4
+            {
+            pushFollow(FOLLOW_48);
+            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"
+    // InternalCubeDSL.g:17527:1: rule__XCatchClause__Group__3__Impl : ( ')' ) ;
+    public final void rule__XCatchClause__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17531:1: ( ( ')' ) )
+            // InternalCubeDSL.g:17532:1: ( ')' )
+            {
+            // InternalCubeDSL.g:17532:1: ( ')' )
+            // InternalCubeDSL.g:17533:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3()); 
+            }
+            match(input,89,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"
+    // InternalCubeDSL.g:17542:1: rule__XCatchClause__Group__4 : rule__XCatchClause__Group__4__Impl ;
+    public final void rule__XCatchClause__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17546:1: ( rule__XCatchClause__Group__4__Impl )
+            // InternalCubeDSL.g:17547: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"
+    // InternalCubeDSL.g:17553:1: rule__XCatchClause__Group__4__Impl : ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) ;
+    public final void rule__XCatchClause__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17557:1: ( ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) )
+            // InternalCubeDSL.g:17558:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
+            {
+            // InternalCubeDSL.g:17558:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
+            // InternalCubeDSL.g:17559:2: ( rule__XCatchClause__ExpressionAssignment_4 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4()); 
+            }
+            // InternalCubeDSL.g:17560:2: ( rule__XCatchClause__ExpressionAssignment_4 )
+            // InternalCubeDSL.g:17560: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"
+    // InternalCubeDSL.g:17569: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 {
+            // InternalCubeDSL.g:17573:1: ( rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 )
+            // InternalCubeDSL.g:17574:2: rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1
+            {
+            pushFollow(FOLLOW_36);
+            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"
+    // InternalCubeDSL.g:17581:1: rule__QualifiedName__Group__0__Impl : ( ruleValidID ) ;
+    public final void rule__QualifiedName__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17585:1: ( ( ruleValidID ) )
+            // InternalCubeDSL.g:17586:1: ( ruleValidID )
+            {
+            // InternalCubeDSL.g:17586:1: ( ruleValidID )
+            // InternalCubeDSL.g:17587: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"
+    // InternalCubeDSL.g:17596:1: rule__QualifiedName__Group__1 : rule__QualifiedName__Group__1__Impl ;
+    public final void rule__QualifiedName__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17600:1: ( rule__QualifiedName__Group__1__Impl )
+            // InternalCubeDSL.g:17601: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"
+    // InternalCubeDSL.g:17607: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 {
+            // InternalCubeDSL.g:17611:1: ( ( ( rule__QualifiedName__Group_1__0 )* ) )
+            // InternalCubeDSL.g:17612:1: ( ( rule__QualifiedName__Group_1__0 )* )
+            {
+            // InternalCubeDSL.g:17612:1: ( ( rule__QualifiedName__Group_1__0 )* )
+            // InternalCubeDSL.g:17613:2: ( rule__QualifiedName__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameAccess().getGroup_1()); 
+            }
+            // InternalCubeDSL.g:17614:2: ( rule__QualifiedName__Group_1__0 )*
+            loop145:
+            do {
+                int alt145=2;
+                int LA145_0 = input.LA(1);
+
+                if ( (LA145_0==43) ) {
+                    int LA145_2 = input.LA(2);
+
+                    if ( (LA145_2==RULE_ID) ) {
+                        int LA145_3 = input.LA(3);
+
+                        if ( (synpred206_InternalCubeDSL()) ) {
+                            alt145=1;
+                        }
+
+
+                    }
+
+
+                }
+
+
+                switch (alt145) {
+            	case 1 :
+            	    // InternalCubeDSL.g:17614:3: rule__QualifiedName__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_37);
+            	    rule__QualifiedName__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop145;
+                }
+            } 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"
+    // InternalCubeDSL.g:17623: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 {
+            // InternalCubeDSL.g:17627:1: ( rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 )
+            // InternalCubeDSL.g:17628:2: rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1
+            {
+            pushFollow(FOLLOW_6);
+            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"
+    // InternalCubeDSL.g:17635:1: rule__QualifiedName__Group_1__0__Impl : ( ( '.' ) ) ;
+    public final void rule__QualifiedName__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17639:1: ( ( ( '.' ) ) )
+            // InternalCubeDSL.g:17640:1: ( ( '.' ) )
+            {
+            // InternalCubeDSL.g:17640:1: ( ( '.' ) )
+            // InternalCubeDSL.g:17641:2: ( '.' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
+            }
+            // InternalCubeDSL.g:17642:2: ( '.' )
+            // InternalCubeDSL.g:17642:3: '.'
+            {
+            match(input,43,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"
+    // InternalCubeDSL.g:17650: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 {
+            // InternalCubeDSL.g:17654:1: ( rule__QualifiedName__Group_1__1__Impl )
+            // InternalCubeDSL.g:17655: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"
+    // InternalCubeDSL.g:17661:1: rule__QualifiedName__Group_1__1__Impl : ( ruleValidID ) ;
+    public final void rule__QualifiedName__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17665:1: ( ( ruleValidID ) )
+            // InternalCubeDSL.g:17666:1: ( ruleValidID )
+            {
+            // InternalCubeDSL.g:17666:1: ( ruleValidID )
+            // InternalCubeDSL.g:17667: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"
+    // InternalCubeDSL.g:17677: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 {
+            // InternalCubeDSL.g:17681:1: ( rule__Number__Group_1__0__Impl rule__Number__Group_1__1 )
+            // InternalCubeDSL.g:17682:2: rule__Number__Group_1__0__Impl rule__Number__Group_1__1
+            {
+            pushFollow(FOLLOW_36);
+            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"
+    // InternalCubeDSL.g:17689: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 {
+            // InternalCubeDSL.g:17693:1: ( ( ( rule__Number__Alternatives_1_0 ) ) )
+            // InternalCubeDSL.g:17694:1: ( ( rule__Number__Alternatives_1_0 ) )
+            {
+            // InternalCubeDSL.g:17694:1: ( ( rule__Number__Alternatives_1_0 ) )
+            // InternalCubeDSL.g:17695:2: ( rule__Number__Alternatives_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getAlternatives_1_0()); 
+            }
+            // InternalCubeDSL.g:17696:2: ( rule__Number__Alternatives_1_0 )
+            // InternalCubeDSL.g:17696: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"
+    // InternalCubeDSL.g:17704: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 {
+            // InternalCubeDSL.g:17708:1: ( rule__Number__Group_1__1__Impl )
+            // InternalCubeDSL.g:17709: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"
+    // InternalCubeDSL.g:17715: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 {
+            // InternalCubeDSL.g:17719:1: ( ( ( rule__Number__Group_1_1__0 )? ) )
+            // InternalCubeDSL.g:17720:1: ( ( rule__Number__Group_1_1__0 )? )
+            {
+            // InternalCubeDSL.g:17720:1: ( ( rule__Number__Group_1_1__0 )? )
+            // InternalCubeDSL.g:17721:2: ( rule__Number__Group_1_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getGroup_1_1()); 
+            }
+            // InternalCubeDSL.g:17722:2: ( rule__Number__Group_1_1__0 )?
+            int alt146=2;
+            int LA146_0 = input.LA(1);
+
+            if ( (LA146_0==43) ) {
+                int LA146_1 = input.LA(2);
+
+                if ( ((LA146_1>=RULE_INT && LA146_1<=RULE_DECIMAL)) ) {
+                    alt146=1;
+                }
+            }
+            switch (alt146) {
+                case 1 :
+                    // InternalCubeDSL.g:17722: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"
+    // InternalCubeDSL.g:17731: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 {
+            // InternalCubeDSL.g:17735:1: ( rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1 )
+            // InternalCubeDSL.g:17736:2: rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1
+            {
+            pushFollow(FOLLOW_125);
+            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"
+    // InternalCubeDSL.g:17743:1: rule__Number__Group_1_1__0__Impl : ( '.' ) ;
+    public final void rule__Number__Group_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17747:1: ( ( '.' ) )
+            // InternalCubeDSL.g:17748:1: ( '.' )
+            {
+            // InternalCubeDSL.g:17748:1: ( '.' )
+            // InternalCubeDSL.g:17749:2: '.'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0()); 
+            }
+            match(input,43,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"
+    // InternalCubeDSL.g:17758: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 {
+            // InternalCubeDSL.g:17762:1: ( rule__Number__Group_1_1__1__Impl )
+            // InternalCubeDSL.g:17763: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"
+    // InternalCubeDSL.g:17769: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 {
+            // InternalCubeDSL.g:17773:1: ( ( ( rule__Number__Alternatives_1_1_1 ) ) )
+            // InternalCubeDSL.g:17774:1: ( ( rule__Number__Alternatives_1_1_1 ) )
+            {
+            // InternalCubeDSL.g:17774:1: ( ( rule__Number__Alternatives_1_1_1 ) )
+            // InternalCubeDSL.g:17775:2: ( rule__Number__Alternatives_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getAlternatives_1_1_1()); 
+            }
+            // InternalCubeDSL.g:17776:2: ( rule__Number__Alternatives_1_1_1 )
+            // InternalCubeDSL.g:17776: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"
+    // InternalCubeDSL.g:17785: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 {
+            // InternalCubeDSL.g:17789:1: ( rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1 )
+            // InternalCubeDSL.g:17790:2: rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1
+            {
+            pushFollow(FOLLOW_52);
+            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"
+    // InternalCubeDSL.g:17797:1: rule__JvmTypeReference__Group_0__0__Impl : ( ruleJvmParameterizedTypeReference ) ;
+    public final void rule__JvmTypeReference__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17801:1: ( ( ruleJvmParameterizedTypeReference ) )
+            // InternalCubeDSL.g:17802:1: ( ruleJvmParameterizedTypeReference )
+            {
+            // InternalCubeDSL.g:17802:1: ( ruleJvmParameterizedTypeReference )
+            // InternalCubeDSL.g:17803: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"
+    // InternalCubeDSL.g:17812: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 {
+            // InternalCubeDSL.g:17816:1: ( rule__JvmTypeReference__Group_0__1__Impl )
+            // InternalCubeDSL.g:17817: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"
+    // InternalCubeDSL.g:17823: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 {
+            // InternalCubeDSL.g:17827:1: ( ( ( rule__JvmTypeReference__Group_0_1__0 )* ) )
+            // InternalCubeDSL.g:17828:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
+            {
+            // InternalCubeDSL.g:17828:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
+            // InternalCubeDSL.g:17829:2: ( rule__JvmTypeReference__Group_0_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1()); 
+            }
+            // InternalCubeDSL.g:17830:2: ( rule__JvmTypeReference__Group_0_1__0 )*
+            loop147:
+            do {
+                int alt147=2;
+                int LA147_0 = input.LA(1);
+
+                if ( (LA147_0==93) ) {
+                    int LA147_2 = input.LA(2);
+
+                    if ( (LA147_2==91) ) {
+                        int LA147_3 = input.LA(3);
+
+                        if ( (synpred208_InternalCubeDSL()) ) {
+                            alt147=1;
+                        }
+
+
+                    }
+
+
+                }
+
+
+                switch (alt147) {
+            	case 1 :
+            	    // InternalCubeDSL.g:17830:3: rule__JvmTypeReference__Group_0_1__0
+            	    {
+            	    pushFollow(FOLLOW_117);
+            	    rule__JvmTypeReference__Group_0_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop147;
+                }
+            } 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"
+    // InternalCubeDSL.g:17839: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 {
+            // InternalCubeDSL.g:17843:1: ( rule__JvmTypeReference__Group_0_1__0__Impl )
+            // InternalCubeDSL.g:17844: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"
+    // InternalCubeDSL.g:17850: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 {
+            // InternalCubeDSL.g:17854:1: ( ( ( rule__JvmTypeReference__Group_0_1_0__0 ) ) )
+            // InternalCubeDSL.g:17855:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
+            {
+            // InternalCubeDSL.g:17855:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
+            // InternalCubeDSL.g:17856:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1_0()); 
+            }
+            // InternalCubeDSL.g:17857:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
+            // InternalCubeDSL.g:17857: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"
+    // InternalCubeDSL.g:17866: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 {
+            // InternalCubeDSL.g:17870:1: ( rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1 )
+            // InternalCubeDSL.g:17871:2: rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1
+            {
+            pushFollow(FOLLOW_52);
+            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"
+    // InternalCubeDSL.g:17878: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 {
+            // InternalCubeDSL.g:17882:1: ( ( () ) )
+            // InternalCubeDSL.g:17883:1: ( () )
+            {
+            // InternalCubeDSL.g:17883:1: ( () )
+            // InternalCubeDSL.g:17884:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()); 
+            }
+            // InternalCubeDSL.g:17885:2: ()
+            // InternalCubeDSL.g:17885: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"
+    // InternalCubeDSL.g:17893: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 {
+            // InternalCubeDSL.g:17897:1: ( rule__JvmTypeReference__Group_0_1_0__1__Impl )
+            // InternalCubeDSL.g:17898: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"
+    // InternalCubeDSL.g:17904: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 {
+            // InternalCubeDSL.g:17908:1: ( ( ruleArrayBrackets ) )
+            // InternalCubeDSL.g:17909:1: ( ruleArrayBrackets )
+            {
+            // InternalCubeDSL.g:17909:1: ( ruleArrayBrackets )
+            // InternalCubeDSL.g:17910: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"
+    // InternalCubeDSL.g:17920: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 {
+            // InternalCubeDSL.g:17924:1: ( rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1 )
+            // InternalCubeDSL.g:17925:2: rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1
+            {
+            pushFollow(FOLLOW_90);
+            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"
+    // InternalCubeDSL.g:17932:1: rule__ArrayBrackets__Group__0__Impl : ( '[' ) ;
+    public final void rule__ArrayBrackets__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17936:1: ( ( '[' ) )
+            // InternalCubeDSL.g:17937:1: ( '[' )
+            {
+            // InternalCubeDSL.g:17937:1: ( '[' )
+            // InternalCubeDSL.g:17938:2: '['
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); 
+            }
+            match(input,93,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"
+    // InternalCubeDSL.g:17947:1: rule__ArrayBrackets__Group__1 : rule__ArrayBrackets__Group__1__Impl ;
+    public final void rule__ArrayBrackets__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17951:1: ( rule__ArrayBrackets__Group__1__Impl )
+            // InternalCubeDSL.g:17952: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"
+    // InternalCubeDSL.g:17958:1: rule__ArrayBrackets__Group__1__Impl : ( ']' ) ;
+    public final void rule__ArrayBrackets__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:17962:1: ( ( ']' ) )
+            // InternalCubeDSL.g:17963:1: ( ']' )
+            {
+            // InternalCubeDSL.g:17963:1: ( ']' )
+            // InternalCubeDSL.g:17964:2: ']'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); 
+            }
+            match(input,91,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"
+    // InternalCubeDSL.g:17974: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 {
+            // InternalCubeDSL.g:17978:1: ( rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1 )
+            // InternalCubeDSL.g:17979:2: rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalCubeDSL.g:17986: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 {
+            // InternalCubeDSL.g:17990:1: ( ( ( rule__XFunctionTypeRef__Group_0__0 )? ) )
+            // InternalCubeDSL.g:17991:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
+            {
+            // InternalCubeDSL.g:17991:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
+            // InternalCubeDSL.g:17992:2: ( rule__XFunctionTypeRef__Group_0__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0()); 
+            }
+            // InternalCubeDSL.g:17993:2: ( rule__XFunctionTypeRef__Group_0__0 )?
+            int alt148=2;
+            int LA148_0 = input.LA(1);
+
+            if ( (LA148_0==88) ) {
+                alt148=1;
+            }
+            switch (alt148) {
+                case 1 :
+                    // InternalCubeDSL.g:17993: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"
+    // InternalCubeDSL.g:18001: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 {
+            // InternalCubeDSL.g:18005:1: ( rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2 )
+            // InternalCubeDSL.g:18006:2: rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalCubeDSL.g:18013:1: rule__XFunctionTypeRef__Group__1__Impl : ( '=>' ) ;
+    public final void rule__XFunctionTypeRef__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:18017:1: ( ( '=>' ) )
+            // InternalCubeDSL.g:18018:1: ( '=>' )
+            {
+            // InternalCubeDSL.g:18018:1: ( '=>' )
+            // InternalCubeDSL.g:18019:2: '=>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1()); 
+            }
+            match(input,31,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"
+    // InternalCubeDSL.g:18028:1: rule__XFunctionTypeRef__Group__2 : rule__XFunctionTypeRef__Group__2__Impl ;
+    public final void rule__XFunctionTypeRef__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:18032:1: ( rule__XFunctionTypeRef__Group__2__Impl )
+            // InternalCubeDSL.g:18033: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"
+    // InternalCubeDSL.g:18039:1: rule__XFunctionTypeRef__Group__2__Impl : ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) ;
+    public final void rule__XFunctionTypeRef__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:18043:1: ( ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) )
+            // InternalCubeDSL.g:18044:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
+            {
+            // InternalCubeDSL.g:18044:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
+            // InternalCubeDSL.g:18045:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2()); 
+            }
+            // InternalCubeDSL.g:18046:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
+            // InternalCubeDSL.g:18046: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"
+    // InternalCubeDSL.g:18055: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 {
+            // InternalCubeDSL.g:18059:1: ( rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1 )
+            // InternalCubeDSL.g:18060:2: rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1
+            {
+            pushFollow(FOLLOW_126);
+            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"
+    // InternalCubeDSL.g:18067:1: rule__XFunctionTypeRef__Group_0__0__Impl : ( '(' ) ;
+    public final void rule__XFunctionTypeRef__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:18071:1: ( ( '(' ) )
+            // InternalCubeDSL.g:18072:1: ( '(' )
+            {
+            // InternalCubeDSL.g:18072:1: ( '(' )
+            // InternalCubeDSL.g:18073:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()); 
+            }
+            match(input,88,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"
+    // InternalCubeDSL.g:18082: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 {
+            // InternalCubeDSL.g:18086:1: ( rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2 )
+            // InternalCubeDSL.g:18087:2: rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2
+            {
+            pushFollow(FOLLOW_126);
+            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"
+    // InternalCubeDSL.g:18094: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 {
+            // InternalCubeDSL.g:18098:1: ( ( ( rule__XFunctionTypeRef__Group_0_1__0 )? ) )
+            // InternalCubeDSL.g:18099:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
+            {
+            // InternalCubeDSL.g:18099:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
+            // InternalCubeDSL.g:18100:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1()); 
+            }
+            // InternalCubeDSL.g:18101:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
+            int alt149=2;
+            int LA149_0 = input.LA(1);
+
+            if ( (LA149_0==RULE_ID||LA149_0==31||LA149_0==88) ) {
+                alt149=1;
+            }
+            switch (alt149) {
+                case 1 :
+                    // InternalCubeDSL.g:18101: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"
+    // InternalCubeDSL.g:18109: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 {
+            // InternalCubeDSL.g:18113:1: ( rule__XFunctionTypeRef__Group_0__2__Impl )
+            // InternalCubeDSL.g:18114: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"
+    // InternalCubeDSL.g:18120:1: rule__XFunctionTypeRef__Group_0__2__Impl : ( ')' ) ;
+    public final void rule__XFunctionTypeRef__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:18124:1: ( ( ')' ) )
+            // InternalCubeDSL.g:18125:1: ( ')' )
+            {
+            // InternalCubeDSL.g:18125:1: ( ')' )
+            // InternalCubeDSL.g:18126:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()); 
+            }
+            match(input,89,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"
+    // InternalCubeDSL.g:18136: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 {
+            // InternalCubeDSL.g:18140:1: ( rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1 )
+            // InternalCubeDSL.g:18141:2: rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1
+            {
+            pushFollow(FOLLOW_46);
+            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"
+    // InternalCubeDSL.g:18148: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 {
+            // InternalCubeDSL.g:18152:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) ) )
+            // InternalCubeDSL.g:18153:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
+            {
+            // InternalCubeDSL.g:18153:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
+            // InternalCubeDSL.g:18154:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0()); 
+            }
+            // InternalCubeDSL.g:18155:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
+            // InternalCubeDSL.g:18155: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"
+    // InternalCubeDSL.g:18163: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 {
+            // InternalCubeDSL.g:18167:1: ( rule__XFunctionTypeRef__Group_0_1__1__Impl )
+            // InternalCubeDSL.g:18168: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"
+    // InternalCubeDSL.g:18174: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 {
+            // InternalCubeDSL.g:18178:1: ( ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* ) )
+            // InternalCubeDSL.g:18179:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
+            {
+            // InternalCubeDSL.g:18179:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
+            // InternalCubeDSL.g:18180:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1_1()); 
+            }
+            // InternalCubeDSL.g:18181:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
+            loop150:
+            do {
+                int alt150=2;
+                int LA150_0 = input.LA(1);
+
+                if ( (LA150_0==90) ) {
+                    alt150=1;
+                }
+
+
+                switch (alt150) {
+            	case 1 :
+            	    // InternalCubeDSL.g:18181:3: rule__XFunctionTypeRef__Group_0_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_47);
+            	    rule__XFunctionTypeRef__Group_0_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop150;
+                }
+            } 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"
+    // InternalCubeDSL.g:18190: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 {
+            // InternalCubeDSL.g:18194:1: ( rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1 )
+            // InternalCubeDSL.g:18195:2: rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalCubeDSL.g:18202: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 {
+            // InternalCubeDSL.g:18206:1: ( ( ',' ) )
+            // InternalCubeDSL.g:18207:1: ( ',' )
+            {
+            // InternalCubeDSL.g:18207:1: ( ',' )
+            // InternalCubeDSL.g:18208:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0()); 
+            }
+            match(input,90,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"
+    // InternalCubeDSL.g:18217: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 {
+            // InternalCubeDSL.g:18221:1: ( rule__XFunctionTypeRef__Group_0_1_1__1__Impl )
+            // InternalCubeDSL.g:18222: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"
+    // InternalCubeDSL.g:18228: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 {
+            // InternalCubeDSL.g:18232:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) ) )
+            // InternalCubeDSL.g:18233:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
+            {
+            // InternalCubeDSL.g:18233:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
+            // InternalCubeDSL.g:18234:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1()); 
+            }
+            // InternalCubeDSL.g:18235:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
+            // InternalCubeDSL.g:18235: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"
+    // InternalCubeDSL.g:18244: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 {
+            // InternalCubeDSL.g:18248:1: ( rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1 )
+            // InternalCubeDSL.g:18249:2: rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1
+            {
+            pushFollow(FOLLOW_55);
+            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"
+    // InternalCubeDSL.g:18256:1: rule__JvmParameterizedTypeReference__Group__0__Impl : ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) ;
+    public final void rule__JvmParameterizedTypeReference__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:18260:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) )
+            // InternalCubeDSL.g:18261:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
+            {
+            // InternalCubeDSL.g:18261:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
+            // InternalCubeDSL.g:18262:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0()); 
+            }
+            // InternalCubeDSL.g:18263:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
+            // InternalCubeDSL.g:18263: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"
+    // InternalCubeDSL.g:18271:1: rule__JvmParameterizedTypeReference__Group__1 : rule__JvmParameterizedTypeReference__Group__1__Impl ;
+    public final void rule__JvmParameterizedTypeReference__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:18275:1: ( rule__JvmParameterizedTypeReference__Group__1__Impl )
+            // InternalCubeDSL.g:18276: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"
+    // InternalCubeDSL.g:18282: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 {
+            // InternalCubeDSL.g:18286:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? ) )
+            // InternalCubeDSL.g:18287:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
+            {
+            // InternalCubeDSL.g:18287:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
+            // InternalCubeDSL.g:18288:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1()); 
+            }
+            // InternalCubeDSL.g:18289:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
+            int alt151=2;
+            alt151 = dfa151.predict(input);
+            switch (alt151) {
+                case 1 :
+                    // InternalCubeDSL.g:18289: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"
+    // InternalCubeDSL.g:18298: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 {
+            // InternalCubeDSL.g:18302:1: ( rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1 )
+            // InternalCubeDSL.g:18303:2: rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1
+            {
+            pushFollow(FOLLOW_85);
+            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"
+    // InternalCubeDSL.g:18310:1: rule__JvmParameterizedTypeReference__Group_1__0__Impl : ( ( '<' ) ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:18314:1: ( ( ( '<' ) ) )
+            // InternalCubeDSL.g:18315:1: ( ( '<' ) )
+            {
+            // InternalCubeDSL.g:18315:1: ( ( '<' ) )
+            // InternalCubeDSL.g:18316:2: ( '<' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0()); 
+            }
+            // InternalCubeDSL.g:18317:2: ( '<' )
+            // InternalCubeDSL.g:18317:3: '<'
+            {
+            match(input,27,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"
+    // InternalCubeDSL.g:18325: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 {
+            // InternalCubeDSL.g:18329:1: ( rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2 )
+            // InternalCubeDSL.g:18330:2: rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2
+            {
+            pushFollow(FOLLOW_86);
+            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"
+    // InternalCubeDSL.g:18337: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 {
+            // InternalCubeDSL.g:18341:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) ) )
+            // InternalCubeDSL.g:18342:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
+            {
+            // InternalCubeDSL.g:18342:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
+            // InternalCubeDSL.g:18343:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1()); 
+            }
+            // InternalCubeDSL.g:18344:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
+            // InternalCubeDSL.g:18344: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"
+    // InternalCubeDSL.g:18352: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 {
+            // InternalCubeDSL.g:18356:1: ( rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3 )
+            // InternalCubeDSL.g:18357:2: rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3
+            {
+            pushFollow(FOLLOW_86);
+            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"
+    // InternalCubeDSL.g:18364: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 {
+            // InternalCubeDSL.g:18368:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* ) )
+            // InternalCubeDSL.g:18369:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
+            {
+            // InternalCubeDSL.g:18369:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
+            // InternalCubeDSL.g:18370:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_2()); 
+            }
+            // InternalCubeDSL.g:18371:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
+            loop152:
+            do {
+                int alt152=2;
+                int LA152_0 = input.LA(1);
+
+                if ( (LA152_0==90) ) {
+                    alt152=1;
+                }
+
+
+                switch (alt152) {
+            	case 1 :
+            	    // InternalCubeDSL.g:18371:3: rule__JvmParameterizedTypeReference__Group_1_2__0
+            	    {
+            	    pushFollow(FOLLOW_47);
+            	    rule__JvmParameterizedTypeReference__Group_1_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop152;
+                }
+            } 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"
+    // InternalCubeDSL.g:18379: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 {
+            // InternalCubeDSL.g:18383:1: ( rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4 )
+            // InternalCubeDSL.g:18384:2: rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4
+            {
+            pushFollow(FOLLOW_36);
+            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"
+    // InternalCubeDSL.g:18391:1: rule__JvmParameterizedTypeReference__Group_1__3__Impl : ( '>' ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:18395:1: ( ( '>' ) )
+            // InternalCubeDSL.g:18396:1: ( '>' )
+            {
+            // InternalCubeDSL.g:18396:1: ( '>' )
+            // InternalCubeDSL.g:18397:2: '>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3()); 
+            }
+            match(input,26,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"
+    // InternalCubeDSL.g:18406: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 {
+            // InternalCubeDSL.g:18410:1: ( rule__JvmParameterizedTypeReference__Group_1__4__Impl )
+            // InternalCubeDSL.g:18411: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"
+    // InternalCubeDSL.g:18417: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 {
+            // InternalCubeDSL.g:18421:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* ) )
+            // InternalCubeDSL.g:18422:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
+            {
+            // InternalCubeDSL.g:18422:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
+            // InternalCubeDSL.g:18423:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4()); 
+            }
+            // InternalCubeDSL.g:18424:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
+            loop153:
+            do {
+                int alt153=2;
+                int LA153_0 = input.LA(1);
+
+                if ( (LA153_0==43) ) {
+                    int LA153_2 = input.LA(2);
+
+                    if ( (LA153_2==RULE_ID) ) {
+                        int LA153_3 = input.LA(3);
+
+                        if ( (synpred214_InternalCubeDSL()) ) {
+                            alt153=1;
+                        }
+
+
+                    }
+
+
+                }
+
+
+                switch (alt153) {
+            	case 1 :
+            	    // InternalCubeDSL.g:18424:3: rule__JvmParameterizedTypeReference__Group_1_4__0
+            	    {
+            	    pushFollow(FOLLOW_37);
+            	    rule__JvmParameterizedTypeReference__Group_1_4__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop153;
+                }
+            } 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"
+    // InternalCubeDSL.g:18433: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 {
+            // InternalCubeDSL.g:18437:1: ( rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1 )
+            // InternalCubeDSL.g:18438:2: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1
+            {
+            pushFollow(FOLLOW_85);
+            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"
+    // InternalCubeDSL.g:18445:1: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl : ( ',' ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:18449:1: ( ( ',' ) )
+            // InternalCubeDSL.g:18450:1: ( ',' )
+            {
+            // InternalCubeDSL.g:18450:1: ( ',' )
+            // InternalCubeDSL.g:18451:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0()); 
+            }
+            match(input,90,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"
+    // InternalCubeDSL.g:18460: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 {
+            // InternalCubeDSL.g:18464:1: ( rule__JvmParameterizedTypeReference__Group_1_2__1__Impl )
+            // InternalCubeDSL.g:18465: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"
+    // InternalCubeDSL.g:18471: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 {
+            // InternalCubeDSL.g:18475:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) ) )
+            // InternalCubeDSL.g:18476:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
+            {
+            // InternalCubeDSL.g:18476:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
+            // InternalCubeDSL.g:18477:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1()); 
+            }
+            // InternalCubeDSL.g:18478:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
+            // InternalCubeDSL.g:18478: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"
+    // InternalCubeDSL.g:18487: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 {
+            // InternalCubeDSL.g:18491:1: ( rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1 )
+            // InternalCubeDSL.g:18492:2: rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1
+            {
+            pushFollow(FOLLOW_6);
+            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"
+    // InternalCubeDSL.g:18499: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 {
+            // InternalCubeDSL.g:18503:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) ) )
+            // InternalCubeDSL.g:18504:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
+            {
+            // InternalCubeDSL.g:18504:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
+            // InternalCubeDSL.g:18505:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0()); 
+            }
+            // InternalCubeDSL.g:18506:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
+            // InternalCubeDSL.g:18506: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"
+    // InternalCubeDSL.g:18514: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 {
+            // InternalCubeDSL.g:18518:1: ( rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2 )
+            // InternalCubeDSL.g:18519:2: rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2
+            {
+            pushFollow(FOLLOW_55);
+            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"
+    // InternalCubeDSL.g:18526: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 {
+            // InternalCubeDSL.g:18530:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) ) )
+            // InternalCubeDSL.g:18531:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
+            {
+            // InternalCubeDSL.g:18531:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
+            // InternalCubeDSL.g:18532:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1()); 
+            }
+            // InternalCubeDSL.g:18533:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
+            // InternalCubeDSL.g:18533: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"
+    // InternalCubeDSL.g:18541: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 {
+            // InternalCubeDSL.g:18545:1: ( rule__JvmParameterizedTypeReference__Group_1_4__2__Impl )
+            // InternalCubeDSL.g:18546: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"
+    // InternalCubeDSL.g:18552: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 {
+            // InternalCubeDSL.g:18556:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? ) )
+            // InternalCubeDSL.g:18557:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
+            {
+            // InternalCubeDSL.g:18557:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
+            // InternalCubeDSL.g:18558:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2()); 
+            }
+            // InternalCubeDSL.g:18559:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
+            int alt154=2;
+            alt154 = dfa154.predict(input);
+            switch (alt154) {
+                case 1 :
+                    // InternalCubeDSL.g:18559: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"
+    // InternalCubeDSL.g:18568: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 {
+            // InternalCubeDSL.g:18572:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl )
+            // InternalCubeDSL.g:18573: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"
+    // InternalCubeDSL.g:18579: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 {
+            // InternalCubeDSL.g:18583:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) ) )
+            // InternalCubeDSL.g:18584:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
+            {
+            // InternalCubeDSL.g:18584:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
+            // InternalCubeDSL.g:18585:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0_0()); 
+            }
+            // InternalCubeDSL.g:18586:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
+            // InternalCubeDSL.g:18586: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"
+    // InternalCubeDSL.g:18595: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 {
+            // InternalCubeDSL.g:18599:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 )
+            // InternalCubeDSL.g:18600:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1
+            {
+            pushFollow(FOLLOW_36);
+            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"
+    // InternalCubeDSL.g:18607: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 {
+            // InternalCubeDSL.g:18611:1: ( ( () ) )
+            // InternalCubeDSL.g:18612:1: ( () )
+            {
+            // InternalCubeDSL.g:18612:1: ( () )
+            // InternalCubeDSL.g:18613:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0()); 
+            }
+            // InternalCubeDSL.g:18614:2: ()
+            // InternalCubeDSL.g:18614: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"
+    // InternalCubeDSL.g:18622: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 {
+            // InternalCubeDSL.g:18626:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl )
+            // InternalCubeDSL.g:18627: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"
+    // InternalCubeDSL.g:18633: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 {
+            // InternalCubeDSL.g:18637:1: ( ( '.' ) )
+            // InternalCubeDSL.g:18638:1: ( '.' )
+            {
+            // InternalCubeDSL.g:18638:1: ( '.' )
+            // InternalCubeDSL.g:18639:2: '.'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1()); 
+            }
+            match(input,43,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"
+    // InternalCubeDSL.g:18649: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 {
+            // InternalCubeDSL.g:18653:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1 )
+            // InternalCubeDSL.g:18654:2: rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1
+            {
+            pushFollow(FOLLOW_85);
+            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"
+    // InternalCubeDSL.g:18661: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 {
+            // InternalCubeDSL.g:18665:1: ( ( ( '<' ) ) )
+            // InternalCubeDSL.g:18666:1: ( ( '<' ) )
+            {
+            // InternalCubeDSL.g:18666:1: ( ( '<' ) )
+            // InternalCubeDSL.g:18667:2: ( '<' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0()); 
+            }
+            // InternalCubeDSL.g:18668:2: ( '<' )
+            // InternalCubeDSL.g:18668:3: '<'
+            {
+            match(input,27,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"
+    // InternalCubeDSL.g:18676: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 {
+            // InternalCubeDSL.g:18680:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2 )
+            // InternalCubeDSL.g:18681:2: rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2
+            {
+            pushFollow(FOLLOW_86);
+            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"
+    // InternalCubeDSL.g:18688: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 {
+            // InternalCubeDSL.g:18692:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) ) )
+            // InternalCubeDSL.g:18693:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
+            {
+            // InternalCubeDSL.g:18693:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
+            // InternalCubeDSL.g:18694:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1()); 
+            }
+            // InternalCubeDSL.g:18695:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
+            // InternalCubeDSL.g:18695: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"
+    // InternalCubeDSL.g:18703: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 {
+            // InternalCubeDSL.g:18707:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3 )
+            // InternalCubeDSL.g:18708:2: rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3
+            {
+            pushFollow(FOLLOW_86);
+            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"
+    // InternalCubeDSL.g:18715: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 {
+            // InternalCubeDSL.g:18719:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* ) )
+            // InternalCubeDSL.g:18720:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
+            {
+            // InternalCubeDSL.g:18720:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
+            // InternalCubeDSL.g:18721:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2_2()); 
+            }
+            // InternalCubeDSL.g:18722:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
+            loop155:
+            do {
+                int alt155=2;
+                int LA155_0 = input.LA(1);
+
+                if ( (LA155_0==90) ) {
+                    alt155=1;
+                }
+
+
+                switch (alt155) {
+            	case 1 :
+            	    // InternalCubeDSL.g:18722:3: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0
+            	    {
+            	    pushFollow(FOLLOW_47);
+            	    rule__JvmParameterizedTypeReference__Group_1_4_2_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop155;
+                }
+            } 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"
+    // InternalCubeDSL.g:18730: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 {
+            // InternalCubeDSL.g:18734:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl )
+            // InternalCubeDSL.g:18735: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"
+    // InternalCubeDSL.g:18741: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 {
+            // InternalCubeDSL.g:18745:1: ( ( '>' ) )
+            // InternalCubeDSL.g:18746:1: ( '>' )
+            {
+            // InternalCubeDSL.g:18746:1: ( '>' )
+            // InternalCubeDSL.g:18747:2: '>'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3()); 
+            }
+            match(input,26,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"
+    // InternalCubeDSL.g:18757: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 {
+            // InternalCubeDSL.g:18761:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 )
+            // InternalCubeDSL.g:18762:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1
+            {
+            pushFollow(FOLLOW_85);
+            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"
+    // InternalCubeDSL.g:18769: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 {
+            // InternalCubeDSL.g:18773:1: ( ( ',' ) )
+            // InternalCubeDSL.g:18774:1: ( ',' )
+            {
+            // InternalCubeDSL.g:18774:1: ( ',' )
+            // InternalCubeDSL.g:18775:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0()); 
+            }
+            match(input,90,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"
+    // InternalCubeDSL.g:18784: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 {
+            // InternalCubeDSL.g:18788:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl )
+            // InternalCubeDSL.g:18789: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"
+    // InternalCubeDSL.g:18795: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 {
+            // InternalCubeDSL.g:18799:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) ) )
+            // InternalCubeDSL.g:18800:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
+            {
+            // InternalCubeDSL.g:18800:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
+            // InternalCubeDSL.g:18801:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1()); 
+            }
+            // InternalCubeDSL.g:18802:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
+            // InternalCubeDSL.g:18802: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"
+    // InternalCubeDSL.g:18811: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 {
+            // InternalCubeDSL.g:18815:1: ( rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1 )
+            // InternalCubeDSL.g:18816:2: rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1
+            {
+            pushFollow(FOLLOW_85);
+            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"
+    // InternalCubeDSL.g:18823:1: rule__JvmWildcardTypeReference__Group__0__Impl : ( () ) ;
+    public final void rule__JvmWildcardTypeReference__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:18827:1: ( ( () ) )
+            // InternalCubeDSL.g:18828:1: ( () )
+            {
+            // InternalCubeDSL.g:18828:1: ( () )
+            // InternalCubeDSL.g:18829:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0()); 
+            }
+            // InternalCubeDSL.g:18830:2: ()
+            // InternalCubeDSL.g:18830: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"
+    // InternalCubeDSL.g:18838: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 {
+            // InternalCubeDSL.g:18842:1: ( rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2 )
+            // InternalCubeDSL.g:18843:2: rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2
+            {
+            pushFollow(FOLLOW_127);
+            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"
+    // InternalCubeDSL.g:18850:1: rule__JvmWildcardTypeReference__Group__1__Impl : ( '?' ) ;
+    public final void rule__JvmWildcardTypeReference__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:18854:1: ( ( '?' ) )
+            // InternalCubeDSL.g:18855:1: ( '?' )
+            {
+            // InternalCubeDSL.g:18855:1: ( '?' )
+            // InternalCubeDSL.g:18856:2: '?'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1()); 
+            }
+            match(input,114,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"
+    // InternalCubeDSL.g:18865:1: rule__JvmWildcardTypeReference__Group__2 : rule__JvmWildcardTypeReference__Group__2__Impl ;
+    public final void rule__JvmWildcardTypeReference__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:18869:1: ( rule__JvmWildcardTypeReference__Group__2__Impl )
+            // InternalCubeDSL.g:18870: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"
+    // InternalCubeDSL.g:18876:1: rule__JvmWildcardTypeReference__Group__2__Impl : ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) ;
+    public final void rule__JvmWildcardTypeReference__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:18880:1: ( ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) )
+            // InternalCubeDSL.g:18881:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
+            {
+            // InternalCubeDSL.g:18881:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
+            // InternalCubeDSL.g:18882:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getAlternatives_2()); 
+            }
+            // InternalCubeDSL.g:18883:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
+            int alt156=2;
+            int LA156_0 = input.LA(1);
+
+            if ( (LA156_0==45||LA156_0==49) ) {
+                alt156=1;
+            }
+            switch (alt156) {
+                case 1 :
+                    // InternalCubeDSL.g:18883: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"
+    // InternalCubeDSL.g:18892: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 {
+            // InternalCubeDSL.g:18896:1: ( rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1 )
+            // InternalCubeDSL.g:18897:2: rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1
+            {
+            pushFollow(FOLLOW_128);
+            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"
+    // InternalCubeDSL.g:18904: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 {
+            // InternalCubeDSL.g:18908:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) ) )
+            // InternalCubeDSL.g:18909:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
+            {
+            // InternalCubeDSL.g:18909:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
+            // InternalCubeDSL.g:18910:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0()); 
+            }
+            // InternalCubeDSL.g:18911:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
+            // InternalCubeDSL.g:18911: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"
+    // InternalCubeDSL.g:18919: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 {
+            // InternalCubeDSL.g:18923:1: ( rule__JvmWildcardTypeReference__Group_2_0__1__Impl )
+            // InternalCubeDSL.g:18924: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"
+    // InternalCubeDSL.g:18930: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 {
+            // InternalCubeDSL.g:18934:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* ) )
+            // InternalCubeDSL.g:18935:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
+            {
+            // InternalCubeDSL.g:18935:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
+            // InternalCubeDSL.g:18936:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1()); 
+            }
+            // InternalCubeDSL.g:18937:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
+            loop157:
+            do {
+                int alt157=2;
+                int LA157_0 = input.LA(1);
+
+                if ( (LA157_0==115) ) {
+                    alt157=1;
+                }
+
+
+                switch (alt157) {
+            	case 1 :
+            	    // InternalCubeDSL.g:18937:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1
+            	    {
+            	    pushFollow(FOLLOW_129);
+            	    rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop157;
+                }
+            } 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"
+    // InternalCubeDSL.g:18946: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 {
+            // InternalCubeDSL.g:18950:1: ( rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1 )
+            // InternalCubeDSL.g:18951:2: rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1
+            {
+            pushFollow(FOLLOW_128);
+            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"
+    // InternalCubeDSL.g:18958: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 {
+            // InternalCubeDSL.g:18962:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) ) )
+            // InternalCubeDSL.g:18963:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
+            {
+            // InternalCubeDSL.g:18963:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
+            // InternalCubeDSL.g:18964:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0()); 
+            }
+            // InternalCubeDSL.g:18965:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
+            // InternalCubeDSL.g:18965: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"
+    // InternalCubeDSL.g:18973: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 {
+            // InternalCubeDSL.g:18977:1: ( rule__JvmWildcardTypeReference__Group_2_1__1__Impl )
+            // InternalCubeDSL.g:18978: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"
+    // InternalCubeDSL.g:18984: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 {
+            // InternalCubeDSL.g:18988:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* ) )
+            // InternalCubeDSL.g:18989:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
+            {
+            // InternalCubeDSL.g:18989:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
+            // InternalCubeDSL.g:18990:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1()); 
+            }
+            // InternalCubeDSL.g:18991:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
+            loop158:
+            do {
+                int alt158=2;
+                int LA158_0 = input.LA(1);
+
+                if ( (LA158_0==115) ) {
+                    alt158=1;
+                }
+
+
+                switch (alt158) {
+            	case 1 :
+            	    // InternalCubeDSL.g:18991:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1
+            	    {
+            	    pushFollow(FOLLOW_129);
+            	    rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop158;
+                }
+            } 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"
+    // InternalCubeDSL.g:19000: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 {
+            // InternalCubeDSL.g:19004:1: ( rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1 )
+            // InternalCubeDSL.g:19005:2: rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalCubeDSL.g:19012:1: rule__JvmUpperBound__Group__0__Impl : ( 'extends' ) ;
+    public final void rule__JvmUpperBound__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19016:1: ( ( 'extends' ) )
+            // InternalCubeDSL.g:19017:1: ( 'extends' )
+            {
+            // InternalCubeDSL.g:19017:1: ( 'extends' )
+            // InternalCubeDSL.g:19018:2: 'extends'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0()); 
+            }
+            match(input,45,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"
+    // InternalCubeDSL.g:19027:1: rule__JvmUpperBound__Group__1 : rule__JvmUpperBound__Group__1__Impl ;
+    public final void rule__JvmUpperBound__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19031:1: ( rule__JvmUpperBound__Group__1__Impl )
+            // InternalCubeDSL.g:19032: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"
+    // InternalCubeDSL.g:19038:1: rule__JvmUpperBound__Group__1__Impl : ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) ;
+    public final void rule__JvmUpperBound__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19042:1: ( ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) )
+            // InternalCubeDSL.g:19043:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:19043:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
+            // InternalCubeDSL.g:19044:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1()); 
+            }
+            // InternalCubeDSL.g:19045:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
+            // InternalCubeDSL.g:19045: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"
+    // InternalCubeDSL.g:19054: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 {
+            // InternalCubeDSL.g:19058:1: ( rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1 )
+            // InternalCubeDSL.g:19059:2: rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalCubeDSL.g:19066:1: rule__JvmUpperBoundAnded__Group__0__Impl : ( '&' ) ;
+    public final void rule__JvmUpperBoundAnded__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19070:1: ( ( '&' ) )
+            // InternalCubeDSL.g:19071:1: ( '&' )
+            {
+            // InternalCubeDSL.g:19071:1: ( '&' )
+            // InternalCubeDSL.g:19072:2: '&'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0()); 
+            }
+            match(input,115,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"
+    // InternalCubeDSL.g:19081:1: rule__JvmUpperBoundAnded__Group__1 : rule__JvmUpperBoundAnded__Group__1__Impl ;
+    public final void rule__JvmUpperBoundAnded__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19085:1: ( rule__JvmUpperBoundAnded__Group__1__Impl )
+            // InternalCubeDSL.g:19086: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"
+    // InternalCubeDSL.g:19092:1: rule__JvmUpperBoundAnded__Group__1__Impl : ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) ;
+    public final void rule__JvmUpperBoundAnded__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19096:1: ( ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) )
+            // InternalCubeDSL.g:19097:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:19097:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalCubeDSL.g:19098:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1()); 
+            }
+            // InternalCubeDSL.g:19099:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
+            // InternalCubeDSL.g:19099: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"
+    // InternalCubeDSL.g:19108: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 {
+            // InternalCubeDSL.g:19112:1: ( rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1 )
+            // InternalCubeDSL.g:19113:2: rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalCubeDSL.g:19120:1: rule__JvmLowerBound__Group__0__Impl : ( 'super' ) ;
+    public final void rule__JvmLowerBound__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19124:1: ( ( 'super' ) )
+            // InternalCubeDSL.g:19125:1: ( 'super' )
+            {
+            // InternalCubeDSL.g:19125:1: ( 'super' )
+            // InternalCubeDSL.g:19126:2: 'super'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0()); 
+            }
+            match(input,49,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"
+    // InternalCubeDSL.g:19135:1: rule__JvmLowerBound__Group__1 : rule__JvmLowerBound__Group__1__Impl ;
+    public final void rule__JvmLowerBound__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19139:1: ( rule__JvmLowerBound__Group__1__Impl )
+            // InternalCubeDSL.g:19140: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"
+    // InternalCubeDSL.g:19146:1: rule__JvmLowerBound__Group__1__Impl : ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) ;
+    public final void rule__JvmLowerBound__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19150:1: ( ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) )
+            // InternalCubeDSL.g:19151:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:19151:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
+            // InternalCubeDSL.g:19152:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1()); 
+            }
+            // InternalCubeDSL.g:19153:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
+            // InternalCubeDSL.g:19153: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"
+    // InternalCubeDSL.g:19162: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 {
+            // InternalCubeDSL.g:19166:1: ( rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1 )
+            // InternalCubeDSL.g:19167:2: rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalCubeDSL.g:19174:1: rule__JvmLowerBoundAnded__Group__0__Impl : ( '&' ) ;
+    public final void rule__JvmLowerBoundAnded__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19178:1: ( ( '&' ) )
+            // InternalCubeDSL.g:19179:1: ( '&' )
+            {
+            // InternalCubeDSL.g:19179:1: ( '&' )
+            // InternalCubeDSL.g:19180:2: '&'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0()); 
+            }
+            match(input,115,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"
+    // InternalCubeDSL.g:19189:1: rule__JvmLowerBoundAnded__Group__1 : rule__JvmLowerBoundAnded__Group__1__Impl ;
+    public final void rule__JvmLowerBoundAnded__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19193:1: ( rule__JvmLowerBoundAnded__Group__1__Impl )
+            // InternalCubeDSL.g:19194: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"
+    // InternalCubeDSL.g:19200:1: rule__JvmLowerBoundAnded__Group__1__Impl : ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) ;
+    public final void rule__JvmLowerBoundAnded__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19204:1: ( ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) )
+            // InternalCubeDSL.g:19205:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
+            {
+            // InternalCubeDSL.g:19205:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalCubeDSL.g:19206:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1()); 
+            }
+            // InternalCubeDSL.g:19207:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
+            // InternalCubeDSL.g:19207: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"
+    // InternalCubeDSL.g:19216: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 {
+            // InternalCubeDSL.g:19220:1: ( rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1 )
+            // InternalCubeDSL.g:19221:2: rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1
+            {
+            pushFollow(FOLLOW_36);
+            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"
+    // InternalCubeDSL.g:19228:1: rule__QualifiedNameWithWildcard__Group__0__Impl : ( ruleQualifiedName ) ;
+    public final void rule__QualifiedNameWithWildcard__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19232:1: ( ( ruleQualifiedName ) )
+            // InternalCubeDSL.g:19233:1: ( ruleQualifiedName )
+            {
+            // InternalCubeDSL.g:19233:1: ( ruleQualifiedName )
+            // InternalCubeDSL.g:19234: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"
+    // InternalCubeDSL.g:19243: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 {
+            // InternalCubeDSL.g:19247:1: ( rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2 )
+            // InternalCubeDSL.g:19248:2: rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2
+            {
+            pushFollow(FOLLOW_130);
+            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"
+    // InternalCubeDSL.g:19255:1: rule__QualifiedNameWithWildcard__Group__1__Impl : ( '.' ) ;
+    public final void rule__QualifiedNameWithWildcard__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19259:1: ( ( '.' ) )
+            // InternalCubeDSL.g:19260:1: ( '.' )
+            {
+            // InternalCubeDSL.g:19260:1: ( '.' )
+            // InternalCubeDSL.g:19261:2: '.'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1()); 
+            }
+            match(input,43,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"
+    // InternalCubeDSL.g:19270:1: rule__QualifiedNameWithWildcard__Group__2 : rule__QualifiedNameWithWildcard__Group__2__Impl ;
+    public final void rule__QualifiedNameWithWildcard__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19274:1: ( rule__QualifiedNameWithWildcard__Group__2__Impl )
+            // InternalCubeDSL.g:19275: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"
+    // InternalCubeDSL.g:19281:1: rule__QualifiedNameWithWildcard__Group__2__Impl : ( '*' ) ;
+    public final void rule__QualifiedNameWithWildcard__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19285:1: ( ( '*' ) )
+            // InternalCubeDSL.g:19286:1: ( '*' )
+            {
+            // InternalCubeDSL.g:19286:1: ( '*' )
+            // InternalCubeDSL.g:19287:2: '*'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameWithWildcardAccess().getAsteriskKeyword_2()); 
+            }
+            match(input,36,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"
+    // InternalCubeDSL.g:19297: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 {
+            // InternalCubeDSL.g:19301:1: ( rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1 )
+            // InternalCubeDSL.g:19302:2: rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1
+            {
+            pushFollow(FOLLOW_36);
+            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"
+    // InternalCubeDSL.g:19309:1: rule__QualifiedNameInStaticImport__Group__0__Impl : ( ruleValidID ) ;
+    public final void rule__QualifiedNameInStaticImport__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19313:1: ( ( ruleValidID ) )
+            // InternalCubeDSL.g:19314:1: ( ruleValidID )
+            {
+            // InternalCubeDSL.g:19314:1: ( ruleValidID )
+            // InternalCubeDSL.g:19315: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"
+    // InternalCubeDSL.g:19324:1: rule__QualifiedNameInStaticImport__Group__1 : rule__QualifiedNameInStaticImport__Group__1__Impl ;
+    public final void rule__QualifiedNameInStaticImport__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19328:1: ( rule__QualifiedNameInStaticImport__Group__1__Impl )
+            // InternalCubeDSL.g:19329: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"
+    // InternalCubeDSL.g:19335:1: rule__QualifiedNameInStaticImport__Group__1__Impl : ( '.' ) ;
+    public final void rule__QualifiedNameInStaticImport__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19339:1: ( ( '.' ) )
+            // InternalCubeDSL.g:19340:1: ( '.' )
+            {
+            // InternalCubeDSL.g:19340:1: ( '.' )
+            // InternalCubeDSL.g:19341:2: '.'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1()); 
+            }
+            match(input,43,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__CubeModel__ImportSectionAssignment_1"
+    // InternalCubeDSL.g:19351:1: rule__CubeModel__ImportSectionAssignment_1 : ( ruleXImportSection ) ;
+    public final void rule__CubeModel__ImportSectionAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19355:1: ( ( ruleXImportSection ) )
+            // InternalCubeDSL.g:19356:2: ( ruleXImportSection )
+            {
+            // InternalCubeDSL.g:19356:2: ( ruleXImportSection )
+            // InternalCubeDSL.g:19357:3: ruleXImportSection
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeModelAccess().getImportSectionXImportSectionParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXImportSection();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeModelAccess().getImportSectionXImportSectionParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeModel__ImportSectionAssignment_1"
+
+
+    // $ANTLR start "rule__CubeModel__PckgAssignment_2"
+    // InternalCubeDSL.g:19366:1: rule__CubeModel__PckgAssignment_2 : ( ruleCubePackage ) ;
+    public final void rule__CubeModel__PckgAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19370:1: ( ( ruleCubePackage ) )
+            // InternalCubeDSL.g:19371:2: ( ruleCubePackage )
+            {
+            // InternalCubeDSL.g:19371:2: ( ruleCubePackage )
+            // InternalCubeDSL.g:19372:3: ruleCubePackage
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeModelAccess().getPckgCubePackageParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleCubePackage();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeModelAccess().getPckgCubePackageParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeModel__PckgAssignment_2"
+
+
+    // $ANTLR start "rule__CubePackage__NameAssignment_1"
+    // InternalCubeDSL.g:19381:1: rule__CubePackage__NameAssignment_1 : ( ruleQualifiedName ) ;
+    public final void rule__CubePackage__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19385:1: ( ( ruleQualifiedName ) )
+            // InternalCubeDSL.g:19386:2: ( ruleQualifiedName )
+            {
+            // InternalCubeDSL.g:19386:2: ( ruleQualifiedName )
+            // InternalCubeDSL.g:19387:3: ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubePackageAccess().getNameQualifiedNameParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubePackageAccess().getNameQualifiedNameParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubePackage__NameAssignment_1"
+
+
+    // $ANTLR start "rule__CubePackage__DimensionsAssignment_2_1"
+    // InternalCubeDSL.g:19396:1: rule__CubePackage__DimensionsAssignment_2_1 : ( ruleCubeDimension ) ;
+    public final void rule__CubePackage__DimensionsAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19400:1: ( ( ruleCubeDimension ) )
+            // InternalCubeDSL.g:19401:2: ( ruleCubeDimension )
+            {
+            // InternalCubeDSL.g:19401:2: ( ruleCubeDimension )
+            // InternalCubeDSL.g:19402:3: ruleCubeDimension
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubePackageAccess().getDimensionsCubeDimensionParserRuleCall_2_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleCubeDimension();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubePackageAccess().getDimensionsCubeDimensionParserRuleCall_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubePackage__DimensionsAssignment_2_1"
+
+
+    // $ANTLR start "rule__CubePackage__CubesAssignment_2_2"
+    // InternalCubeDSL.g:19411:1: rule__CubePackage__CubesAssignment_2_2 : ( ruleCubeType ) ;
+    public final void rule__CubePackage__CubesAssignment_2_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19415:1: ( ( ruleCubeType ) )
+            // InternalCubeDSL.g:19416:2: ( ruleCubeType )
+            {
+            // InternalCubeDSL.g:19416:2: ( ruleCubeType )
+            // InternalCubeDSL.g:19417:3: ruleCubeType
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubePackageAccess().getCubesCubeTypeParserRuleCall_2_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleCubeType();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubePackageAccess().getCubesCubeTypeParserRuleCall_2_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubePackage__CubesAssignment_2_2"
+
+
+    // $ANTLR start "rule__CubeType__NameAssignment_1"
+    // InternalCubeDSL.g:19426:1: rule__CubeType__NameAssignment_1 : ( RULE_ID ) ;
+    public final void rule__CubeType__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19430:1: ( ( RULE_ID ) )
+            // InternalCubeDSL.g:19431:2: ( RULE_ID )
+            {
+            // InternalCubeDSL.g:19431:2: ( RULE_ID )
+            // InternalCubeDSL.g:19432:3: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeAccess().getNameIDTerminalRuleCall_1_0()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeAccess().getNameIDTerminalRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeType__NameAssignment_1"
+
+
+    // $ANTLR start "rule__CubeType__DefaultMeasureAssignment_2_0"
+    // InternalCubeDSL.g:19441:1: rule__CubeType__DefaultMeasureAssignment_2_0 : ( ( 'defaultMeasure' ) ) ;
+    public final void rule__CubeType__DefaultMeasureAssignment_2_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19445:1: ( ( ( 'defaultMeasure' ) ) )
+            // InternalCubeDSL.g:19446:2: ( ( 'defaultMeasure' ) )
+            {
+            // InternalCubeDSL.g:19446:2: ( ( 'defaultMeasure' ) )
+            // InternalCubeDSL.g:19447:3: ( 'defaultMeasure' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeAccess().getDefaultMeasureDefaultMeasureKeyword_2_0_0()); 
+            }
+            // InternalCubeDSL.g:19448:3: ( 'defaultMeasure' )
+            // InternalCubeDSL.g:19449:4: 'defaultMeasure'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeAccess().getDefaultMeasureDefaultMeasureKeyword_2_0_0()); 
+            }
+            match(input,116,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeAccess().getDefaultMeasureDefaultMeasureKeyword_2_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeAccess().getDefaultMeasureDefaultMeasureKeyword_2_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeType__DefaultMeasureAssignment_2_0"
+
+
+    // $ANTLR start "rule__CubeType__DefaultMeasureValueAssignment_2_1"
+    // InternalCubeDSL.g:19460:1: rule__CubeType__DefaultMeasureValueAssignment_2_1 : ( RULE_STRING ) ;
+    public final void rule__CubeType__DefaultMeasureValueAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19464:1: ( ( RULE_STRING ) )
+            // InternalCubeDSL.g:19465:2: ( RULE_STRING )
+            {
+            // InternalCubeDSL.g:19465:2: ( RULE_STRING )
+            // InternalCubeDSL.g:19466:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeAccess().getDefaultMeasureValueSTRINGTerminalRuleCall_2_1_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeAccess().getDefaultMeasureValueSTRINGTerminalRuleCall_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeType__DefaultMeasureValueAssignment_2_1"
+
+
+    // $ANTLR start "rule__CubeType__CubeTypeEntityAssignment_4"
+    // InternalCubeDSL.g:19475:1: rule__CubeType__CubeTypeEntityAssignment_4 : ( ruleCubeTypeEntity ) ;
+    public final void rule__CubeType__CubeTypeEntityAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19479:1: ( ( ruleCubeTypeEntity ) )
+            // InternalCubeDSL.g:19480:2: ( ruleCubeTypeEntity )
+            {
+            // InternalCubeDSL.g:19480:2: ( ruleCubeTypeEntity )
+            // InternalCubeDSL.g:19481:3: ruleCubeTypeEntity
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeAccess().getCubeTypeEntityCubeTypeEntityParserRuleCall_4_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleCubeTypeEntity();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeAccess().getCubeTypeEntityCubeTypeEntityParserRuleCall_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeType__CubeTypeEntityAssignment_4"
+
+
+    // $ANTLR start "rule__CubeDimensionUsage__SourceValueAssignment_1"
+    // InternalCubeDSL.g:19490:1: rule__CubeDimensionUsage__SourceValueAssignment_1 : ( ( RULE_ID ) ) ;
+    public final void rule__CubeDimensionUsage__SourceValueAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19494:1: ( ( ( RULE_ID ) ) )
+            // InternalCubeDSL.g:19495:2: ( ( RULE_ID ) )
+            {
+            // InternalCubeDSL.g:19495:2: ( ( RULE_ID ) )
+            // InternalCubeDSL.g:19496:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionUsageAccess().getSourceValueCubeDimensionCrossReference_1_0()); 
+            }
+            // InternalCubeDSL.g:19497:3: ( RULE_ID )
+            // InternalCubeDSL.g:19498:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionUsageAccess().getSourceValueCubeDimensionIDTerminalRuleCall_1_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionUsageAccess().getSourceValueCubeDimensionIDTerminalRuleCall_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionUsageAccess().getSourceValueCubeDimensionCrossReference_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionUsage__SourceValueAssignment_1"
+
+
+    // $ANTLR start "rule__CubeDimensionUsage__OverValueAssignment_3"
+    // InternalCubeDSL.g:19509:1: rule__CubeDimensionUsage__OverValueAssignment_3 : ( ( ruleLFQN ) ) ;
+    public final void rule__CubeDimensionUsage__OverValueAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19513:1: ( ( ( ruleLFQN ) ) )
+            // InternalCubeDSL.g:19514:2: ( ( ruleLFQN ) )
+            {
+            // InternalCubeDSL.g:19514:2: ( ( ruleLFQN ) )
+            // InternalCubeDSL.g:19515:3: ( ruleLFQN )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionUsageAccess().getOverValueLEntityFeatureCrossReference_3_0()); 
+            }
+            // InternalCubeDSL.g:19516:3: ( ruleLFQN )
+            // InternalCubeDSL.g:19517:4: ruleLFQN
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionUsageAccess().getOverValueLEntityFeatureLFQNParserRuleCall_3_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleLFQN();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionUsageAccess().getOverValueLEntityFeatureLFQNParserRuleCall_3_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionUsageAccess().getOverValueLEntityFeatureCrossReference_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionUsage__OverValueAssignment_3"
+
+
+    // $ANTLR start "rule__CubeDimension__NameAssignment_1"
+    // InternalCubeDSL.g:19528:1: rule__CubeDimension__NameAssignment_1 : ( ruleTRANSLATABLEID ) ;
+    public final void rule__CubeDimension__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19532:1: ( ( ruleTRANSLATABLEID ) )
+            // InternalCubeDSL.g:19533:2: ( ruleTRANSLATABLEID )
+            {
+            // InternalCubeDSL.g:19533:2: ( ruleTRANSLATABLEID )
+            // InternalCubeDSL.g:19534:3: ruleTRANSLATABLEID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimension__NameAssignment_1"
+
+
+    // $ANTLR start "rule__CubeDimension__TypeTimeAssignment_2"
+    // InternalCubeDSL.g:19543:1: rule__CubeDimension__TypeTimeAssignment_2 : ( ( 'typeTime' ) ) ;
+    public final void rule__CubeDimension__TypeTimeAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19547:1: ( ( ( 'typeTime' ) ) )
+            // InternalCubeDSL.g:19548:2: ( ( 'typeTime' ) )
+            {
+            // InternalCubeDSL.g:19548:2: ( ( 'typeTime' ) )
+            // InternalCubeDSL.g:19549:3: ( 'typeTime' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionAccess().getTypeTimeTypeTimeKeyword_2_0()); 
+            }
+            // InternalCubeDSL.g:19550:3: ( 'typeTime' )
+            // InternalCubeDSL.g:19551:4: 'typeTime'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionAccess().getTypeTimeTypeTimeKeyword_2_0()); 
+            }
+            match(input,117,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionAccess().getTypeTimeTypeTimeKeyword_2_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionAccess().getTypeTimeTypeTimeKeyword_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimension__TypeTimeAssignment_2"
+
+
+    // $ANTLR start "rule__CubeDimension__HierarchiesAssignment_4"
+    // InternalCubeDSL.g:19562:1: rule__CubeDimension__HierarchiesAssignment_4 : ( ruleCubeHierarchy ) ;
+    public final void rule__CubeDimension__HierarchiesAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19566:1: ( ( ruleCubeHierarchy ) )
+            // InternalCubeDSL.g:19567:2: ( ruleCubeHierarchy )
+            {
+            // InternalCubeDSL.g:19567:2: ( ruleCubeHierarchy )
+            // InternalCubeDSL.g:19568:3: ruleCubeHierarchy
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionAccess().getHierarchiesCubeHierarchyParserRuleCall_4_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleCubeHierarchy();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionAccess().getHierarchiesCubeHierarchyParserRuleCall_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimension__HierarchiesAssignment_4"
+
+
+    // $ANTLR start "rule__CubeHierarchy__NameAssignment_2"
+    // InternalCubeDSL.g:19577:1: rule__CubeHierarchy__NameAssignment_2 : ( ruleTRANSLATABLEID ) ;
+    public final void rule__CubeHierarchy__NameAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19581:1: ( ( ruleTRANSLATABLEID ) )
+            // InternalCubeDSL.g:19582:2: ( ruleTRANSLATABLEID )
+            {
+            // InternalCubeDSL.g:19582:2: ( ruleTRANSLATABLEID )
+            // InternalCubeDSL.g:19583:3: ruleTRANSLATABLEID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__NameAssignment_2"
+
+
+    // $ANTLR start "rule__CubeHierarchy__HasAllAssignment_3"
+    // InternalCubeDSL.g:19592:1: rule__CubeHierarchy__HasAllAssignment_3 : ( ( 'hasAll' ) ) ;
+    public final void rule__CubeHierarchy__HasAllAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19596:1: ( ( ( 'hasAll' ) ) )
+            // InternalCubeDSL.g:19597:2: ( ( 'hasAll' ) )
+            {
+            // InternalCubeDSL.g:19597:2: ( ( 'hasAll' ) )
+            // InternalCubeDSL.g:19598:3: ( 'hasAll' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getHasAllHasAllKeyword_3_0()); 
+            }
+            // InternalCubeDSL.g:19599:3: ( 'hasAll' )
+            // InternalCubeDSL.g:19600:4: 'hasAll'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getHasAllHasAllKeyword_3_0()); 
+            }
+            match(input,118,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getHasAllHasAllKeyword_3_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getHasAllHasAllKeyword_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__HasAllAssignment_3"
+
+
+    // $ANTLR start "rule__CubeHierarchy__AllMemberNameAssignment_4_0"
+    // InternalCubeDSL.g:19611:1: rule__CubeHierarchy__AllMemberNameAssignment_4_0 : ( ( 'allMemberName' ) ) ;
+    public final void rule__CubeHierarchy__AllMemberNameAssignment_4_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19615:1: ( ( ( 'allMemberName' ) ) )
+            // InternalCubeDSL.g:19616:2: ( ( 'allMemberName' ) )
+            {
+            // InternalCubeDSL.g:19616:2: ( ( 'allMemberName' ) )
+            // InternalCubeDSL.g:19617:3: ( 'allMemberName' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getAllMemberNameAllMemberNameKeyword_4_0_0()); 
+            }
+            // InternalCubeDSL.g:19618:3: ( 'allMemberName' )
+            // InternalCubeDSL.g:19619:4: 'allMemberName'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getAllMemberNameAllMemberNameKeyword_4_0_0()); 
+            }
+            match(input,119,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getAllMemberNameAllMemberNameKeyword_4_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getAllMemberNameAllMemberNameKeyword_4_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__AllMemberNameAssignment_4_0"
+
+
+    // $ANTLR start "rule__CubeHierarchy__AllMemberNameValueAssignment_4_1"
+    // InternalCubeDSL.g:19630:1: rule__CubeHierarchy__AllMemberNameValueAssignment_4_1 : ( ruleTRANSLATABLESTRING ) ;
+    public final void rule__CubeHierarchy__AllMemberNameValueAssignment_4_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19634:1: ( ( ruleTRANSLATABLESTRING ) )
+            // InternalCubeDSL.g:19635:2: ( ruleTRANSLATABLESTRING )
+            {
+            // InternalCubeDSL.g:19635:2: ( ruleTRANSLATABLESTRING )
+            // InternalCubeDSL.g:19636:3: ruleTRANSLATABLESTRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getAllMemberNameValueTRANSLATABLESTRINGParserRuleCall_4_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleTRANSLATABLESTRING();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getAllMemberNameValueTRANSLATABLESTRINGParserRuleCall_4_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__AllMemberNameValueAssignment_4_1"
+
+
+    // $ANTLR start "rule__CubeHierarchy__DefaultMemberAssignment_5_0"
+    // InternalCubeDSL.g:19645:1: rule__CubeHierarchy__DefaultMemberAssignment_5_0 : ( ( 'defaultMember' ) ) ;
+    public final void rule__CubeHierarchy__DefaultMemberAssignment_5_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19649:1: ( ( ( 'defaultMember' ) ) )
+            // InternalCubeDSL.g:19650:2: ( ( 'defaultMember' ) )
+            {
+            // InternalCubeDSL.g:19650:2: ( ( 'defaultMember' ) )
+            // InternalCubeDSL.g:19651:3: ( 'defaultMember' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getDefaultMemberDefaultMemberKeyword_5_0_0()); 
+            }
+            // InternalCubeDSL.g:19652:3: ( 'defaultMember' )
+            // InternalCubeDSL.g:19653:4: 'defaultMember'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getDefaultMemberDefaultMemberKeyword_5_0_0()); 
+            }
+            match(input,120,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getDefaultMemberDefaultMemberKeyword_5_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getDefaultMemberDefaultMemberKeyword_5_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__DefaultMemberAssignment_5_0"
+
+
+    // $ANTLR start "rule__CubeHierarchy__DefaultMemberValueAssignment_5_1"
+    // InternalCubeDSL.g:19664:1: rule__CubeHierarchy__DefaultMemberValueAssignment_5_1 : ( ruleTRANSLATABLESTRING ) ;
+    public final void rule__CubeHierarchy__DefaultMemberValueAssignment_5_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19668:1: ( ( ruleTRANSLATABLESTRING ) )
+            // InternalCubeDSL.g:19669:2: ( ruleTRANSLATABLESTRING )
+            {
+            // InternalCubeDSL.g:19669:2: ( ruleTRANSLATABLESTRING )
+            // InternalCubeDSL.g:19670:3: ruleTRANSLATABLESTRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getDefaultMemberValueTRANSLATABLESTRINGParserRuleCall_5_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleTRANSLATABLESTRING();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getDefaultMemberValueTRANSLATABLESTRINGParserRuleCall_5_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__DefaultMemberValueAssignment_5_1"
+
+
+    // $ANTLR start "rule__CubeHierarchy__CubeDimEntityAssignment_7"
+    // InternalCubeDSL.g:19679:1: rule__CubeHierarchy__CubeDimEntityAssignment_7 : ( ruleCubeDimensionEntity ) ;
+    public final void rule__CubeHierarchy__CubeDimEntityAssignment_7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19683:1: ( ( ruleCubeDimensionEntity ) )
+            // InternalCubeDSL.g:19684:2: ( ruleCubeDimensionEntity )
+            {
+            // InternalCubeDSL.g:19684:2: ( ruleCubeDimensionEntity )
+            // InternalCubeDSL.g:19685:3: ruleCubeDimensionEntity
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeHierarchyAccess().getCubeDimEntityCubeDimensionEntityParserRuleCall_7_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleCubeDimensionEntity();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeHierarchyAccess().getCubeDimEntityCubeDimensionEntityParserRuleCall_7_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeHierarchy__CubeDimEntityAssignment_7"
+
+
+    // $ANTLR start "rule__CubeEntity__EntityValueAssignment_1"
+    // InternalCubeDSL.g:19694:1: rule__CubeEntity__EntityValueAssignment_1 : ( ( ruleLFQN ) ) ;
+    public final void rule__CubeEntity__EntityValueAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19698:1: ( ( ( ruleLFQN ) ) )
+            // InternalCubeDSL.g:19699:2: ( ( ruleLFQN ) )
+            {
+            // InternalCubeDSL.g:19699:2: ( ( ruleLFQN ) )
+            // InternalCubeDSL.g:19700:3: ( ruleLFQN )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeEntityAccess().getEntityValueLEntityCrossReference_1_0()); 
+            }
+            // InternalCubeDSL.g:19701:3: ( ruleLFQN )
+            // InternalCubeDSL.g:19702:4: ruleLFQN
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeEntityAccess().getEntityValueLEntityLFQNParserRuleCall_1_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleLFQN();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeEntityAccess().getEntityValueLEntityLFQNParserRuleCall_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeEntityAccess().getEntityValueLEntityCrossReference_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeEntity__EntityValueAssignment_1"
+
+
+    // $ANTLR start "rule__CubeEntity__KeyAssignment_2_0"
+    // InternalCubeDSL.g:19713:1: rule__CubeEntity__KeyAssignment_2_0 : ( ( 'key' ) ) ;
+    public final void rule__CubeEntity__KeyAssignment_2_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19717:1: ( ( ( 'key' ) ) )
+            // InternalCubeDSL.g:19718:2: ( ( 'key' ) )
+            {
+            // InternalCubeDSL.g:19718:2: ( ( 'key' ) )
+            // InternalCubeDSL.g:19719:3: ( 'key' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeEntityAccess().getKeyKeyKeyword_2_0_0()); 
+            }
+            // InternalCubeDSL.g:19720:3: ( 'key' )
+            // InternalCubeDSL.g:19721:4: 'key'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeEntityAccess().getKeyKeyKeyword_2_0_0()); 
+            }
+            match(input,121,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeEntityAccess().getKeyKeyKeyword_2_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeEntityAccess().getKeyKeyKeyword_2_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeEntity__KeyAssignment_2_0"
+
+
+    // $ANTLR start "rule__CubeEntity__KeyValueAssignment_2_1"
+    // InternalCubeDSL.g:19732:1: rule__CubeEntity__KeyValueAssignment_2_1 : ( ( ruleLFQN ) ) ;
+    public final void rule__CubeEntity__KeyValueAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19736:1: ( ( ( ruleLFQN ) ) )
+            // InternalCubeDSL.g:19737:2: ( ( ruleLFQN ) )
+            {
+            // InternalCubeDSL.g:19737:2: ( ( ruleLFQN ) )
+            // InternalCubeDSL.g:19738:3: ( ruleLFQN )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeEntityAccess().getKeyValueLEntityFeatureCrossReference_2_1_0()); 
+            }
+            // InternalCubeDSL.g:19739:3: ( ruleLFQN )
+            // InternalCubeDSL.g:19740:4: ruleLFQN
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeEntityAccess().getKeyValueLEntityFeatureLFQNParserRuleCall_2_1_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleLFQN();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeEntityAccess().getKeyValueLEntityFeatureLFQNParserRuleCall_2_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeEntityAccess().getKeyValueLEntityFeatureCrossReference_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeEntity__KeyValueAssignment_2_1"
+
+
+    // $ANTLR start "rule__CubeTypeEntity__EntityRefAssignment_0"
+    // InternalCubeDSL.g:19751:1: rule__CubeTypeEntity__EntityRefAssignment_0 : ( ruleCubeEntity ) ;
+    public final void rule__CubeTypeEntity__EntityRefAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19755:1: ( ( ruleCubeEntity ) )
+            // InternalCubeDSL.g:19756:2: ( ruleCubeEntity )
+            {
+            // InternalCubeDSL.g:19756:2: ( ruleCubeEntity )
+            // InternalCubeDSL.g:19757:3: ruleCubeEntity
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeEntityAccess().getEntityRefCubeEntityParserRuleCall_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleCubeEntity();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeEntityAccess().getEntityRefCubeEntityParserRuleCall_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeTypeEntity__EntityRefAssignment_0"
+
+
+    // $ANTLR start "rule__CubeTypeEntity__DimensionUsagesAssignment_2"
+    // InternalCubeDSL.g:19766:1: rule__CubeTypeEntity__DimensionUsagesAssignment_2 : ( ruleCubeDimensionUsage ) ;
+    public final void rule__CubeTypeEntity__DimensionUsagesAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19770:1: ( ( ruleCubeDimensionUsage ) )
+            // InternalCubeDSL.g:19771:2: ( ruleCubeDimensionUsage )
+            {
+            // InternalCubeDSL.g:19771:2: ( ruleCubeDimensionUsage )
+            // InternalCubeDSL.g:19772:3: ruleCubeDimensionUsage
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeEntityAccess().getDimensionUsagesCubeDimensionUsageParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleCubeDimensionUsage();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeEntityAccess().getDimensionUsagesCubeDimensionUsageParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeTypeEntity__DimensionUsagesAssignment_2"
+
+
+    // $ANTLR start "rule__CubeTypeEntity__MeasuresAssignment_3"
+    // InternalCubeDSL.g:19781:1: rule__CubeTypeEntity__MeasuresAssignment_3 : ( ruleCubeMeasure ) ;
+    public final void rule__CubeTypeEntity__MeasuresAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19785:1: ( ( ruleCubeMeasure ) )
+            // InternalCubeDSL.g:19786:2: ( ruleCubeMeasure )
+            {
+            // InternalCubeDSL.g:19786:2: ( ruleCubeMeasure )
+            // InternalCubeDSL.g:19787:3: ruleCubeMeasure
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeTypeEntityAccess().getMeasuresCubeMeasureParserRuleCall_3_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleCubeMeasure();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeTypeEntityAccess().getMeasuresCubeMeasureParserRuleCall_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeTypeEntity__MeasuresAssignment_3"
+
+
+    // $ANTLR start "rule__CubeDimensionEntity__EntityRefAssignment_1"
+    // InternalCubeDSL.g:19796:1: rule__CubeDimensionEntity__EntityRefAssignment_1 : ( ruleCubeEntity ) ;
+    public final void rule__CubeDimensionEntity__EntityRefAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19800:1: ( ( ruleCubeEntity ) )
+            // InternalCubeDSL.g:19801:2: ( ruleCubeEntity )
+            {
+            // InternalCubeDSL.g:19801:2: ( ruleCubeEntity )
+            // InternalCubeDSL.g:19802:3: ruleCubeEntity
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityAccess().getEntityRefCubeEntityParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleCubeEntity();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityAccess().getEntityRefCubeEntityParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntity__EntityRefAssignment_1"
+
+
+    // $ANTLR start "rule__CubeDimensionEntity__HierarchLevelsAssignment_3"
+    // InternalCubeDSL.g:19811:1: rule__CubeDimensionEntity__HierarchLevelsAssignment_3 : ( ruleCubeLevel ) ;
+    public final void rule__CubeDimensionEntity__HierarchLevelsAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19815:1: ( ( ruleCubeLevel ) )
+            // InternalCubeDSL.g:19816:2: ( ruleCubeLevel )
+            {
+            // InternalCubeDSL.g:19816:2: ( ruleCubeLevel )
+            // InternalCubeDSL.g:19817:3: ruleCubeLevel
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityAccess().getHierarchLevelsCubeLevelParserRuleCall_3_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleCubeLevel();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityAccess().getHierarchLevelsCubeLevelParserRuleCall_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntity__HierarchLevelsAssignment_3"
+
+
+    // $ANTLR start "rule__CubeDimensionEntity__DimEntityAssignment_4"
+    // InternalCubeDSL.g:19826:1: rule__CubeDimensionEntity__DimEntityAssignment_4 : ( ruleCubeDimensionEntityEntity ) ;
+    public final void rule__CubeDimensionEntity__DimEntityAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19830:1: ( ( ruleCubeDimensionEntityEntity ) )
+            // InternalCubeDSL.g:19831:2: ( ruleCubeDimensionEntityEntity )
+            {
+            // InternalCubeDSL.g:19831:2: ( ruleCubeDimensionEntityEntity )
+            // InternalCubeDSL.g:19832:3: ruleCubeDimensionEntityEntity
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityAccess().getDimEntityCubeDimensionEntityEntityParserRuleCall_4_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleCubeDimensionEntityEntity();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityAccess().getDimEntityCubeDimensionEntityEntityParserRuleCall_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntity__DimEntityAssignment_4"
+
+
+    // $ANTLR start "rule__CubeDimensionEntityEntity__EntityRefAssignment_1"
+    // InternalCubeDSL.g:19841:1: rule__CubeDimensionEntityEntity__EntityRefAssignment_1 : ( ruleCubeEntity ) ;
+    public final void rule__CubeDimensionEntityEntity__EntityRefAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19845:1: ( ( ruleCubeEntity ) )
+            // InternalCubeDSL.g:19846:2: ( ruleCubeEntity )
+            {
+            // InternalCubeDSL.g:19846:2: ( ruleCubeEntity )
+            // InternalCubeDSL.g:19847:3: ruleCubeEntity
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityEntityAccess().getEntityRefCubeEntityParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleCubeEntity();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityEntityAccess().getEntityRefCubeEntityParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntityEntity__EntityRefAssignment_1"
+
+
+    // $ANTLR start "rule__CubeDimensionEntityEntity__OverValueAssignment_4"
+    // InternalCubeDSL.g:19856:1: rule__CubeDimensionEntityEntity__OverValueAssignment_4 : ( ( ruleLFQN ) ) ;
+    public final void rule__CubeDimensionEntityEntity__OverValueAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19860:1: ( ( ( ruleLFQN ) ) )
+            // InternalCubeDSL.g:19861:2: ( ( ruleLFQN ) )
+            {
+            // InternalCubeDSL.g:19861:2: ( ( ruleLFQN ) )
+            // InternalCubeDSL.g:19862:3: ( ruleLFQN )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueLEntityFeatureCrossReference_4_0()); 
+            }
+            // InternalCubeDSL.g:19863:3: ( ruleLFQN )
+            // InternalCubeDSL.g:19864:4: ruleLFQN
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueLEntityFeatureLFQNParserRuleCall_4_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleLFQN();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueLEntityFeatureLFQNParserRuleCall_4_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueLEntityFeatureCrossReference_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntityEntity__OverValueAssignment_4"
+
+
+    // $ANTLR start "rule__CubeDimensionEntityEntity__HierarchLevelsAssignment_5"
+    // InternalCubeDSL.g:19875:1: rule__CubeDimensionEntityEntity__HierarchLevelsAssignment_5 : ( ruleCubeLevel ) ;
+    public final void rule__CubeDimensionEntityEntity__HierarchLevelsAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19879:1: ( ( ruleCubeLevel ) )
+            // InternalCubeDSL.g:19880:2: ( ruleCubeLevel )
+            {
+            // InternalCubeDSL.g:19880:2: ( ruleCubeLevel )
+            // InternalCubeDSL.g:19881:3: ruleCubeLevel
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityEntityAccess().getHierarchLevelsCubeLevelParserRuleCall_5_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleCubeLevel();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityEntityAccess().getHierarchLevelsCubeLevelParserRuleCall_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntityEntity__HierarchLevelsAssignment_5"
+
+
+    // $ANTLR start "rule__CubeDimensionEntityEntity__DimEntityAssignment_6"
+    // InternalCubeDSL.g:19890:1: rule__CubeDimensionEntityEntity__DimEntityAssignment_6 : ( ruleCubeDimensionEntityEntity ) ;
+    public final void rule__CubeDimensionEntityEntity__DimEntityAssignment_6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19894:1: ( ( ruleCubeDimensionEntityEntity ) )
+            // InternalCubeDSL.g:19895:2: ( ruleCubeDimensionEntityEntity )
+            {
+            // InternalCubeDSL.g:19895:2: ( ruleCubeDimensionEntityEntity )
+            // InternalCubeDSL.g:19896:3: ruleCubeDimensionEntityEntity
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeDimensionEntityEntityAccess().getDimEntityCubeDimensionEntityEntityParserRuleCall_6_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleCubeDimensionEntityEntity();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeDimensionEntityEntityAccess().getDimEntityCubeDimensionEntityEntityParserRuleCall_6_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeDimensionEntityEntity__DimEntityAssignment_6"
+
+
+    // $ANTLR start "rule__CubeLevel__NameAssignment_1"
+    // InternalCubeDSL.g:19905:1: rule__CubeLevel__NameAssignment_1 : ( ruleTRANSLATABLEID ) ;
+    public final void rule__CubeLevel__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19909:1: ( ( ruleTRANSLATABLEID ) )
+            // InternalCubeDSL.g:19910:2: ( ruleTRANSLATABLEID )
+            {
+            // InternalCubeDSL.g:19910:2: ( ruleTRANSLATABLEID )
+            // InternalCubeDSL.g:19911:3: ruleTRANSLATABLEID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__NameAssignment_1"
+
+
+    // $ANTLR start "rule__CubeLevel__LevelColValueAssignment_3"
+    // InternalCubeDSL.g:19920:1: rule__CubeLevel__LevelColValueAssignment_3 : ( ( ruleLFQN ) ) ;
+    public final void rule__CubeLevel__LevelColValueAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19924:1: ( ( ( ruleLFQN ) ) )
+            // InternalCubeDSL.g:19925:2: ( ( ruleLFQN ) )
+            {
+            // InternalCubeDSL.g:19925:2: ( ( ruleLFQN ) )
+            // InternalCubeDSL.g:19926:3: ( ruleLFQN )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getLevelColValueLEntityFeatureCrossReference_3_0()); 
+            }
+            // InternalCubeDSL.g:19927:3: ( ruleLFQN )
+            // InternalCubeDSL.g:19928:4: ruleLFQN
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getLevelColValueLEntityFeatureLFQNParserRuleCall_3_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleLFQN();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getLevelColValueLEntityFeatureLFQNParserRuleCall_3_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getLevelColValueLEntityFeatureCrossReference_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__LevelColValueAssignment_3"
+
+
+    // $ANTLR start "rule__CubeLevel__UniqueMembersAssignment_4"
+    // InternalCubeDSL.g:19939:1: rule__CubeLevel__UniqueMembersAssignment_4 : ( ( 'uniqueMembers' ) ) ;
+    public final void rule__CubeLevel__UniqueMembersAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19943:1: ( ( ( 'uniqueMembers' ) ) )
+            // InternalCubeDSL.g:19944:2: ( ( 'uniqueMembers' ) )
+            {
+            // InternalCubeDSL.g:19944:2: ( ( 'uniqueMembers' ) )
+            // InternalCubeDSL.g:19945:3: ( 'uniqueMembers' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getUniqueMembersUniqueMembersKeyword_4_0()); 
+            }
+            // InternalCubeDSL.g:19946:3: ( 'uniqueMembers' )
+            // InternalCubeDSL.g:19947:4: 'uniqueMembers'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getUniqueMembersUniqueMembersKeyword_4_0()); 
+            }
+            match(input,122,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getUniqueMembersUniqueMembersKeyword_4_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getUniqueMembersUniqueMembersKeyword_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__UniqueMembersAssignment_4"
+
+
+    // $ANTLR start "rule__CubeLevel__LevelTypeAssignment_5_0"
+    // InternalCubeDSL.g:19958:1: rule__CubeLevel__LevelTypeAssignment_5_0 : ( ( 'levelType' ) ) ;
+    public final void rule__CubeLevel__LevelTypeAssignment_5_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19962:1: ( ( ( 'levelType' ) ) )
+            // InternalCubeDSL.g:19963:2: ( ( 'levelType' ) )
+            {
+            // InternalCubeDSL.g:19963:2: ( ( 'levelType' ) )
+            // InternalCubeDSL.g:19964:3: ( 'levelType' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getLevelTypeLevelTypeKeyword_5_0_0()); 
+            }
+            // InternalCubeDSL.g:19965:3: ( 'levelType' )
+            // InternalCubeDSL.g:19966:4: 'levelType'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getLevelTypeLevelTypeKeyword_5_0_0()); 
+            }
+            match(input,123,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getLevelTypeLevelTypeKeyword_5_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getLevelTypeLevelTypeKeyword_5_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__LevelTypeAssignment_5_0"
+
+
+    // $ANTLR start "rule__CubeLevel__LevelTypeValueAssignment_5_1"
+    // InternalCubeDSL.g:19977:1: rule__CubeLevel__LevelTypeValueAssignment_5_1 : ( ruleCubeLevelLevelType ) ;
+    public final void rule__CubeLevel__LevelTypeValueAssignment_5_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19981:1: ( ( ruleCubeLevelLevelType ) )
+            // InternalCubeDSL.g:19982:2: ( ruleCubeLevelLevelType )
+            {
+            // InternalCubeDSL.g:19982:2: ( ruleCubeLevelLevelType )
+            // InternalCubeDSL.g:19983:3: ruleCubeLevelLevelType
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getLevelTypeValueCubeLevelLevelTypeEnumRuleCall_5_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleCubeLevelLevelType();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getLevelTypeValueCubeLevelLevelTypeEnumRuleCall_5_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__LevelTypeValueAssignment_5_1"
+
+
+    // $ANTLR start "rule__CubeLevel__PropertiesAssignment_6_1"
+    // InternalCubeDSL.g:19992:1: rule__CubeLevel__PropertiesAssignment_6_1 : ( ruleCubeLevelProp ) ;
+    public final void rule__CubeLevel__PropertiesAssignment_6_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:19996:1: ( ( ruleCubeLevelProp ) )
+            // InternalCubeDSL.g:19997:2: ( ruleCubeLevelProp )
+            {
+            // InternalCubeDSL.g:19997:2: ( ruleCubeLevelProp )
+            // InternalCubeDSL.g:19998:3: ruleCubeLevelProp
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelAccess().getPropertiesCubeLevelPropParserRuleCall_6_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleCubeLevelProp();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelAccess().getPropertiesCubeLevelPropParserRuleCall_6_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevel__PropertiesAssignment_6_1"
+
+
+    // $ANTLR start "rule__CubeLevelProp__NameAssignment_1"
+    // InternalCubeDSL.g:20007:1: rule__CubeLevelProp__NameAssignment_1 : ( ruleTRANSLATABLEID ) ;
+    public final void rule__CubeLevelProp__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20011:1: ( ( ruleTRANSLATABLEID ) )
+            // InternalCubeDSL.g:20012:2: ( ruleTRANSLATABLEID )
+            {
+            // InternalCubeDSL.g:20012:2: ( ruleTRANSLATABLEID )
+            // InternalCubeDSL.g:20013:3: ruleTRANSLATABLEID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelPropAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelPropAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevelProp__NameAssignment_1"
+
+
+    // $ANTLR start "rule__CubeLevelProp__LevelPropColValueAssignment_3"
+    // InternalCubeDSL.g:20022:1: rule__CubeLevelProp__LevelPropColValueAssignment_3 : ( ( ruleLFQN ) ) ;
+    public final void rule__CubeLevelProp__LevelPropColValueAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20026:1: ( ( ( ruleLFQN ) ) )
+            // InternalCubeDSL.g:20027:2: ( ( ruleLFQN ) )
+            {
+            // InternalCubeDSL.g:20027:2: ( ( ruleLFQN ) )
+            // InternalCubeDSL.g:20028:3: ( ruleLFQN )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueLEntityFeatureCrossReference_3_0()); 
+            }
+            // InternalCubeDSL.g:20029:3: ( ruleLFQN )
+            // InternalCubeDSL.g:20030:4: ruleLFQN
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueLEntityFeatureLFQNParserRuleCall_3_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleLFQN();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueLEntityFeatureLFQNParserRuleCall_3_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueLEntityFeatureCrossReference_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevelProp__LevelPropColValueAssignment_3"
+
+
+    // $ANTLR start "rule__CubeLevelProp__TypeAssignment_4_0"
+    // InternalCubeDSL.g:20041:1: rule__CubeLevelProp__TypeAssignment_4_0 : ( ( 'type' ) ) ;
+    public final void rule__CubeLevelProp__TypeAssignment_4_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20045:1: ( ( ( 'type' ) ) )
+            // InternalCubeDSL.g:20046:2: ( ( 'type' ) )
+            {
+            // InternalCubeDSL.g:20046:2: ( ( 'type' ) )
+            // InternalCubeDSL.g:20047:3: ( 'type' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelPropAccess().getTypeTypeKeyword_4_0_0()); 
+            }
+            // InternalCubeDSL.g:20048:3: ( 'type' )
+            // InternalCubeDSL.g:20049:4: 'type'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelPropAccess().getTypeTypeKeyword_4_0_0()); 
+            }
+            match(input,124,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelPropAccess().getTypeTypeKeyword_4_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelPropAccess().getTypeTypeKeyword_4_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevelProp__TypeAssignment_4_0"
+
+
+    // $ANTLR start "rule__CubeLevelProp__TypeValueAssignment_4_1"
+    // InternalCubeDSL.g:20060:1: rule__CubeLevelProp__TypeValueAssignment_4_1 : ( ruleCubeLevelPropType ) ;
+    public final void rule__CubeLevelProp__TypeValueAssignment_4_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20064:1: ( ( ruleCubeLevelPropType ) )
+            // InternalCubeDSL.g:20065:2: ( ruleCubeLevelPropType )
+            {
+            // InternalCubeDSL.g:20065:2: ( ruleCubeLevelPropType )
+            // InternalCubeDSL.g:20066:3: ruleCubeLevelPropType
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeLevelPropAccess().getTypeValueCubeLevelPropTypeEnumRuleCall_4_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleCubeLevelPropType();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeLevelPropAccess().getTypeValueCubeLevelPropTypeEnumRuleCall_4_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeLevelProp__TypeValueAssignment_4_1"
+
+
+    // $ANTLR start "rule__CubeMeasure__NameAssignment_1"
+    // InternalCubeDSL.g:20075:1: rule__CubeMeasure__NameAssignment_1 : ( ruleTRANSLATABLEID ) ;
+    public final void rule__CubeMeasure__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20079:1: ( ( ruleTRANSLATABLEID ) )
+            // InternalCubeDSL.g:20080:2: ( ruleTRANSLATABLEID )
+            {
+            // InternalCubeDSL.g:20080:2: ( ruleTRANSLATABLEID )
+            // InternalCubeDSL.g:20081:3: ruleTRANSLATABLEID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeMeasureAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeMeasureAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeMeasure__NameAssignment_1"
+
+
+    // $ANTLR start "rule__CubeMeasure__AggregatorAssignment_2"
+    // InternalCubeDSL.g:20090:1: rule__CubeMeasure__AggregatorAssignment_2 : ( ruleCubeAggregatorEnum ) ;
+    public final void rule__CubeMeasure__AggregatorAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20094:1: ( ( ruleCubeAggregatorEnum ) )
+            // InternalCubeDSL.g:20095:2: ( ruleCubeAggregatorEnum )
+            {
+            // InternalCubeDSL.g:20095:2: ( ruleCubeAggregatorEnum )
+            // InternalCubeDSL.g:20096:3: ruleCubeAggregatorEnum
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeMeasureAccess().getAggregatorCubeAggregatorEnumEnumRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleCubeAggregatorEnum();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeMeasureAccess().getAggregatorCubeAggregatorEnumEnumRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeMeasure__AggregatorAssignment_2"
+
+
+    // $ANTLR start "rule__CubeMeasure__MeasureColAssignment_4"
+    // InternalCubeDSL.g:20105:1: rule__CubeMeasure__MeasureColAssignment_4 : ( ( ruleLFQN ) ) ;
+    public final void rule__CubeMeasure__MeasureColAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20109:1: ( ( ( ruleLFQN ) ) )
+            // InternalCubeDSL.g:20110:2: ( ( ruleLFQN ) )
+            {
+            // InternalCubeDSL.g:20110:2: ( ( ruleLFQN ) )
+            // InternalCubeDSL.g:20111:3: ( ruleLFQN )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeMeasureAccess().getMeasureColLEntityFeatureCrossReference_4_0()); 
+            }
+            // InternalCubeDSL.g:20112:3: ( ruleLFQN )
+            // InternalCubeDSL.g:20113:4: ruleLFQN
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeMeasureAccess().getMeasureColLEntityFeatureLFQNParserRuleCall_4_0_1()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleLFQN();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeMeasureAccess().getMeasureColLEntityFeatureLFQNParserRuleCall_4_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeMeasureAccess().getMeasureColLEntityFeatureCrossReference_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeMeasure__MeasureColAssignment_4"
+
+
+    // $ANTLR start "rule__CubeMeasure__NotVisibleAssignment_5"
+    // InternalCubeDSL.g:20124:1: rule__CubeMeasure__NotVisibleAssignment_5 : ( ( 'notVisible' ) ) ;
+    public final void rule__CubeMeasure__NotVisibleAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20128:1: ( ( ( 'notVisible' ) ) )
+            // InternalCubeDSL.g:20129:2: ( ( 'notVisible' ) )
+            {
+            // InternalCubeDSL.g:20129:2: ( ( 'notVisible' ) )
+            // InternalCubeDSL.g:20130:3: ( 'notVisible' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeMeasureAccess().getNotVisibleNotVisibleKeyword_5_0()); 
+            }
+            // InternalCubeDSL.g:20131:3: ( 'notVisible' )
+            // InternalCubeDSL.g:20132:4: 'notVisible'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getCubeMeasureAccess().getNotVisibleNotVisibleKeyword_5_0()); 
+            }
+            match(input,125,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeMeasureAccess().getNotVisibleNotVisibleKeyword_5_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getCubeMeasureAccess().getNotVisibleNotVisibleKeyword_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__CubeMeasure__NotVisibleAssignment_5"
+
+
+    // $ANTLR start "rule__XImportDeclaration__StaticAssignment_2_0_0"
+    // InternalCubeDSL.g:20143:1: rule__XImportDeclaration__StaticAssignment_2_0_0 : ( ( 'static' ) ) ;
+    public final void rule__XImportDeclaration__StaticAssignment_2_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20147:1: ( ( ( 'static' ) ) )
+            // InternalCubeDSL.g:20148:2: ( ( 'static' ) )
+            {
+            // InternalCubeDSL.g:20148:2: ( ( 'static' ) )
+            // InternalCubeDSL.g:20149:3: ( 'static' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0()); 
+            }
+            // InternalCubeDSL.g:20150:3: ( 'static' )
+            // InternalCubeDSL.g:20151:4: 'static'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0()); 
+            }
+            match(input,46,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"
+    // InternalCubeDSL.g:20162:1: rule__XImportDeclaration__ExtensionAssignment_2_0_1 : ( ( 'extension' ) ) ;
+    public final void rule__XImportDeclaration__ExtensionAssignment_2_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20166:1: ( ( ( 'extension' ) ) )
+            // InternalCubeDSL.g:20167:2: ( ( 'extension' ) )
+            {
+            // InternalCubeDSL.g:20167:2: ( ( 'extension' ) )
+            // InternalCubeDSL.g:20168:3: ( 'extension' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0()); 
+            }
+            // InternalCubeDSL.g:20169:3: ( 'extension' )
+            // InternalCubeDSL.g:20170:4: 'extension'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0()); 
+            }
+            match(input,48,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"
+    // InternalCubeDSL.g:20181:1: rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 : ( ( ruleQualifiedNameInStaticImport ) ) ;
+    public final void rule__XImportDeclaration__ImportedTypeAssignment_2_0_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20185:1: ( ( ( ruleQualifiedNameInStaticImport ) ) )
+            // InternalCubeDSL.g:20186:2: ( ( ruleQualifiedNameInStaticImport ) )
+            {
+            // InternalCubeDSL.g:20186:2: ( ( ruleQualifiedNameInStaticImport ) )
+            // InternalCubeDSL.g:20187:3: ( ruleQualifiedNameInStaticImport )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_0_2_0()); 
+            }
+            // InternalCubeDSL.g:20188:3: ( ruleQualifiedNameInStaticImport )
+            // InternalCubeDSL.g:20189: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"
+    // InternalCubeDSL.g:20200:1: rule__XImportDeclaration__WildcardAssignment_2_0_3_0 : ( ( '*' ) ) ;
+    public final void rule__XImportDeclaration__WildcardAssignment_2_0_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20204:1: ( ( ( '*' ) ) )
+            // InternalCubeDSL.g:20205:2: ( ( '*' ) )
+            {
+            // InternalCubeDSL.g:20205:2: ( ( '*' ) )
+            // InternalCubeDSL.g:20206:3: ( '*' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0()); 
+            }
+            // InternalCubeDSL.g:20207:3: ( '*' )
+            // InternalCubeDSL.g:20208:4: '*'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0()); 
+            }
+            match(input,36,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"
+    // InternalCubeDSL.g:20219: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 {
+            // InternalCubeDSL.g:20223:1: ( ( ruleValidID ) )
+            // InternalCubeDSL.g:20224:2: ( ruleValidID )
+            {
+            // InternalCubeDSL.g:20224:2: ( ruleValidID )
+            // InternalCubeDSL.g:20225: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"
+    // InternalCubeDSL.g:20234:1: rule__XImportDeclaration__ImportedTypeAssignment_2_1 : ( ( ruleQualifiedName ) ) ;
+    public final void rule__XImportDeclaration__ImportedTypeAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20238:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalCubeDSL.g:20239:2: ( ( ruleQualifiedName ) )
+            {
+            // InternalCubeDSL.g:20239:2: ( ( ruleQualifiedName ) )
+            // InternalCubeDSL.g:20240:3: ( ruleQualifiedName )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_1_0()); 
+            }
+            // InternalCubeDSL.g:20241:3: ( ruleQualifiedName )
+            // InternalCubeDSL.g:20242: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"
+    // InternalCubeDSL.g:20253:1: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 : ( ruleQualifiedNameWithWildcard ) ;
+    public final void rule__XImportDeclaration__ImportedNamespaceAssignment_2_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20257:1: ( ( ruleQualifiedNameWithWildcard ) )
+            // InternalCubeDSL.g:20258:2: ( ruleQualifiedNameWithWildcard )
+            {
+            // InternalCubeDSL.g:20258:2: ( ruleQualifiedNameWithWildcard )
+            // InternalCubeDSL.g:20259: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"
+    // InternalCubeDSL.g:20268:1: rule__XImportDeclaration__FqnImportAssignment_2_3_0 : ( ( 'ns' ) ) ;
+    public final void rule__XImportDeclaration__FqnImportAssignment_2_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20272:1: ( ( ( 'ns' ) ) )
+            // InternalCubeDSL.g:20273:2: ( ( 'ns' ) )
+            {
+            // InternalCubeDSL.g:20273:2: ( ( 'ns' ) )
+            // InternalCubeDSL.g:20274:3: ( 'ns' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
+            }
+            // InternalCubeDSL.g:20275:3: ( 'ns' )
+            // InternalCubeDSL.g:20276:4: 'ns'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
+            }
+            match(input,126,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"
+    // InternalCubeDSL.g:20287:1: rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 : ( ruleQualifiedName ) ;
+    public final void rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20291:1: ( ( ruleQualifiedName ) )
+            // InternalCubeDSL.g:20292:2: ( ruleQualifiedName )
+            {
+            // InternalCubeDSL.g:20292:2: ( ruleQualifiedName )
+            // InternalCubeDSL.g:20293: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"
+    // InternalCubeDSL.g:20302:1: rule__XAnnotation__AnnotationTypeAssignment_2 : ( ( ruleQualifiedName ) ) ;
+    public final void rule__XAnnotation__AnnotationTypeAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20306:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalCubeDSL.g:20307:2: ( ( ruleQualifiedName ) )
+            {
+            // InternalCubeDSL.g:20307:2: ( ( ruleQualifiedName ) )
+            // InternalCubeDSL.g:20308:3: ( ruleQualifiedName )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0()); 
+            }
+            // InternalCubeDSL.g:20309:3: ( ruleQualifiedName )
+            // InternalCubeDSL.g:20310: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"
+    // InternalCubeDSL.g:20321: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 {
+            // InternalCubeDSL.g:20325:1: ( ( ruleXAnnotationElementValuePair ) )
+            // InternalCubeDSL.g:20326:2: ( ruleXAnnotationElementValuePair )
+            {
+            // InternalCubeDSL.g:20326:2: ( ruleXAnnotationElementValuePair )
+            // InternalCubeDSL.g:20327: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"
+    // InternalCubeDSL.g:20336: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 {
+            // InternalCubeDSL.g:20340:1: ( ( ruleXAnnotationElementValuePair ) )
+            // InternalCubeDSL.g:20341:2: ( ruleXAnnotationElementValuePair )
+            {
+            // InternalCubeDSL.g:20341:2: ( ruleXAnnotationElementValuePair )
+            // InternalCubeDSL.g:20342: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"
+    // InternalCubeDSL.g:20351:1: rule__XAnnotation__ValueAssignment_3_1_1 : ( ruleXAnnotationElementValueOrCommaList ) ;
+    public final void rule__XAnnotation__ValueAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20355:1: ( ( ruleXAnnotationElementValueOrCommaList ) )
+            // InternalCubeDSL.g:20356:2: ( ruleXAnnotationElementValueOrCommaList )
+            {
+            // InternalCubeDSL.g:20356:2: ( ruleXAnnotationElementValueOrCommaList )
+            // InternalCubeDSL.g:20357: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"
+    // InternalCubeDSL.g:20366:1: rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 : ( ( ruleValidID ) ) ;
+    public final void rule__XAnnotationElementValuePair__ElementAssignment_0_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20370:1: ( ( ( ruleValidID ) ) )
+            // InternalCubeDSL.g:20371:2: ( ( ruleValidID ) )
+            {
+            // InternalCubeDSL.g:20371:2: ( ( ruleValidID ) )
+            // InternalCubeDSL.g:20372:3: ( ruleValidID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0()); 
+            }
+            // InternalCubeDSL.g:20373:3: ( ruleValidID )
+            // InternalCubeDSL.g:20374: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"
+    // InternalCubeDSL.g:20385:1: rule__XAnnotationElementValuePair__ValueAssignment_1 : ( ruleXAnnotationElementValue ) ;
+    public final void rule__XAnnotationElementValuePair__ValueAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20389:1: ( ( ruleXAnnotationElementValue ) )
+            // InternalCubeDSL.g:20390:2: ( ruleXAnnotationElementValue )
+            {
+            // InternalCubeDSL.g:20390:2: ( ruleXAnnotationElementValue )
+            // InternalCubeDSL.g:20391: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"
+    // InternalCubeDSL.g:20400:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20404:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalCubeDSL.g:20405:2: ( ruleXAnnotationOrExpression )
+            {
+            // InternalCubeDSL.g:20405:2: ( ruleXAnnotationOrExpression )
+            // InternalCubeDSL.g:20406: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"
+    // InternalCubeDSL.g:20415: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 {
+            // InternalCubeDSL.g:20419:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalCubeDSL.g:20420:2: ( ruleXAnnotationOrExpression )
+            {
+            // InternalCubeDSL.g:20420:2: ( ruleXAnnotationOrExpression )
+            // InternalCubeDSL.g:20421: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"
+    // InternalCubeDSL.g:20430: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 {
+            // InternalCubeDSL.g:20434:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalCubeDSL.g:20435:2: ( ruleXAnnotationOrExpression )
+            {
+            // InternalCubeDSL.g:20435:2: ( ruleXAnnotationOrExpression )
+            // InternalCubeDSL.g:20436: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"
+    // InternalCubeDSL.g:20445:1: rule__XAnnotationElementValue__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
+    public final void rule__XAnnotationElementValue__ElementsAssignment_0_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20449:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalCubeDSL.g:20450:2: ( ruleXAnnotationOrExpression )
+            {
+            // InternalCubeDSL.g:20450:2: ( ruleXAnnotationOrExpression )
+            // InternalCubeDSL.g:20451: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"
+    // InternalCubeDSL.g:20460: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 {
+            // InternalCubeDSL.g:20464:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalCubeDSL.g:20465:2: ( ruleXAnnotationOrExpression )
+            {
+            // InternalCubeDSL.g:20465:2: ( ruleXAnnotationOrExpression )
+            // InternalCubeDSL.g:20466: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"
+    // InternalCubeDSL.g:20475:1: rule__XAssignment__FeatureAssignment_0_1 : ( ( ruleFeatureCallID ) ) ;
+    public final void rule__XAssignment__FeatureAssignment_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20479:1: ( ( ( ruleFeatureCallID ) ) )
+            // InternalCubeDSL.g:20480:2: ( ( ruleFeatureCallID ) )
+            {
+            // InternalCubeDSL.g:20480:2: ( ( ruleFeatureCallID ) )
+            // InternalCubeDSL.g:20481:3: ( ruleFeatureCallID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
+            }
+            // InternalCubeDSL.g:20482:3: ( ruleFeatureCallID )
+            // InternalCubeDSL.g:20483: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"
+    // InternalCubeDSL.g:20494:1: rule__XAssignment__ValueAssignment_0_3 : ( ruleXAssignment ) ;
+    public final void rule__XAssignment__ValueAssignment_0_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20498:1: ( ( ruleXAssignment ) )
+            // InternalCubeDSL.g:20499:2: ( ruleXAssignment )
+            {
+            // InternalCubeDSL.g:20499:2: ( ruleXAssignment )
+            // InternalCubeDSL.g:20500: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"
+    // InternalCubeDSL.g:20509: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 {
+            // InternalCubeDSL.g:20513:1: ( ( ( ruleOpMultiAssign ) ) )
+            // InternalCubeDSL.g:20514:2: ( ( ruleOpMultiAssign ) )
+            {
+            // InternalCubeDSL.g:20514:2: ( ( ruleOpMultiAssign ) )
+            // InternalCubeDSL.g:20515:3: ( ruleOpMultiAssign )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
+            }
+            // InternalCubeDSL.g:20516:3: ( ruleOpMultiAssign )
+            // InternalCubeDSL.g:20517: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"
+    // InternalCubeDSL.g:20528:1: rule__XAssignment__RightOperandAssignment_1_1_1 : ( ruleXAssignment ) ;
+    public final void rule__XAssignment__RightOperandAssignment_1_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20532:1: ( ( ruleXAssignment ) )
+            // InternalCubeDSL.g:20533:2: ( ruleXAssignment )
+            {
+            // InternalCubeDSL.g:20533:2: ( ruleXAssignment )
+            // InternalCubeDSL.g:20534: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"
+    // InternalCubeDSL.g:20543: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 {
+            // InternalCubeDSL.g:20547:1: ( ( ( ruleOpOr ) ) )
+            // InternalCubeDSL.g:20548:2: ( ( ruleOpOr ) )
+            {
+            // InternalCubeDSL.g:20548:2: ( ( ruleOpOr ) )
+            // InternalCubeDSL.g:20549:3: ( ruleOpOr )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalCubeDSL.g:20550:3: ( ruleOpOr )
+            // InternalCubeDSL.g:20551: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"
+    // InternalCubeDSL.g:20562:1: rule__XOrExpression__RightOperandAssignment_1_1 : ( ruleXAndExpression ) ;
+    public final void rule__XOrExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20566:1: ( ( ruleXAndExpression ) )
+            // InternalCubeDSL.g:20567:2: ( ruleXAndExpression )
+            {
+            // InternalCubeDSL.g:20567:2: ( ruleXAndExpression )
+            // InternalCubeDSL.g:20568: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"
+    // InternalCubeDSL.g:20577: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 {
+            // InternalCubeDSL.g:20581:1: ( ( ( ruleOpAnd ) ) )
+            // InternalCubeDSL.g:20582:2: ( ( ruleOpAnd ) )
+            {
+            // InternalCubeDSL.g:20582:2: ( ( ruleOpAnd ) )
+            // InternalCubeDSL.g:20583:3: ( ruleOpAnd )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalCubeDSL.g:20584:3: ( ruleOpAnd )
+            // InternalCubeDSL.g:20585: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"
+    // InternalCubeDSL.g:20596:1: rule__XAndExpression__RightOperandAssignment_1_1 : ( ruleXEqualityExpression ) ;
+    public final void rule__XAndExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20600:1: ( ( ruleXEqualityExpression ) )
+            // InternalCubeDSL.g:20601:2: ( ruleXEqualityExpression )
+            {
+            // InternalCubeDSL.g:20601:2: ( ruleXEqualityExpression )
+            // InternalCubeDSL.g:20602: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"
+    // InternalCubeDSL.g:20611: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 {
+            // InternalCubeDSL.g:20615:1: ( ( ( ruleOpEquality ) ) )
+            // InternalCubeDSL.g:20616:2: ( ( ruleOpEquality ) )
+            {
+            // InternalCubeDSL.g:20616:2: ( ( ruleOpEquality ) )
+            // InternalCubeDSL.g:20617:3: ( ruleOpEquality )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalCubeDSL.g:20618:3: ( ruleOpEquality )
+            // InternalCubeDSL.g:20619: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"
+    // InternalCubeDSL.g:20630:1: rule__XEqualityExpression__RightOperandAssignment_1_1 : ( ruleXRelationalExpression ) ;
+    public final void rule__XEqualityExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20634:1: ( ( ruleXRelationalExpression ) )
+            // InternalCubeDSL.g:20635:2: ( ruleXRelationalExpression )
+            {
+            // InternalCubeDSL.g:20635:2: ( ruleXRelationalExpression )
+            // InternalCubeDSL.g:20636: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"
+    // InternalCubeDSL.g:20645:1: rule__XRelationalExpression__TypeAssignment_1_0_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__XRelationalExpression__TypeAssignment_1_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20649:1: ( ( ruleJvmTypeReference ) )
+            // InternalCubeDSL.g:20650:2: ( ruleJvmTypeReference )
+            {
+            // InternalCubeDSL.g:20650:2: ( ruleJvmTypeReference )
+            // InternalCubeDSL.g:20651: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"
+    // InternalCubeDSL.g:20660: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 {
+            // InternalCubeDSL.g:20664:1: ( ( ( ruleOpCompare ) ) )
+            // InternalCubeDSL.g:20665:2: ( ( ruleOpCompare ) )
+            {
+            // InternalCubeDSL.g:20665:2: ( ( ruleOpCompare ) )
+            // InternalCubeDSL.g:20666:3: ( ruleOpCompare )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
+            }
+            // InternalCubeDSL.g:20667:3: ( ruleOpCompare )
+            // InternalCubeDSL.g:20668: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"
+    // InternalCubeDSL.g:20679:1: rule__XRelationalExpression__RightOperandAssignment_1_1_1 : ( ruleXOtherOperatorExpression ) ;
+    public final void rule__XRelationalExpression__RightOperandAssignment_1_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20683:1: ( ( ruleXOtherOperatorExpression ) )
+            // InternalCubeDSL.g:20684:2: ( ruleXOtherOperatorExpression )
+            {
+            // InternalCubeDSL.g:20684:2: ( ruleXOtherOperatorExpression )
+            // InternalCubeDSL.g:20685: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"
+    // InternalCubeDSL.g:20694: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 {
+            // InternalCubeDSL.g:20698:1: ( ( ( ruleOpOther ) ) )
+            // InternalCubeDSL.g:20699:2: ( ( ruleOpOther ) )
+            {
+            // InternalCubeDSL.g:20699:2: ( ( ruleOpOther ) )
+            // InternalCubeDSL.g:20700:3: ( ruleOpOther )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalCubeDSL.g:20701:3: ( ruleOpOther )
+            // InternalCubeDSL.g:20702: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"
+    // InternalCubeDSL.g:20713:1: rule__XOtherOperatorExpression__RightOperandAssignment_1_1 : ( ruleXAdditiveExpression ) ;
+    public final void rule__XOtherOperatorExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20717:1: ( ( ruleXAdditiveExpression ) )
+            // InternalCubeDSL.g:20718:2: ( ruleXAdditiveExpression )
+            {
+            // InternalCubeDSL.g:20718:2: ( ruleXAdditiveExpression )
+            // InternalCubeDSL.g:20719: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"
+    // InternalCubeDSL.g:20728: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 {
+            // InternalCubeDSL.g:20732:1: ( ( ( ruleOpAdd ) ) )
+            // InternalCubeDSL.g:20733:2: ( ( ruleOpAdd ) )
+            {
+            // InternalCubeDSL.g:20733:2: ( ( ruleOpAdd ) )
+            // InternalCubeDSL.g:20734:3: ( ruleOpAdd )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalCubeDSL.g:20735:3: ( ruleOpAdd )
+            // InternalCubeDSL.g:20736: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"
+    // InternalCubeDSL.g:20747:1: rule__XAdditiveExpression__RightOperandAssignment_1_1 : ( ruleXMultiplicativeExpression ) ;
+    public final void rule__XAdditiveExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20751:1: ( ( ruleXMultiplicativeExpression ) )
+            // InternalCubeDSL.g:20752:2: ( ruleXMultiplicativeExpression )
+            {
+            // InternalCubeDSL.g:20752:2: ( ruleXMultiplicativeExpression )
+            // InternalCubeDSL.g:20753: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"
+    // InternalCubeDSL.g:20762: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 {
+            // InternalCubeDSL.g:20766:1: ( ( ( ruleOpMulti ) ) )
+            // InternalCubeDSL.g:20767:2: ( ( ruleOpMulti ) )
+            {
+            // InternalCubeDSL.g:20767:2: ( ( ruleOpMulti ) )
+            // InternalCubeDSL.g:20768:3: ( ruleOpMulti )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalCubeDSL.g:20769:3: ( ruleOpMulti )
+            // InternalCubeDSL.g:20770: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"
+    // InternalCubeDSL.g:20781:1: rule__XMultiplicativeExpression__RightOperandAssignment_1_1 : ( ruleXUnaryOperation ) ;
+    public final void rule__XMultiplicativeExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20785:1: ( ( ruleXUnaryOperation ) )
+            // InternalCubeDSL.g:20786:2: ( ruleXUnaryOperation )
+            {
+            // InternalCubeDSL.g:20786:2: ( ruleXUnaryOperation )
+            // InternalCubeDSL.g:20787: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"
+    // InternalCubeDSL.g:20796:1: rule__XUnaryOperation__FeatureAssignment_0_1 : ( ( ruleOpUnary ) ) ;
+    public final void rule__XUnaryOperation__FeatureAssignment_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20800:1: ( ( ( ruleOpUnary ) ) )
+            // InternalCubeDSL.g:20801:2: ( ( ruleOpUnary ) )
+            {
+            // InternalCubeDSL.g:20801:2: ( ( ruleOpUnary ) )
+            // InternalCubeDSL.g:20802:3: ( ruleOpUnary )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
+            }
+            // InternalCubeDSL.g:20803:3: ( ruleOpUnary )
+            // InternalCubeDSL.g:20804: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"
+    // InternalCubeDSL.g:20815:1: rule__XUnaryOperation__OperandAssignment_0_2 : ( ruleXUnaryOperation ) ;
+    public final void rule__XUnaryOperation__OperandAssignment_0_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20819:1: ( ( ruleXUnaryOperation ) )
+            // InternalCubeDSL.g:20820:2: ( ruleXUnaryOperation )
+            {
+            // InternalCubeDSL.g:20820:2: ( ruleXUnaryOperation )
+            // InternalCubeDSL.g:20821: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"
+    // InternalCubeDSL.g:20830:1: rule__XCastedExpression__TypeAssignment_1_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__XCastedExpression__TypeAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20834:1: ( ( ruleJvmTypeReference ) )
+            // InternalCubeDSL.g:20835:2: ( ruleJvmTypeReference )
+            {
+            // InternalCubeDSL.g:20835:2: ( ruleJvmTypeReference )
+            // InternalCubeDSL.g:20836: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"
+    // InternalCubeDSL.g:20845:1: rule__XPostfixOperation__FeatureAssignment_1_0_1 : ( ( ruleOpPostfix ) ) ;
+    public final void rule__XPostfixOperation__FeatureAssignment_1_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20849:1: ( ( ( ruleOpPostfix ) ) )
+            // InternalCubeDSL.g:20850:2: ( ( ruleOpPostfix ) )
+            {
+            // InternalCubeDSL.g:20850:2: ( ( ruleOpPostfix ) )
+            // InternalCubeDSL.g:20851:3: ( ruleOpPostfix )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0()); 
+            }
+            // InternalCubeDSL.g:20852:3: ( ruleOpPostfix )
+            // InternalCubeDSL.g:20853: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"
+    // InternalCubeDSL.g:20864: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 {
+            // InternalCubeDSL.g:20868:1: ( ( ( '::' ) ) )
+            // InternalCubeDSL.g:20869:2: ( ( '::' ) )
+            {
+            // InternalCubeDSL.g:20869:2: ( ( '::' ) )
+            // InternalCubeDSL.g:20870:3: ( '::' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
+            }
+            // InternalCubeDSL.g:20871:3: ( '::' )
+            // InternalCubeDSL.g:20872:4: '::'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
+            }
+            match(input,127,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"
+    // InternalCubeDSL.g:20883: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 {
+            // InternalCubeDSL.g:20887:1: ( ( ( ruleFeatureCallID ) ) )
+            // InternalCubeDSL.g:20888:2: ( ( ruleFeatureCallID ) )
+            {
+            // InternalCubeDSL.g:20888:2: ( ( ruleFeatureCallID ) )
+            // InternalCubeDSL.g:20889:3: ( ruleFeatureCallID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0()); 
+            }
+            // InternalCubeDSL.g:20890:3: ( ruleFeatureCallID )
+            // InternalCubeDSL.g:20891: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"
+    // InternalCubeDSL.g:20902:1: rule__XMemberFeatureCall__ValueAssignment_1_0_1 : ( ruleXAssignment ) ;
+    public final void rule__XMemberFeatureCall__ValueAssignment_1_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20906:1: ( ( ruleXAssignment ) )
+            // InternalCubeDSL.g:20907:2: ( ruleXAssignment )
+            {
+            // InternalCubeDSL.g:20907:2: ( ruleXAssignment )
+            // InternalCubeDSL.g:20908: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"
+    // InternalCubeDSL.g:20917: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 {
+            // InternalCubeDSL.g:20921:1: ( ( ( '?.' ) ) )
+            // InternalCubeDSL.g:20922:2: ( ( '?.' ) )
+            {
+            // InternalCubeDSL.g:20922:2: ( ( '?.' ) )
+            // InternalCubeDSL.g:20923:3: ( '?.' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
+            }
+            // InternalCubeDSL.g:20924:3: ( '?.' )
+            // InternalCubeDSL.g:20925:4: '?.'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
+            }
+            match(input,128,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"
+    // InternalCubeDSL.g:20936: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 {
+            // InternalCubeDSL.g:20940:1: ( ( ( '::' ) ) )
+            // InternalCubeDSL.g:20941:2: ( ( '::' ) )
+            {
+            // InternalCubeDSL.g:20941:2: ( ( '::' ) )
+            // InternalCubeDSL.g:20942:3: ( '::' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
+            }
+            // InternalCubeDSL.g:20943:3: ( '::' )
+            // InternalCubeDSL.g:20944:4: '::'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
+            }
+            match(input,127,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"
+    // InternalCubeDSL.g:20955: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 {
+            // InternalCubeDSL.g:20959:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalCubeDSL.g:20960:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalCubeDSL.g:20960:2: ( ruleJvmArgumentTypeReference )
+            // InternalCubeDSL.g:20961: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"
+    // InternalCubeDSL.g:20970: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 {
+            // InternalCubeDSL.g:20974:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalCubeDSL.g:20975:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalCubeDSL.g:20975:2: ( ruleJvmArgumentTypeReference )
+            // InternalCubeDSL.g:20976: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"
+    // InternalCubeDSL.g:20985:1: rule__XMemberFeatureCall__FeatureAssignment_1_1_2 : ( ( ruleIdOrSuper ) ) ;
+    public final void rule__XMemberFeatureCall__FeatureAssignment_1_1_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:20989:1: ( ( ( ruleIdOrSuper ) ) )
+            // InternalCubeDSL.g:20990:2: ( ( ruleIdOrSuper ) )
+            {
+            // InternalCubeDSL.g:20990:2: ( ( ruleIdOrSuper ) )
+            // InternalCubeDSL.g:20991:3: ( ruleIdOrSuper )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0()); 
+            }
+            // InternalCubeDSL.g:20992:3: ( ruleIdOrSuper )
+            // InternalCubeDSL.g:20993: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"
+    // InternalCubeDSL.g:21004:1: rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 : ( ( '(' ) ) ;
+    public final void rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21008:1: ( ( ( '(' ) ) )
+            // InternalCubeDSL.g:21009:2: ( ( '(' ) )
+            {
+            // InternalCubeDSL.g:21009:2: ( ( '(' ) )
+            // InternalCubeDSL.g:21010:3: ( '(' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
+            }
+            // InternalCubeDSL.g:21011:3: ( '(' )
+            // InternalCubeDSL.g:21012:4: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
+            }
+            match(input,88,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"
+    // InternalCubeDSL.g:21023: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 {
+            // InternalCubeDSL.g:21027:1: ( ( ruleXShortClosure ) )
+            // InternalCubeDSL.g:21028:2: ( ruleXShortClosure )
+            {
+            // InternalCubeDSL.g:21028:2: ( ruleXShortClosure )
+            // InternalCubeDSL.g:21029: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"
+    // InternalCubeDSL.g:21038: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 {
+            // InternalCubeDSL.g:21042:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21043:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21043:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21044: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"
+    // InternalCubeDSL.g:21053: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 {
+            // InternalCubeDSL.g:21057:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21058:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21058:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21059: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"
+    // InternalCubeDSL.g:21068:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 : ( ruleXClosure ) ;
+    public final void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21072:1: ( ( ruleXClosure ) )
+            // InternalCubeDSL.g:21073:2: ( ruleXClosure )
+            {
+            // InternalCubeDSL.g:21073:2: ( ruleXClosure )
+            // InternalCubeDSL.g:21074: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"
+    // InternalCubeDSL.g:21083:1: rule__XSetLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
+    public final void rule__XSetLiteral__ElementsAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21087:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21088:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21088:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21089: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"
+    // InternalCubeDSL.g:21098:1: rule__XSetLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
+    public final void rule__XSetLiteral__ElementsAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21102:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21103:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21103:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21104: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"
+    // InternalCubeDSL.g:21113:1: rule__XListLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
+    public final void rule__XListLiteral__ElementsAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21117:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21118:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21118:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21119: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"
+    // InternalCubeDSL.g:21128:1: rule__XListLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
+    public final void rule__XListLiteral__ElementsAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21132:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21133:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21133:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21134: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"
+    // InternalCubeDSL.g:21143: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 {
+            // InternalCubeDSL.g:21147:1: ( ( ruleJvmFormalParameter ) )
+            // InternalCubeDSL.g:21148:2: ( ruleJvmFormalParameter )
+            {
+            // InternalCubeDSL.g:21148:2: ( ruleJvmFormalParameter )
+            // InternalCubeDSL.g:21149: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"
+    // InternalCubeDSL.g:21158: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 {
+            // InternalCubeDSL.g:21162:1: ( ( ruleJvmFormalParameter ) )
+            // InternalCubeDSL.g:21163:2: ( ruleJvmFormalParameter )
+            {
+            // InternalCubeDSL.g:21163:2: ( ruleJvmFormalParameter )
+            // InternalCubeDSL.g:21164: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"
+    // InternalCubeDSL.g:21173:1: rule__XClosure__ExplicitSyntaxAssignment_1_0_1 : ( ( '|' ) ) ;
+    public final void rule__XClosure__ExplicitSyntaxAssignment_1_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21177:1: ( ( ( '|' ) ) )
+            // InternalCubeDSL.g:21178:2: ( ( '|' ) )
+            {
+            // InternalCubeDSL.g:21178:2: ( ( '|' ) )
+            // InternalCubeDSL.g:21179:3: ( '|' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
+            }
+            // InternalCubeDSL.g:21180:3: ( '|' )
+            // InternalCubeDSL.g:21181:4: '|'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
+            }
+            match(input,129,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"
+    // InternalCubeDSL.g:21192:1: rule__XClosure__ExpressionAssignment_2 : ( ruleXExpressionInClosure ) ;
+    public final void rule__XClosure__ExpressionAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21196:1: ( ( ruleXExpressionInClosure ) )
+            // InternalCubeDSL.g:21197:2: ( ruleXExpressionInClosure )
+            {
+            // InternalCubeDSL.g:21197:2: ( ruleXExpressionInClosure )
+            // InternalCubeDSL.g:21198: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"
+    // InternalCubeDSL.g:21207:1: rule__XExpressionInClosure__ExpressionsAssignment_1_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    public final void rule__XExpressionInClosure__ExpressionsAssignment_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21211:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalCubeDSL.g:21212:2: ( ruleXExpressionOrVarDeclaration )
+            {
+            // InternalCubeDSL.g:21212:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalCubeDSL.g:21213: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"
+    // InternalCubeDSL.g:21222: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 {
+            // InternalCubeDSL.g:21226:1: ( ( ruleJvmFormalParameter ) )
+            // InternalCubeDSL.g:21227:2: ( ruleJvmFormalParameter )
+            {
+            // InternalCubeDSL.g:21227:2: ( ruleJvmFormalParameter )
+            // InternalCubeDSL.g:21228: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"
+    // InternalCubeDSL.g:21237: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 {
+            // InternalCubeDSL.g:21241:1: ( ( ruleJvmFormalParameter ) )
+            // InternalCubeDSL.g:21242:2: ( ruleJvmFormalParameter )
+            {
+            // InternalCubeDSL.g:21242:2: ( ruleJvmFormalParameter )
+            // InternalCubeDSL.g:21243: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"
+    // InternalCubeDSL.g:21252:1: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 : ( ( '|' ) ) ;
+    public final void rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21256:1: ( ( ( '|' ) ) )
+            // InternalCubeDSL.g:21257:2: ( ( '|' ) )
+            {
+            // InternalCubeDSL.g:21257:2: ( ( '|' ) )
+            // InternalCubeDSL.g:21258:3: ( '|' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
+            }
+            // InternalCubeDSL.g:21259:3: ( '|' )
+            // InternalCubeDSL.g:21260:4: '|'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
+            }
+            match(input,129,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"
+    // InternalCubeDSL.g:21271:1: rule__XShortClosure__ExpressionAssignment_1 : ( ruleXExpression ) ;
+    public final void rule__XShortClosure__ExpressionAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21275:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21276:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21276:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21277: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"
+    // InternalCubeDSL.g:21286:1: rule__XIfExpression__IfAssignment_3 : ( ruleXExpression ) ;
+    public final void rule__XIfExpression__IfAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21290:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21291:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21291:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21292: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"
+    // InternalCubeDSL.g:21301:1: rule__XIfExpression__ThenAssignment_5 : ( ruleXExpression ) ;
+    public final void rule__XIfExpression__ThenAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21305:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21306:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21306:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21307: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"
+    // InternalCubeDSL.g:21316:1: rule__XIfExpression__ElseAssignment_6_1 : ( ruleXExpression ) ;
+    public final void rule__XIfExpression__ElseAssignment_6_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21320:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21321:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21321:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21322: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"
+    // InternalCubeDSL.g:21331: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 {
+            // InternalCubeDSL.g:21335:1: ( ( ruleJvmFormalParameter ) )
+            // InternalCubeDSL.g:21336:2: ( ruleJvmFormalParameter )
+            {
+            // InternalCubeDSL.g:21336:2: ( ruleJvmFormalParameter )
+            // InternalCubeDSL.g:21337: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"
+    // InternalCubeDSL.g:21346:1: rule__XSwitchExpression__SwitchAssignment_2_0_1 : ( ruleXExpression ) ;
+    public final void rule__XSwitchExpression__SwitchAssignment_2_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21350:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21351:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21351:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21352: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"
+    // InternalCubeDSL.g:21361: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 {
+            // InternalCubeDSL.g:21365:1: ( ( ruleJvmFormalParameter ) )
+            // InternalCubeDSL.g:21366:2: ( ruleJvmFormalParameter )
+            {
+            // InternalCubeDSL.g:21366:2: ( ruleJvmFormalParameter )
+            // InternalCubeDSL.g:21367: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"
+    // InternalCubeDSL.g:21376:1: rule__XSwitchExpression__SwitchAssignment_2_1_1 : ( ruleXExpression ) ;
+    public final void rule__XSwitchExpression__SwitchAssignment_2_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21380:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21381:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21381:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21382: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"
+    // InternalCubeDSL.g:21391:1: rule__XSwitchExpression__CasesAssignment_4 : ( ruleXCasePart ) ;
+    public final void rule__XSwitchExpression__CasesAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21395:1: ( ( ruleXCasePart ) )
+            // InternalCubeDSL.g:21396:2: ( ruleXCasePart )
+            {
+            // InternalCubeDSL.g:21396:2: ( ruleXCasePart )
+            // InternalCubeDSL.g:21397: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"
+    // InternalCubeDSL.g:21406:1: rule__XSwitchExpression__DefaultAssignment_5_2 : ( ruleXExpression ) ;
+    public final void rule__XSwitchExpression__DefaultAssignment_5_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21410:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21411:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21411:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21412: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"
+    // InternalCubeDSL.g:21421:1: rule__XCasePart__TypeGuardAssignment_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__XCasePart__TypeGuardAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21425:1: ( ( ruleJvmTypeReference ) )
+            // InternalCubeDSL.g:21426:2: ( ruleJvmTypeReference )
+            {
+            // InternalCubeDSL.g:21426:2: ( ruleJvmTypeReference )
+            // InternalCubeDSL.g:21427: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"
+    // InternalCubeDSL.g:21436:1: rule__XCasePart__CaseAssignment_2_1 : ( ruleXExpression ) ;
+    public final void rule__XCasePart__CaseAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21440:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21441:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21441:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21442: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"
+    // InternalCubeDSL.g:21451:1: rule__XCasePart__ThenAssignment_3_0_1 : ( ruleXExpression ) ;
+    public final void rule__XCasePart__ThenAssignment_3_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21455:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21456:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21456:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21457: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"
+    // InternalCubeDSL.g:21466:1: rule__XCasePart__FallThroughAssignment_3_1 : ( ( ',' ) ) ;
+    public final void rule__XCasePart__FallThroughAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21470:1: ( ( ( ',' ) ) )
+            // InternalCubeDSL.g:21471:2: ( ( ',' ) )
+            {
+            // InternalCubeDSL.g:21471:2: ( ( ',' ) )
+            // InternalCubeDSL.g:21472:3: ( ',' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
+            }
+            // InternalCubeDSL.g:21473:3: ( ',' )
+            // InternalCubeDSL.g:21474:4: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
+            }
+            match(input,90,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"
+    // InternalCubeDSL.g:21485:1: rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 : ( ruleJvmFormalParameter ) ;
+    public final void rule__XForLoopExpression__DeclaredParamAssignment_0_0_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21489:1: ( ( ruleJvmFormalParameter ) )
+            // InternalCubeDSL.g:21490:2: ( ruleJvmFormalParameter )
+            {
+            // InternalCubeDSL.g:21490:2: ( ruleJvmFormalParameter )
+            // InternalCubeDSL.g:21491: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"
+    // InternalCubeDSL.g:21500:1: rule__XForLoopExpression__ForExpressionAssignment_1 : ( ruleXExpression ) ;
+    public final void rule__XForLoopExpression__ForExpressionAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21504:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21505:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21505:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21506: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"
+    // InternalCubeDSL.g:21515:1: rule__XForLoopExpression__EachExpressionAssignment_3 : ( ruleXExpression ) ;
+    public final void rule__XForLoopExpression__EachExpressionAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21519:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21520:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21520:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21521: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"
+    // InternalCubeDSL.g:21530:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    public final void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21534:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalCubeDSL.g:21535:2: ( ruleXExpressionOrVarDeclaration )
+            {
+            // InternalCubeDSL.g:21535:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalCubeDSL.g:21536: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"
+    // InternalCubeDSL.g:21545:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 : ( ruleXExpressionOrVarDeclaration ) ;
+    public final void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21549:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalCubeDSL.g:21550:2: ( ruleXExpressionOrVarDeclaration )
+            {
+            // InternalCubeDSL.g:21550:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalCubeDSL.g:21551: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"
+    // InternalCubeDSL.g:21560:1: rule__XBasicForLoopExpression__ExpressionAssignment_5 : ( ruleXExpression ) ;
+    public final void rule__XBasicForLoopExpression__ExpressionAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21564:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21565:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21565:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21566: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"
+    // InternalCubeDSL.g:21575:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 : ( ruleXExpression ) ;
+    public final void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21579:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21580:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21580:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21581: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"
+    // InternalCubeDSL.g:21590:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 : ( ruleXExpression ) ;
+    public final void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21594:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21595:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21595:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21596: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"
+    // InternalCubeDSL.g:21605:1: rule__XBasicForLoopExpression__EachExpressionAssignment_9 : ( ruleXExpression ) ;
+    public final void rule__XBasicForLoopExpression__EachExpressionAssignment_9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21609:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21610:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21610:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21611: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"
+    // InternalCubeDSL.g:21620:1: rule__XWhileExpression__PredicateAssignment_3 : ( ruleXExpression ) ;
+    public final void rule__XWhileExpression__PredicateAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21624:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21625:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21625:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21626: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"
+    // InternalCubeDSL.g:21635:1: rule__XWhileExpression__BodyAssignment_5 : ( ruleXExpression ) ;
+    public final void rule__XWhileExpression__BodyAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21639:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21640:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21640:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21641: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"
+    // InternalCubeDSL.g:21650:1: rule__XDoWhileExpression__BodyAssignment_2 : ( ruleXExpression ) ;
+    public final void rule__XDoWhileExpression__BodyAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21654:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21655:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21655:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21656: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"
+    // InternalCubeDSL.g:21665:1: rule__XDoWhileExpression__PredicateAssignment_5 : ( ruleXExpression ) ;
+    public final void rule__XDoWhileExpression__PredicateAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21669:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21670:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21670:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21671: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"
+    // InternalCubeDSL.g:21680:1: rule__XBlockExpression__ExpressionsAssignment_2_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    public final void rule__XBlockExpression__ExpressionsAssignment_2_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21684:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalCubeDSL.g:21685:2: ( ruleXExpressionOrVarDeclaration )
+            {
+            // InternalCubeDSL.g:21685:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalCubeDSL.g:21686: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"
+    // InternalCubeDSL.g:21695:1: rule__XVariableDeclaration__WriteableAssignment_1_0 : ( ( 'var' ) ) ;
+    public final void rule__XVariableDeclaration__WriteableAssignment_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21699:1: ( ( ( 'var' ) ) )
+            // InternalCubeDSL.g:21700:2: ( ( 'var' ) )
+            {
+            // InternalCubeDSL.g:21700:2: ( ( 'var' ) )
+            // InternalCubeDSL.g:21701:3: ( 'var' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
+            }
+            // InternalCubeDSL.g:21702:3: ( 'var' )
+            // InternalCubeDSL.g:21703:4: 'var'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
+            }
+            match(input,130,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"
+    // InternalCubeDSL.g:21714: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 {
+            // InternalCubeDSL.g:21718:1: ( ( ruleJvmTypeReference ) )
+            // InternalCubeDSL.g:21719:2: ( ruleJvmTypeReference )
+            {
+            // InternalCubeDSL.g:21719:2: ( ruleJvmTypeReference )
+            // InternalCubeDSL.g:21720: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"
+    // InternalCubeDSL.g:21729: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 {
+            // InternalCubeDSL.g:21733:1: ( ( ruleValidID ) )
+            // InternalCubeDSL.g:21734:2: ( ruleValidID )
+            {
+            // InternalCubeDSL.g:21734:2: ( ruleValidID )
+            // InternalCubeDSL.g:21735: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"
+    // InternalCubeDSL.g:21744:1: rule__XVariableDeclaration__NameAssignment_2_1 : ( ruleValidID ) ;
+    public final void rule__XVariableDeclaration__NameAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21748:1: ( ( ruleValidID ) )
+            // InternalCubeDSL.g:21749:2: ( ruleValidID )
+            {
+            // InternalCubeDSL.g:21749:2: ( ruleValidID )
+            // InternalCubeDSL.g:21750: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"
+    // InternalCubeDSL.g:21759:1: rule__XVariableDeclaration__RightAssignment_3_1 : ( ruleXExpression ) ;
+    public final void rule__XVariableDeclaration__RightAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21763:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21764:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21764:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21765: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"
+    // InternalCubeDSL.g:21774:1: rule__JvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
+    public final void rule__JvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21778:1: ( ( ruleJvmTypeReference ) )
+            // InternalCubeDSL.g:21779:2: ( ruleJvmTypeReference )
+            {
+            // InternalCubeDSL.g:21779:2: ( ruleJvmTypeReference )
+            // InternalCubeDSL.g:21780: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"
+    // InternalCubeDSL.g:21789:1: rule__JvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
+    public final void rule__JvmFormalParameter__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21793:1: ( ( ruleValidID ) )
+            // InternalCubeDSL.g:21794:2: ( ruleValidID )
+            {
+            // InternalCubeDSL.g:21794:2: ( ruleValidID )
+            // InternalCubeDSL.g:21795: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"
+    // InternalCubeDSL.g:21804:1: rule__FullJvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
+    public final void rule__FullJvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21808:1: ( ( ruleJvmTypeReference ) )
+            // InternalCubeDSL.g:21809:2: ( ruleJvmTypeReference )
+            {
+            // InternalCubeDSL.g:21809:2: ( ruleJvmTypeReference )
+            // InternalCubeDSL.g:21810: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"
+    // InternalCubeDSL.g:21819:1: rule__FullJvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
+    public final void rule__FullJvmFormalParameter__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21823:1: ( ( ruleValidID ) )
+            // InternalCubeDSL.g:21824:2: ( ruleValidID )
+            {
+            // InternalCubeDSL.g:21824:2: ( ruleValidID )
+            // InternalCubeDSL.g:21825: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"
+    // InternalCubeDSL.g:21834:1: rule__XFeatureCall__TypeArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__XFeatureCall__TypeArgumentsAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21838:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalCubeDSL.g:21839:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalCubeDSL.g:21839:2: ( ruleJvmArgumentTypeReference )
+            // InternalCubeDSL.g:21840: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"
+    // InternalCubeDSL.g:21849:1: rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__XFeatureCall__TypeArgumentsAssignment_1_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21853:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalCubeDSL.g:21854:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalCubeDSL.g:21854:2: ( ruleJvmArgumentTypeReference )
+            // InternalCubeDSL.g:21855: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"
+    // InternalCubeDSL.g:21864:1: rule__XFeatureCall__FeatureAssignment_2 : ( ( ruleIdOrSuper ) ) ;
+    public final void rule__XFeatureCall__FeatureAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21868:1: ( ( ( ruleIdOrSuper ) ) )
+            // InternalCubeDSL.g:21869:2: ( ( ruleIdOrSuper ) )
+            {
+            // InternalCubeDSL.g:21869:2: ( ( ruleIdOrSuper ) )
+            // InternalCubeDSL.g:21870:3: ( ruleIdOrSuper )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_2_0()); 
+            }
+            // InternalCubeDSL.g:21871:3: ( ruleIdOrSuper )
+            // InternalCubeDSL.g:21872: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"
+    // InternalCubeDSL.g:21883:1: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 : ( ( '(' ) ) ;
+    public final void rule__XFeatureCall__ExplicitOperationCallAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21887:1: ( ( ( '(' ) ) )
+            // InternalCubeDSL.g:21888:2: ( ( '(' ) )
+            {
+            // InternalCubeDSL.g:21888:2: ( ( '(' ) )
+            // InternalCubeDSL.g:21889:3: ( '(' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
+            }
+            // InternalCubeDSL.g:21890:3: ( '(' )
+            // InternalCubeDSL.g:21891:4: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
+            }
+            match(input,88,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"
+    // InternalCubeDSL.g:21902:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 : ( ruleXShortClosure ) ;
+    public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21906:1: ( ( ruleXShortClosure ) )
+            // InternalCubeDSL.g:21907:2: ( ruleXShortClosure )
+            {
+            // InternalCubeDSL.g:21907:2: ( ruleXShortClosure )
+            // InternalCubeDSL.g:21908: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"
+    // InternalCubeDSL.g:21917: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 {
+            // InternalCubeDSL.g:21921:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21922:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21922:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21923: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"
+    // InternalCubeDSL.g:21932: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 {
+            // InternalCubeDSL.g:21936:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:21937:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:21937:2: ( ruleXExpression )
+            // InternalCubeDSL.g:21938: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"
+    // InternalCubeDSL.g:21947:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_4 : ( ruleXClosure ) ;
+    public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21951:1: ( ( ruleXClosure ) )
+            // InternalCubeDSL.g:21952:2: ( ruleXClosure )
+            {
+            // InternalCubeDSL.g:21952:2: ( ruleXClosure )
+            // InternalCubeDSL.g:21953: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"
+    // InternalCubeDSL.g:21962:1: rule__XConstructorCall__ConstructorAssignment_2 : ( ( ruleQualifiedName ) ) ;
+    public final void rule__XConstructorCall__ConstructorAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21966:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalCubeDSL.g:21967:2: ( ( ruleQualifiedName ) )
+            {
+            // InternalCubeDSL.g:21967:2: ( ( ruleQualifiedName ) )
+            // InternalCubeDSL.g:21968:3: ( ruleQualifiedName )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0()); 
+            }
+            // InternalCubeDSL.g:21969:3: ( ruleQualifiedName )
+            // InternalCubeDSL.g:21970: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"
+    // InternalCubeDSL.g:21981:1: rule__XConstructorCall__TypeArgumentsAssignment_3_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__XConstructorCall__TypeArgumentsAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:21985:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalCubeDSL.g:21986:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalCubeDSL.g:21986:2: ( ruleJvmArgumentTypeReference )
+            // InternalCubeDSL.g:21987: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"
+    // InternalCubeDSL.g:21996:1: rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__XConstructorCall__TypeArgumentsAssignment_3_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22000:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalCubeDSL.g:22001:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalCubeDSL.g:22001:2: ( ruleJvmArgumentTypeReference )
+            // InternalCubeDSL.g:22002: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"
+    // InternalCubeDSL.g:22011:1: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 : ( ( '(' ) ) ;
+    public final void rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22015:1: ( ( ( '(' ) ) )
+            // InternalCubeDSL.g:22016:2: ( ( '(' ) )
+            {
+            // InternalCubeDSL.g:22016:2: ( ( '(' ) )
+            // InternalCubeDSL.g:22017:3: ( '(' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
+            }
+            // InternalCubeDSL.g:22018:3: ( '(' )
+            // InternalCubeDSL.g:22019:4: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
+            }
+            match(input,88,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"
+    // InternalCubeDSL.g:22030:1: rule__XConstructorCall__ArgumentsAssignment_4_1_0 : ( ruleXShortClosure ) ;
+    public final void rule__XConstructorCall__ArgumentsAssignment_4_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22034:1: ( ( ruleXShortClosure ) )
+            // InternalCubeDSL.g:22035:2: ( ruleXShortClosure )
+            {
+            // InternalCubeDSL.g:22035:2: ( ruleXShortClosure )
+            // InternalCubeDSL.g:22036: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"
+    // InternalCubeDSL.g:22045: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 {
+            // InternalCubeDSL.g:22049:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:22050:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:22050:2: ( ruleXExpression )
+            // InternalCubeDSL.g:22051: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"
+    // InternalCubeDSL.g:22060: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 {
+            // InternalCubeDSL.g:22064:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:22065:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:22065:2: ( ruleXExpression )
+            // InternalCubeDSL.g:22066: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"
+    // InternalCubeDSL.g:22075:1: rule__XConstructorCall__ArgumentsAssignment_5 : ( ruleXClosure ) ;
+    public final void rule__XConstructorCall__ArgumentsAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22079:1: ( ( ruleXClosure ) )
+            // InternalCubeDSL.g:22080:2: ( ruleXClosure )
+            {
+            // InternalCubeDSL.g:22080:2: ( ruleXClosure )
+            // InternalCubeDSL.g:22081: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"
+    // InternalCubeDSL.g:22090:1: rule__XBooleanLiteral__IsTrueAssignment_1_1 : ( ( 'true' ) ) ;
+    public final void rule__XBooleanLiteral__IsTrueAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22094:1: ( ( ( 'true' ) ) )
+            // InternalCubeDSL.g:22095:2: ( ( 'true' ) )
+            {
+            // InternalCubeDSL.g:22095:2: ( ( 'true' ) )
+            // InternalCubeDSL.g:22096:3: ( 'true' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
+            }
+            // InternalCubeDSL.g:22097:3: ( 'true' )
+            // InternalCubeDSL.g:22098:4: 'true'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
+            }
+            match(input,131,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"
+    // InternalCubeDSL.g:22109:1: rule__XNumberLiteral__ValueAssignment_1 : ( ruleNumber ) ;
+    public final void rule__XNumberLiteral__ValueAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22113:1: ( ( ruleNumber ) )
+            // InternalCubeDSL.g:22114:2: ( ruleNumber )
+            {
+            // InternalCubeDSL.g:22114:2: ( ruleNumber )
+            // InternalCubeDSL.g:22115: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"
+    // InternalCubeDSL.g:22124:1: rule__XStringLiteral__ValueAssignment_1 : ( RULE_STRING ) ;
+    public final void rule__XStringLiteral__ValueAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22128:1: ( ( RULE_STRING ) )
+            // InternalCubeDSL.g:22129:2: ( RULE_STRING )
+            {
+            // InternalCubeDSL.g:22129:2: ( RULE_STRING )
+            // InternalCubeDSL.g:22130: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"
+    // InternalCubeDSL.g:22139:1: rule__XTypeLiteral__TypeAssignment_3 : ( ( ruleQualifiedName ) ) ;
+    public final void rule__XTypeLiteral__TypeAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22143:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalCubeDSL.g:22144:2: ( ( ruleQualifiedName ) )
+            {
+            // InternalCubeDSL.g:22144:2: ( ( ruleQualifiedName ) )
+            // InternalCubeDSL.g:22145:3: ( ruleQualifiedName )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); 
+            }
+            // InternalCubeDSL.g:22146:3: ( ruleQualifiedName )
+            // InternalCubeDSL.g:22147: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"
+    // InternalCubeDSL.g:22158:1: rule__XTypeLiteral__ArrayDimensionsAssignment_4 : ( ruleArrayBrackets ) ;
+    public final void rule__XTypeLiteral__ArrayDimensionsAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22162:1: ( ( ruleArrayBrackets ) )
+            // InternalCubeDSL.g:22163:2: ( ruleArrayBrackets )
+            {
+            // InternalCubeDSL.g:22163:2: ( ruleArrayBrackets )
+            // InternalCubeDSL.g:22164: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"
+    // InternalCubeDSL.g:22173:1: rule__XThrowExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    public final void rule__XThrowExpression__ExpressionAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22177:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:22178:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:22178:2: ( ruleXExpression )
+            // InternalCubeDSL.g:22179: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"
+    // InternalCubeDSL.g:22188:1: rule__XReturnExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    public final void rule__XReturnExpression__ExpressionAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22192:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:22193:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:22193:2: ( ruleXExpression )
+            // InternalCubeDSL.g:22194: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"
+    // InternalCubeDSL.g:22203:1: rule__XTryCatchFinallyExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    public final void rule__XTryCatchFinallyExpression__ExpressionAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22207:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:22208:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:22208:2: ( ruleXExpression )
+            // InternalCubeDSL.g:22209: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"
+    // InternalCubeDSL.g:22218:1: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 : ( ruleXCatchClause ) ;
+    public final void rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22222:1: ( ( ruleXCatchClause ) )
+            // InternalCubeDSL.g:22223:2: ( ruleXCatchClause )
+            {
+            // InternalCubeDSL.g:22223:2: ( ruleXCatchClause )
+            // InternalCubeDSL.g:22224: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"
+    // InternalCubeDSL.g:22233: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 {
+            // InternalCubeDSL.g:22237:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:22238:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:22238:2: ( ruleXExpression )
+            // InternalCubeDSL.g:22239: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"
+    // InternalCubeDSL.g:22248:1: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 : ( ruleXExpression ) ;
+    public final void rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22252:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:22253:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:22253:2: ( ruleXExpression )
+            // InternalCubeDSL.g:22254: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"
+    // InternalCubeDSL.g:22263:1: rule__XSynchronizedExpression__ParamAssignment_1 : ( ruleXExpression ) ;
+    public final void rule__XSynchronizedExpression__ParamAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22267:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:22268:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:22268:2: ( ruleXExpression )
+            // InternalCubeDSL.g:22269: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"
+    // InternalCubeDSL.g:22278:1: rule__XSynchronizedExpression__ExpressionAssignment_3 : ( ruleXExpression ) ;
+    public final void rule__XSynchronizedExpression__ExpressionAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22282:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:22283:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:22283:2: ( ruleXExpression )
+            // InternalCubeDSL.g:22284: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"
+    // InternalCubeDSL.g:22293:1: rule__XCatchClause__DeclaredParamAssignment_2 : ( ruleFullJvmFormalParameter ) ;
+    public final void rule__XCatchClause__DeclaredParamAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22297:1: ( ( ruleFullJvmFormalParameter ) )
+            // InternalCubeDSL.g:22298:2: ( ruleFullJvmFormalParameter )
+            {
+            // InternalCubeDSL.g:22298:2: ( ruleFullJvmFormalParameter )
+            // InternalCubeDSL.g:22299: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"
+    // InternalCubeDSL.g:22308:1: rule__XCatchClause__ExpressionAssignment_4 : ( ruleXExpression ) ;
+    public final void rule__XCatchClause__ExpressionAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22312:1: ( ( ruleXExpression ) )
+            // InternalCubeDSL.g:22313:2: ( ruleXExpression )
+            {
+            // InternalCubeDSL.g:22313:2: ( ruleXExpression )
+            // InternalCubeDSL.g:22314: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"
+    // InternalCubeDSL.g:22323:1: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 : ( ruleJvmTypeReference ) ;
+    public final void rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22327:1: ( ( ruleJvmTypeReference ) )
+            // InternalCubeDSL.g:22328:2: ( ruleJvmTypeReference )
+            {
+            // InternalCubeDSL.g:22328:2: ( ruleJvmTypeReference )
+            // InternalCubeDSL.g:22329: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"
+    // InternalCubeDSL.g:22338: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 {
+            // InternalCubeDSL.g:22342:1: ( ( ruleJvmTypeReference ) )
+            // InternalCubeDSL.g:22343:2: ( ruleJvmTypeReference )
+            {
+            // InternalCubeDSL.g:22343:2: ( ruleJvmTypeReference )
+            // InternalCubeDSL.g:22344: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"
+    // InternalCubeDSL.g:22353:1: rule__XFunctionTypeRef__ReturnTypeAssignment_2 : ( ruleJvmTypeReference ) ;
+    public final void rule__XFunctionTypeRef__ReturnTypeAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22357:1: ( ( ruleJvmTypeReference ) )
+            // InternalCubeDSL.g:22358:2: ( ruleJvmTypeReference )
+            {
+            // InternalCubeDSL.g:22358:2: ( ruleJvmTypeReference )
+            // InternalCubeDSL.g:22359: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"
+    // InternalCubeDSL.g:22368:1: rule__JvmParameterizedTypeReference__TypeAssignment_0 : ( ( ruleQualifiedName ) ) ;
+    public final void rule__JvmParameterizedTypeReference__TypeAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22372:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalCubeDSL.g:22373:2: ( ( ruleQualifiedName ) )
+            {
+            // InternalCubeDSL.g:22373:2: ( ( ruleQualifiedName ) )
+            // InternalCubeDSL.g:22374:3: ( ruleQualifiedName )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0()); 
+            }
+            // InternalCubeDSL.g:22375:3: ( ruleQualifiedName )
+            // InternalCubeDSL.g:22376: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"
+    // InternalCubeDSL.g:22387:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22391:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalCubeDSL.g:22392:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalCubeDSL.g:22392:2: ( ruleJvmArgumentTypeReference )
+            // InternalCubeDSL.g:22393: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"
+    // InternalCubeDSL.g:22402:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22406:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalCubeDSL.g:22407:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalCubeDSL.g:22407:2: ( ruleJvmArgumentTypeReference )
+            // InternalCubeDSL.g:22408: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"
+    // InternalCubeDSL.g:22417:1: rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 : ( ( ruleValidID ) ) ;
+    public final void rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22421:1: ( ( ( ruleValidID ) ) )
+            // InternalCubeDSL.g:22422:2: ( ( ruleValidID ) )
+            {
+            // InternalCubeDSL.g:22422:2: ( ( ruleValidID ) )
+            // InternalCubeDSL.g:22423:3: ( ruleValidID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0()); 
+            }
+            // InternalCubeDSL.g:22424:3: ( ruleValidID )
+            // InternalCubeDSL.g:22425: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"
+    // InternalCubeDSL.g:22436: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 {
+            // InternalCubeDSL.g:22440:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalCubeDSL.g:22441:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalCubeDSL.g:22441:2: ( ruleJvmArgumentTypeReference )
+            // InternalCubeDSL.g:22442: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"
+    // InternalCubeDSL.g:22451: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 {
+            // InternalCubeDSL.g:22455:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalCubeDSL.g:22456:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalCubeDSL.g:22456:2: ( ruleJvmArgumentTypeReference )
+            // InternalCubeDSL.g:22457: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"
+    // InternalCubeDSL.g:22466:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 : ( ruleJvmUpperBound ) ;
+    public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22470:1: ( ( ruleJvmUpperBound ) )
+            // InternalCubeDSL.g:22471:2: ( ruleJvmUpperBound )
+            {
+            // InternalCubeDSL.g:22471:2: ( ruleJvmUpperBound )
+            // InternalCubeDSL.g:22472: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"
+    // InternalCubeDSL.g:22481:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 : ( ruleJvmUpperBoundAnded ) ;
+    public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22485:1: ( ( ruleJvmUpperBoundAnded ) )
+            // InternalCubeDSL.g:22486:2: ( ruleJvmUpperBoundAnded )
+            {
+            // InternalCubeDSL.g:22486:2: ( ruleJvmUpperBoundAnded )
+            // InternalCubeDSL.g:22487: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"
+    // InternalCubeDSL.g:22496:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 : ( ruleJvmLowerBound ) ;
+    public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22500:1: ( ( ruleJvmLowerBound ) )
+            // InternalCubeDSL.g:22501:2: ( ruleJvmLowerBound )
+            {
+            // InternalCubeDSL.g:22501:2: ( ruleJvmLowerBound )
+            // InternalCubeDSL.g:22502: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"
+    // InternalCubeDSL.g:22511:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 : ( ruleJvmLowerBoundAnded ) ;
+    public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22515:1: ( ( ruleJvmLowerBoundAnded ) )
+            // InternalCubeDSL.g:22516:2: ( ruleJvmLowerBoundAnded )
+            {
+            // InternalCubeDSL.g:22516:2: ( ruleJvmLowerBoundAnded )
+            // InternalCubeDSL.g:22517: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"
+    // InternalCubeDSL.g:22526:1: rule__JvmUpperBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__JvmUpperBound__TypeReferenceAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22530:1: ( ( ruleJvmTypeReference ) )
+            // InternalCubeDSL.g:22531:2: ( ruleJvmTypeReference )
+            {
+            // InternalCubeDSL.g:22531:2: ( ruleJvmTypeReference )
+            // InternalCubeDSL.g:22532: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"
+    // InternalCubeDSL.g:22541:1: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__JvmUpperBoundAnded__TypeReferenceAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22545:1: ( ( ruleJvmTypeReference ) )
+            // InternalCubeDSL.g:22546:2: ( ruleJvmTypeReference )
+            {
+            // InternalCubeDSL.g:22546:2: ( ruleJvmTypeReference )
+            // InternalCubeDSL.g:22547: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"
+    // InternalCubeDSL.g:22556:1: rule__JvmLowerBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__JvmLowerBound__TypeReferenceAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22560:1: ( ( ruleJvmTypeReference ) )
+            // InternalCubeDSL.g:22561:2: ( ruleJvmTypeReference )
+            {
+            // InternalCubeDSL.g:22561:2: ( ruleJvmTypeReference )
+            // InternalCubeDSL.g:22562: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"
+    // InternalCubeDSL.g:22571:1: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__JvmLowerBoundAnded__TypeReferenceAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22575:1: ( ( ruleJvmTypeReference ) )
+            // InternalCubeDSL.g:22576:2: ( ruleJvmTypeReference )
+            {
+            // InternalCubeDSL.g:22576:2: ( ruleJvmTypeReference )
+            // InternalCubeDSL.g:22577: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"
+    // InternalCubeDSL.g:22586:1: rule__XImportSection__ImportDeclarationsAssignment : ( ruleXImportDeclaration ) ;
+    public final void rule__XImportSection__ImportDeclarationsAssignment() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalCubeDSL.g:22590:1: ( ( ruleXImportDeclaration ) )
+            // InternalCubeDSL.g:22591:2: ( ruleXImportDeclaration )
+            {
+            // InternalCubeDSL.g:22591:2: ( ruleXImportDeclaration )
+            // InternalCubeDSL.g:22592: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 synpred7_InternalCubeDSL
+    public final void synpred7_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:2620:2: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) )
+        // InternalCubeDSL.g:2620:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+        {
+        // InternalCubeDSL.g:2620:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+        // InternalCubeDSL.g:2621:3: ( rule__XAnnotation__Group_3_1_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
+        }
+        // InternalCubeDSL.g:2622:3: ( rule__XAnnotation__Group_3_1_0__0 )
+        // InternalCubeDSL.g:2622: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 synpred7_InternalCubeDSL
+
+    // $ANTLR start synpred8_InternalCubeDSL
+    public final void synpred8_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:2641:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) )
+        // InternalCubeDSL.g:2641:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+        {
+        // InternalCubeDSL.g:2641:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+        // InternalCubeDSL.g:2642:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
+        }
+        // InternalCubeDSL.g:2643:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+        // InternalCubeDSL.g:2643:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAnnotationElementValueOrCommaList__Group_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred8_InternalCubeDSL
+
+    // $ANTLR start synpred9_InternalCubeDSL
+    public final void synpred9_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:2662:2: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) )
+        // InternalCubeDSL.g:2662:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+        {
+        // InternalCubeDSL.g:2662:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+        // InternalCubeDSL.g:2663:3: ( rule__XAnnotationElementValue__Group_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
+        }
+        // InternalCubeDSL.g:2664:3: ( rule__XAnnotationElementValue__Group_0__0 )
+        // InternalCubeDSL.g:2664:4: rule__XAnnotationElementValue__Group_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAnnotationElementValue__Group_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred9_InternalCubeDSL
+
+    // $ANTLR start synpred34_InternalCubeDSL
+    public final void synpred34_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:2947:2: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) )
+        // InternalCubeDSL.g:2947:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+        {
+        // InternalCubeDSL.g:2947:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+        // InternalCubeDSL.g:2948:3: ( rule__OpOther__Group_6_1_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); 
+        }
+        // InternalCubeDSL.g:2949:3: ( rule__OpOther__Group_6_1_0__0 )
+        // InternalCubeDSL.g:2949: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 synpred34_InternalCubeDSL
+
+    // $ANTLR start synpred35_InternalCubeDSL
+    public final void synpred35_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:2953:2: ( ( '<' ) )
+        // InternalCubeDSL.g:2953:2: ( '<' )
+        {
+        // InternalCubeDSL.g:2953:2: ( '<' )
+        // InternalCubeDSL.g:2954:3: '<'
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
+        }
+        match(input,27,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred35_InternalCubeDSL
+
+    // $ANTLR start synpred48_InternalCubeDSL
+    public final void synpred48_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:3166:2: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) )
+        // InternalCubeDSL.g:3166:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+        {
+        // InternalCubeDSL.g:3166:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+        // InternalCubeDSL.g:3167:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); 
+        }
+        // InternalCubeDSL.g:3168:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+        // InternalCubeDSL.g:3168: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 synpred48_InternalCubeDSL
+
+    // $ANTLR start synpred56_InternalCubeDSL
+    public final void synpred56_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:3229:2: ( ( ( ruleXForLoopExpression ) ) )
+        // InternalCubeDSL.g:3229:2: ( ( ruleXForLoopExpression ) )
+        {
+        // InternalCubeDSL.g:3229:2: ( ( ruleXForLoopExpression ) )
+        // InternalCubeDSL.g:3230:3: ( ruleXForLoopExpression )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
+        }
+        // InternalCubeDSL.g:3231:3: ( ruleXForLoopExpression )
+        // InternalCubeDSL.g:3231:4: ruleXForLoopExpression
+        {
+        pushFollow(FOLLOW_2);
+        ruleXForLoopExpression();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred56_InternalCubeDSL
+
+    // $ANTLR start synpred57_InternalCubeDSL
+    public final void synpred57_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:3235:2: ( ( ruleXBasicForLoopExpression ) )
+        // InternalCubeDSL.g:3235:2: ( ruleXBasicForLoopExpression )
+        {
+        // InternalCubeDSL.g:3235:2: ( ruleXBasicForLoopExpression )
+        // InternalCubeDSL.g:3236:3: ruleXBasicForLoopExpression
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); 
+        }
+        pushFollow(FOLLOW_2);
+        ruleXBasicForLoopExpression();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred57_InternalCubeDSL
+
+    // $ANTLR start synpred70_InternalCubeDSL
+    public final void synpred70_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:3358:2: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) )
+        // InternalCubeDSL.g:3358:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+        {
+        // InternalCubeDSL.g:3358:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+        // InternalCubeDSL.g:3359:3: ( rule__XSwitchExpression__Group_2_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); 
+        }
+        // InternalCubeDSL.g:3360:3: ( rule__XSwitchExpression__Group_2_0__0 )
+        // InternalCubeDSL.g:3360:4: rule__XSwitchExpression__Group_2_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XSwitchExpression__Group_2_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred70_InternalCubeDSL
+
+    // $ANTLR start synpred74_InternalCubeDSL
+    public final void synpred74_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:3442:2: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) )
+        // InternalCubeDSL.g:3442:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+        {
+        // InternalCubeDSL.g:3442:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+        // InternalCubeDSL.g:3443:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); 
+        }
+        // InternalCubeDSL.g:3444:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+        // InternalCubeDSL.g:3444:4: rule__XVariableDeclaration__Group_2_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XVariableDeclaration__Group_2_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred74_InternalCubeDSL
+
+    // $ANTLR start synpred75_InternalCubeDSL
+    public final void synpred75_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:3463:2: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) )
+        // InternalCubeDSL.g:3463:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+        {
+        // InternalCubeDSL.g:3463:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+        // InternalCubeDSL.g:3464:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); 
+        }
+        // InternalCubeDSL.g:3465:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+        // InternalCubeDSL.g:3465:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred75_InternalCubeDSL
+
+    // $ANTLR start synpred81_InternalCubeDSL
+    public final void synpred81_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:3544:2: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) )
+        // InternalCubeDSL.g:3544:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+        {
+        // InternalCubeDSL.g:3544:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+        // InternalCubeDSL.g:3545:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); 
+        }
+        // InternalCubeDSL.g:3546:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+        // InternalCubeDSL.g:3546:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XConstructorCall__ArgumentsAssignment_4_1_0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred81_InternalCubeDSL
+
+    // $ANTLR start synpred146_InternalCubeDSL
+    public final void synpred146_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:8049:3: ( rule__XAssignment__Group_1_1__0 )
+        // InternalCubeDSL.g:8049: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_InternalCubeDSL
+
+    // $ANTLR start synpred148_InternalCubeDSL
+    public final void synpred148_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:8400:3: ( rule__XOrExpression__Group_1__0 )
+        // InternalCubeDSL.g:8400:3: rule__XOrExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XOrExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred148_InternalCubeDSL
+
+    // $ANTLR start synpred149_InternalCubeDSL
+    public final void synpred149_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:8589:3: ( rule__XAndExpression__Group_1__0 )
+        // InternalCubeDSL.g:8589:3: rule__XAndExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAndExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred149_InternalCubeDSL
+
+    // $ANTLR start synpred150_InternalCubeDSL
+    public final void synpred150_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:8778:3: ( rule__XEqualityExpression__Group_1__0 )
+        // InternalCubeDSL.g:8778:3: rule__XEqualityExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XEqualityExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred150_InternalCubeDSL
+
+    // $ANTLR start synpred151_InternalCubeDSL
+    public final void synpred151_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:8967:3: ( rule__XRelationalExpression__Alternatives_1 )
+        // InternalCubeDSL.g:8967:3: rule__XRelationalExpression__Alternatives_1
+        {
+        pushFollow(FOLLOW_2);
+        rule__XRelationalExpression__Alternatives_1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred151_InternalCubeDSL
+
+    // $ANTLR start synpred152_InternalCubeDSL
+    public final void synpred152_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:9345:3: ( rule__XOtherOperatorExpression__Group_1__0 )
+        // InternalCubeDSL.g:9345:3: rule__XOtherOperatorExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XOtherOperatorExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred152_InternalCubeDSL
+
+    // $ANTLR start synpred153_InternalCubeDSL
+    public final void synpred153_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:9858:3: ( rule__XAdditiveExpression__Group_1__0 )
+        // InternalCubeDSL.g:9858:3: rule__XAdditiveExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAdditiveExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred153_InternalCubeDSL
+
+    // $ANTLR start synpred154_InternalCubeDSL
+    public final void synpred154_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:10047:3: ( rule__XMultiplicativeExpression__Group_1__0 )
+        // InternalCubeDSL.g:10047:3: rule__XMultiplicativeExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XMultiplicativeExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred154_InternalCubeDSL
+
+    // $ANTLR start synpred155_InternalCubeDSL
+    public final void synpred155_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:10317:3: ( rule__XCastedExpression__Group_1__0 )
+        // InternalCubeDSL.g:10317:3: rule__XCastedExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XCastedExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred155_InternalCubeDSL
+
+    // $ANTLR start synpred156_InternalCubeDSL
+    public final void synpred156_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:10506:3: ( rule__XPostfixOperation__Group_1__0 )
+        // InternalCubeDSL.g:10506:3: rule__XPostfixOperation__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XPostfixOperation__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred156_InternalCubeDSL
+
+    // $ANTLR start synpred157_InternalCubeDSL
+    public final void synpred157_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:10641:3: ( rule__XMemberFeatureCall__Alternatives_1 )
+        // InternalCubeDSL.g:10641:3: rule__XMemberFeatureCall__Alternatives_1
+        {
+        pushFollow(FOLLOW_2);
+        rule__XMemberFeatureCall__Alternatives_1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred157_InternalCubeDSL
+
+    // $ANTLR start synpred159_InternalCubeDSL
+    public final void synpred159_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:10939:3: ( rule__XMemberFeatureCall__Group_1_1_3__0 )
+        // InternalCubeDSL.g:10939: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_InternalCubeDSL
+
+    // $ANTLR start synpred160_InternalCubeDSL
+    public final void synpred160_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:10965:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )
+        // InternalCubeDSL.g:10965: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_InternalCubeDSL
+
+    // $ANTLR start synpred168_InternalCubeDSL
+    public final void synpred168_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:11938:3: ( rule__XClosure__Group_1__0 )
+        // InternalCubeDSL.g:11938:3: rule__XClosure__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XClosure__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred168_InternalCubeDSL
+
+    // $ANTLR start synpred175_InternalCubeDSL
+    public final void synpred175_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:12909:3: ( rule__XIfExpression__Group_6__0 )
+        // InternalCubeDSL.g:12909:3: rule__XIfExpression__Group_6__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XIfExpression__Group_6__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred175_InternalCubeDSL
+
+    // $ANTLR start synpred178_InternalCubeDSL
+    public final void synpred178_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:13369:3: ( rule__XSwitchExpression__Group_2_1_0__0 )
+        // InternalCubeDSL.g:13369: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_InternalCubeDSL
+
+    // $ANTLR start synpred191_InternalCubeDSL
+    public final void synpred191_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:15502:3: ( rule__XFeatureCall__Group_3__0 )
+        // InternalCubeDSL.g:15502:3: rule__XFeatureCall__Group_3__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XFeatureCall__Group_3__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred191_InternalCubeDSL
+
+    // $ANTLR start synpred192_InternalCubeDSL
+    public final void synpred192_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:15528:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )
+        // InternalCubeDSL.g:15528:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
+        {
+        pushFollow(FOLLOW_2);
+        rule__XFeatureCall__FeatureCallArgumentsAssignment_4();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred192_InternalCubeDSL
+
+    // $ANTLR start synpred196_InternalCubeDSL
+    public final void synpred196_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:15988:3: ( rule__XConstructorCall__Group_3__0 )
+        // InternalCubeDSL.g:15988:3: rule__XConstructorCall__Group_3__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XConstructorCall__Group_3__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred196_InternalCubeDSL
+
+    // $ANTLR start synpred197_InternalCubeDSL
+    public final void synpred197_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:16015:3: ( rule__XConstructorCall__Group_4__0 )
+        // InternalCubeDSL.g:16015:3: rule__XConstructorCall__Group_4__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XConstructorCall__Group_4__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred197_InternalCubeDSL
+
+    // $ANTLR start synpred198_InternalCubeDSL
+    public final void synpred198_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:16041:3: ( rule__XConstructorCall__ArgumentsAssignment_5 )
+        // InternalCubeDSL.g:16041:3: rule__XConstructorCall__ArgumentsAssignment_5
+        {
+        pushFollow(FOLLOW_2);
+        rule__XConstructorCall__ArgumentsAssignment_5();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred198_InternalCubeDSL
+
+    // $ANTLR start synpred203_InternalCubeDSL
+    public final void synpred203_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:16932:3: ( rule__XReturnExpression__ExpressionAssignment_2 )
+        // InternalCubeDSL.g:16932:3: rule__XReturnExpression__ExpressionAssignment_2
+        {
+        pushFollow(FOLLOW_2);
+        rule__XReturnExpression__ExpressionAssignment_2();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred203_InternalCubeDSL
+
+    // $ANTLR start synpred204_InternalCubeDSL
+    public final void synpred204_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:17074:4: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+        // InternalCubeDSL.g:17074: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_InternalCubeDSL
+
+    // $ANTLR start synpred205_InternalCubeDSL
+    public final void synpred205_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:17101:3: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )
+        // InternalCubeDSL.g:17101: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_InternalCubeDSL
+
+    // $ANTLR start synpred206_InternalCubeDSL
+    public final void synpred206_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:17614:3: ( rule__QualifiedName__Group_1__0 )
+        // InternalCubeDSL.g:17614:3: rule__QualifiedName__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__QualifiedName__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred206_InternalCubeDSL
+
+    // $ANTLR start synpred208_InternalCubeDSL
+    public final void synpred208_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:17830:3: ( rule__JvmTypeReference__Group_0_1__0 )
+        // InternalCubeDSL.g:17830: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_InternalCubeDSL
+
+    // $ANTLR start synpred212_InternalCubeDSL
+    public final void synpred212_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:18289:3: ( rule__JvmParameterizedTypeReference__Group_1__0 )
+        // InternalCubeDSL.g:18289:3: rule__JvmParameterizedTypeReference__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__JvmParameterizedTypeReference__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred212_InternalCubeDSL
+
+    // $ANTLR start synpred214_InternalCubeDSL
+    public final void synpred214_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:18424:3: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )
+        // InternalCubeDSL.g:18424: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_InternalCubeDSL
+
+    // $ANTLR start synpred215_InternalCubeDSL
+    public final void synpred215_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:18559:3: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )
+        // InternalCubeDSL.g:18559: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_InternalCubeDSL
+
+    // Delegated rules
+
+    public final boolean synpred152_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred152_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred148_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred155_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred198_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred57_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred48_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred204_InternalCubeDSL_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 synpred74_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred74_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred196_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred214_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred7_InternalCubeDSL_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 synpred70_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred70_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred192_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred205_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred146_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred149_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred8_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred208_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred212_InternalCubeDSL_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 synpred56_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred56_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred178_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred175_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred168_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred215_InternalCubeDSL_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 synpred34_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred34_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred153_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred156_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred159_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred150_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred206_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred157_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred35_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred154_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred203_InternalCubeDSL_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 synpred81_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred81_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred151_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred197_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred191_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred9_InternalCubeDSL_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 synpred75_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred75_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred160_InternalCubeDSL_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 DFA3 dfa3 = new DFA3(this);
+    protected DFA5 dfa5 = new DFA5(this);
+    protected DFA6 dfa6 = new DFA6(this);
+    protected DFA7 dfa7 = new DFA7(this);
+    protected DFA14 dfa14 = new DFA14(this);
+    protected DFA22 dfa22 = new DFA22(this);
+    protected DFA25 dfa25 = new DFA25(this);
+    protected DFA26 dfa26 = new DFA26(this);
+    protected DFA29 dfa29 = new DFA29(this);
+    protected DFA34 dfa34 = new DFA34(this);
+    protected DFA37 dfa37 = new DFA37(this);
+    protected DFA85 dfa85 = new DFA85(this);
+    protected DFA91 dfa91 = new DFA91(this);
+    protected DFA98 dfa98 = new DFA98(this);
+    protected DFA99 dfa99 = new DFA99(this);
+    protected DFA107 dfa107 = new DFA107(this);
+    protected DFA117 dfa117 = new DFA117(this);
+    protected DFA130 dfa130 = new DFA130(this);
+    protected DFA131 dfa131 = new DFA131(this);
+    protected DFA135 dfa135 = new DFA135(this);
+    protected DFA136 dfa136 = new DFA136(this);
+    protected DFA137 dfa137 = new DFA137(this);
+    protected DFA142 dfa142 = new DFA142(this);
+    protected DFA151 dfa151 = new DFA151(this);
+    protected DFA154 dfa154 = new DFA154(this);
+    static final String dfa_1s = "\10\uffff";
+    static final String dfa_2s = "\2\uffff\1\5\4\uffff\1\5";
+    static final String dfa_3s = "\1\4\1\uffff\1\53\1\uffff\1\4\2\uffff\1\53";
+    static final String dfa_4s = "\1\176\1\uffff\1\126\1\uffff\1\44\2\uffff\1\126";
+    static final String dfa_5s = "\1\uffff\1\1\1\uffff\1\4\1\uffff\1\2\1\3\1\uffff";
+    static final String dfa_6s = "\10\uffff}>";
+    static final String[] dfa_7s = {
+            "\1\2\51\uffff\1\1\117\uffff\1\3",
+            "",
+            "\1\4\3\uffff\1\5\31\uffff\1\5\14\uffff\1\5",
+            "",
+            "\1\7\37\uffff\1\6",
+            "",
+            "",
+            "\1\4\3\uffff\1\5\31\uffff\1\5\14\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 DFA3 extends DFA {
+
+        public DFA3(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 3;
+            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 "2561: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\u0083\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\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\27\uffff\1\2\14\uffff\2\2\3\uffff\2\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\22\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 DFA5 extends DFA {
+
+        public DFA5(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 5;
+            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 "2615: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 LA5_1 = input.LA(1);
+
+                         
+                        int index5_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalCubeDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index5_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 5, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_14s = {
+            "\5\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\27\uffff\1\2\14\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\22\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_14 = unpackEncodedStringArray(dfa_14s);
+
+    class DFA6 extends DFA {
+
+        public DFA6(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 6;
+            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 "2636: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 LA6_1 = input.LA(1);
+
+                         
+                        int index6_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred8_InternalCubeDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index6_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 6, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    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_14;
+        }
+        public String getDescription() {
+            return "2657: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 LA7_1 = input.LA(1);
+
+                         
+                        int index7_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred9_InternalCubeDSL()) ) {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_15s = "\13\uffff";
+    static final String dfa_16s = "\1\32\2\uffff\1\32\7\uffff";
+    static final String dfa_17s = "\1\41\2\uffff\1\36\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 DFA14 extends DFA {
+
+        public DFA14(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 14;
+            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 "2858: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\53\2\4\1\uffff\5\4\1\uffff";
+    static final String dfa_24s = "\1\u0080\2\61\1\uffff\5\u0083\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\123\uffff\1\2\1\3",
+            "\1\4\26\uffff\1\3\21\uffff\1\5\1\6\1\7\1\10\1\3",
+            "\1\4\26\uffff\1\3\21\uffff\1\5\1\6\1\7\1\10\1\3",
+            "",
+            "\5\3\4\uffff\1\11\45\3\27\uffff\2\3\12\uffff\1\3\1\uffff\32\3\15\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\27\uffff\2\3\12\uffff\1\3\1\uffff\32\3\15\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\27\uffff\2\3\12\uffff\1\3\1\uffff\32\3\15\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\27\uffff\2\3\12\uffff\1\3\1\uffff\32\3\15\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\27\uffff\2\3\12\uffff\1\3\1\uffff\32\3\15\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 DFA22 extends DFA {
+
+        public DFA22(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 22;
+            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 "3092: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\u0083\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\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\4\uffff\6\5\27\uffff\1\5\15\uffff\1\2\3\uffff\2\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\20\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 DFA25 extends DFA {
+
+        public DFA25(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 25;
+            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 "3161: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 LA25_1 = input.LA(1);
+
+                         
+                        int index25_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred48_InternalCubeDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index25_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA25_2 = input.LA(1);
+
+                         
+                        int index25_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred48_InternalCubeDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index25_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 25, _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\u0083\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\22\uffff\1\5\21\uffff\5\5\1\14\27\uffff\1\2\15\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\22\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 DFA26 extends DFA {
+
+        public DFA26(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 26;
+            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 "3182: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 LA26_23 = input.LA(1);
+
+                         
+                        int index26_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred56_InternalCubeDSL()) ) {s = 30;}
+
+                        else if ( (synpred57_InternalCubeDSL()) ) {s = 31;}
+
+                         
+                        input.seek(index26_23);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 26, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_39s = {
+            "\5\2\22\uffff\1\2\3\uffff\1\2\2\uffff\2\2\4\uffff\1\2\4\uffff\6\2\27\uffff\1\2\15\uffff\1\1\3\uffff\2\2\2\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\22\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_39 = unpackEncodedStringArray(dfa_39s);
+
+    class DFA29 extends DFA {
+
+        public DFA29(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 29;
+            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 "3353: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 LA29_1 = input.LA(1);
+
+                         
+                        int index29_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred70_InternalCubeDSL()) ) {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 DFA34 extends DFA {
+
+        public DFA34(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 34;
+            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 "3458: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 LA34_1 = input.LA(1);
+
+                         
+                        int index34_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred75_InternalCubeDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index34_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA34_2 = input.LA(1);
+
+                         
+                        int index34_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred75_InternalCubeDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index34_2);
+                        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;
+        }
+    }
+
+    class DFA37 extends DFA {
+
+        public DFA37(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 37;
+            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 "3539: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 LA37_1 = input.LA(1);
+
+                         
+                        int index37_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred81_InternalCubeDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index37_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA37_2 = input.LA(1);
+
+                         
+                        int index37_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred81_InternalCubeDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index37_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 37, _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\u0083\7\0\2\uffff";
+    static final String dfa_43s = "\10\uffff\1\2\1\1";
+    static final String dfa_44s = "\1\uffff\1\3\1\5\1\0\1\1\1\4\1\6\1\2\2\uffff}>";
+    static final String[] dfa_45s = {
+            "\5\10\5\uffff\2\10\1\1\1\2\1\3\1\4\1\5\5\10\1\7\1\6\27\10\27\uffff\2\10\12\uffff\1\10\1\uffff\32\10\15\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 DFA85 extends DFA {
+
+        public DFA85(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 85;
+            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 "8049: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 LA85_3 = input.LA(1);
+
+                         
+                        int index85_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalCubeDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index85_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA85_4 = input.LA(1);
+
+                         
+                        int index85_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalCubeDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index85_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA85_7 = input.LA(1);
+
+                         
+                        int index85_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalCubeDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index85_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA85_1 = input.LA(1);
+
+                         
+                        int index85_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalCubeDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index85_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA85_5 = input.LA(1);
+
+                         
+                        int index85_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalCubeDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index85_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA85_2 = input.LA(1);
+
+                         
+                        int index85_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalCubeDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index85_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA85_6 = input.LA(1);
+
+                         
+                        int index85_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalCubeDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index85_6);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 85, _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\u0083\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\1\1\6\1\7\1\2\1\4\1\0\1\5\1\3\1\uffff}>";
+    static final String[] dfa_51s = {
+            "\5\1\5\uffff\14\1\1\3\1\2\1\4\1\5\1\6\1\7\1\10\1\11\21\1\27\uffff\2\1\12\uffff\1\1\1\uffff\32\1\15\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 DFA91 extends DFA {
+
+        public DFA91(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 91;
+            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 9345: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 LA91_7 = input.LA(1);
+
+                         
+                        int index91_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalCubeDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index91_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA91_2 = input.LA(1);
+
+                         
+                        int index91_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalCubeDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index91_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA91_5 = input.LA(1);
+
+                         
+                        int index91_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalCubeDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index91_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA91_9 = input.LA(1);
+
+                         
+                        int index91_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalCubeDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index91_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA91_6 = input.LA(1);
+
+                         
+                        int index91_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalCubeDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index91_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA91_8 = input.LA(1);
+
+                         
+                        int index91_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalCubeDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index91_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA91_3 = input.LA(1);
+
+                         
+                        int index91_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalCubeDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index91_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA91_4 = input.LA(1);
+
+                         
+                        int index91_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalCubeDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index91_4);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 91, _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\u0083\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\45\2\27\uffff\2\2\12\uffff\1\2\1\uffff\1\1\31\2\15\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 DFA98 extends DFA {
+
+        public DFA98(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 98;
+            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 "10939: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 LA98_1 = input.LA(1);
+
+                         
+                        int index98_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred159_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index98_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 98, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_59s = {
+            "\5\2\5\uffff\45\2\27\uffff\2\2\12\uffff\1\2\1\uffff\5\2\1\1\24\2\15\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_59 = unpackEncodedStringArray(dfa_59s);
+
+    class DFA99 extends DFA {
+
+        public DFA99(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 99;
+            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 "10965: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 LA99_1 = input.LA(1);
+
+                         
+                        int index99_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred160_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index99_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 99, _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\u0083\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\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\3\uffff\7\5\27\uffff\1\5\15\uffff\1\2\2\uffff\3\5\2\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\20\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 DFA107 extends DFA {
+
+        public DFA107(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 107;
+            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 "11938: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 LA107_1 = input.LA(1);
+
+                         
+                        int index107_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred168_InternalCubeDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index107_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA107_2 = input.LA(1);
+
+                         
+                        int index107_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred168_InternalCubeDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index107_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 107, _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\u0083\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\22\uffff\1\4\3\uffff\1\3\2\uffff\2\4\4\uffff\1\4\4\uffff\6\4\27\uffff\1\4\15\uffff\1\2\3\uffff\2\4\2\uffff\1\4\1\uffff\1\4\3\uffff\11\4\1\uffff\1\4\22\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 DFA117 extends DFA {
+
+        public DFA117(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 117;
+            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 "13369: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 LA117_1 = input.LA(1);
+
+                         
+                        int index117_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred178_InternalCubeDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index117_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA117_2 = input.LA(1);
+
+                         
+                        int index117_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred178_InternalCubeDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index117_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 117, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    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_58;
+        }
+        public String getDescription() {
+            return "15502: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 LA130_1 = input.LA(1);
+
+                         
+                        int index130_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred191_InternalCubeDSL()) ) {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_59;
+        }
+        public String getDescription() {
+            return "15528: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 LA131_1 = input.LA(1);
+
+                         
+                        int index131_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred192_InternalCubeDSL()) ) {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;
+        }
+    }
+    static final String[] dfa_72s = {
+            "\5\2\5\uffff\15\2\1\1\27\2\27\uffff\2\2\12\uffff\1\2\1\uffff\32\2\15\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_72 = unpackEncodedStringArray(dfa_72s);
+
+    class DFA135 extends DFA {
+
+        public DFA135(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 135;
+            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 "15988: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 LA135_1 = input.LA(1);
+
+                         
+                        int index135_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred196_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index135_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 135, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA136 extends DFA {
+
+        public DFA136(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 136;
+            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 "16015: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 LA136_1 = input.LA(1);
+
+                         
+                        int index136_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred197_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index136_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 136, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA137 extends DFA {
+
+        public DFA137(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 137;
+            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 "16041: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 LA137_1 = input.LA(1);
+
+                         
+                        int index137_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred198_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index137_1);
+                        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_73s = "\1\41\115\uffff";
+    static final String dfa_74s = "\1\4\40\0\55\uffff";
+    static final String dfa_75s = "\1\u0083\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\15\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\27\uffff\1\12\1\41\12\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\15\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 DFA142 extends DFA {
+
+        public DFA142(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 142;
+            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 "16932: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 LA142_1 = input.LA(1);
+
+                         
+                        int index142_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA142_2 = input.LA(1);
+
+                         
+                        int index142_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA142_3 = input.LA(1);
+
+                         
+                        int index142_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA142_4 = input.LA(1);
+
+                         
+                        int index142_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA142_5 = input.LA(1);
+
+                         
+                        int index142_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA142_6 = input.LA(1);
+
+                         
+                        int index142_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA142_7 = input.LA(1);
+
+                         
+                        int index142_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA142_8 = input.LA(1);
+
+                         
+                        int index142_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA142_9 = input.LA(1);
+
+                         
+                        int index142_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA142_10 = input.LA(1);
+
+                         
+                        int index142_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA142_11 = input.LA(1);
+
+                         
+                        int index142_11 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_11);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA142_12 = input.LA(1);
+
+                         
+                        int index142_12 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_12);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA142_13 = input.LA(1);
+
+                         
+                        int index142_13 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_13);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA142_14 = input.LA(1);
+
+                         
+                        int index142_14 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_14);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA142_15 = input.LA(1);
+
+                         
+                        int index142_15 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_15);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA142_16 = input.LA(1);
+
+                         
+                        int index142_16 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_16);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA142_17 = input.LA(1);
+
+                         
+                        int index142_17 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_17);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA142_18 = input.LA(1);
+
+                         
+                        int index142_18 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_18);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA142_19 = input.LA(1);
+
+                         
+                        int index142_19 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_19);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA142_20 = input.LA(1);
+
+                         
+                        int index142_20 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_20);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 20 : 
+                        int LA142_21 = input.LA(1);
+
+                         
+                        int index142_21 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_21);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 21 : 
+                        int LA142_22 = input.LA(1);
+
+                         
+                        int index142_22 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_22);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 22 : 
+                        int LA142_23 = input.LA(1);
+
+                         
+                        int index142_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_23);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 23 : 
+                        int LA142_24 = input.LA(1);
+
+                         
+                        int index142_24 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_24);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 24 : 
+                        int LA142_25 = input.LA(1);
+
+                         
+                        int index142_25 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_25);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 25 : 
+                        int LA142_26 = input.LA(1);
+
+                         
+                        int index142_26 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_26);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 26 : 
+                        int LA142_27 = input.LA(1);
+
+                         
+                        int index142_27 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_27);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 27 : 
+                        int LA142_28 = input.LA(1);
+
+                         
+                        int index142_28 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_28);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 28 : 
+                        int LA142_29 = input.LA(1);
+
+                         
+                        int index142_29 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_29);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 29 : 
+                        int LA142_30 = input.LA(1);
+
+                         
+                        int index142_30 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_30);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 30 : 
+                        int LA142_31 = input.LA(1);
+
+                         
+                        int index142_31 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_31);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 31 : 
+                        int LA142_32 = input.LA(1);
+
+                         
+                        int index142_32 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index142_32);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 142, _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\u0083\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\15\2\1\1\27\2\27\uffff\2\2\12\uffff\1\2\1\uffff\32\2\1\uffff\1\2\13\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 DFA151 extends DFA {
+
+        public DFA151(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 151;
+            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 "18289: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 LA151_1 = input.LA(1);
+
+                         
+                        int index151_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred212_InternalCubeDSL()) ) {s = 78;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index151_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 151, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA154 extends DFA {
+
+        public DFA154(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 154;
+            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 "18559: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 LA154_1 = input.LA(1);
+
+                         
+                        int index154_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred215_InternalCubeDSL()) ) {s = 78;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index154_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 154, _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[]{0x0000800000000002L});
+    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000012L});
+    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000800000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000000000L,0x0000000000009800L});
+    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008000L});
+    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
+    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000400L});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
+    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000400L});
+    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010800L});
+    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000000000002L,0x0000000000010000L});
+    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000000000010L,0x01C0000000000400L});
+    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000000000000L,0x0200000000000000L});
+    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000000000000L,0x0000000000202800L});
+    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000000000002L,0x0000000000002000L});
+    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
+    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000000000000L,0x0000000000060800L});
+    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000000000002L,0x0000000000040000L});
+    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000000000000L,0x0C00000000000400L});
+    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x4000000000000000L,0x00000000000001FFL});
+    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100800L});
+    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000000000000002L,0x0000000000100000L});
+    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000000000000000L,0x1000000000000000L});
+    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0xFE00000000000000L});
+    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x01F8000000000000L});
+    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000000000000000L,0x2000000000000000L});
+    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000080000000000L});
+    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000080000000002L});
+    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000800000000000L});
+    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000400000000010L,0x4000000000000000L});
+    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0001000000000010L});
+    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000001000000010L});
+    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000000000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0007E10C080001F0L,0x00017FC533800400L,0x0000000000000008L});
+    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000000002L,0x0000000004000000L});
+    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0007E10C080001F0L,0x00017FC531800400L,0x0000000000000008L});
+    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0007E10C080001F0L,0x00017FC539800400L,0x0000000000000008L});
+    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
+    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0001E00000000010L});
+    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x000000000C1F0000L});
+    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000000008000000L});
+    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0000000006000000L});
+    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0000000000004000L});
+    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0000000000004002L});
+    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0000000000008002L});
+    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000000001E00000L});
+    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0000000001E00002L});
+    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x000000000E000000L,0x0000000040000000L});
+    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x000000000E000002L,0x0000000040000000L});
+    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000000080000010L,0x0000000001000000L});
+    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
+    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x00000003FC000000L});
+    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x00000003FC000002L});
+    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x0000000088000000L});
+    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x0000000C00000000L});
+    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x0000000C00000002L});
+    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x000000F000000000L});
+    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x000000F000000002L});
+    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x0000010C00000000L});
+    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
+    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
+    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x0000060000000000L});
+    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x0000080000000000L,0x8000000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0000080000000002L,0x8000000000000000L,0x0000000000000001L});
+    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x0000080000000000L,0x8000000000000000L});
+    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0003E00008000010L});
+    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0000000000000000L,0x0000000021000000L});
+    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000000080000010L,0x0004000001000000L});
+    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x0000000004000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x0007E10C880001F0L,0x00017FC533800400L,0x000000000000000AL});
+    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x0007E10C080001F0L,0x00017FC531800C00L,0x0000000000000008L});
+    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x0007F10C880001F0L,0x00017FC531800400L,0x000000000000000EL});
+    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x0000000080000010L,0x0000000001000000L,0x0000000000000002L});
+    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x0007F10C080001F2L,0x00017FC531800400L,0x000000000000000CL});
+    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L});
+    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
+    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
+    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
+    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0007E10C880001F0L,0x00017FC531800400L,0x0000000000000008L});
+    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0000000080000010L,0x0000003805000800L});
+    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000080000012L,0x0000002805000000L});
+    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0000000000000000L,0x0000000800000000L});
+    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0000000080000010L,0x0000002805000000L});
+    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
+    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x0007F10C080001F0L,0x00017FC531C00400L,0x000000000000000CL});
+    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0007E10C080001F0L,0x00017FC531C00400L,0x0000000000000008L});
+    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0007F10C080001F0L,0x00017FC531800400L,0x000000000000000CL});
+    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0000000000000000L,0x0000008000000000L});
+    public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+    public static final BitSet FOLLOW_108 = new BitSet(new long[]{0x0007F10C080001F0L,0x00017FC531800C00L,0x000000000000000CL});
+    public static final BitSet FOLLOW_109 = new BitSet(new long[]{0x0000100000000000L,0x0000000000000000L,0x0000000000000004L});
+    public static final BitSet FOLLOW_110 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_111 = new BitSet(new long[]{0x0000000008000000L,0x0000000021000000L});
+    public static final BitSet FOLLOW_112 = new BitSet(new long[]{0x0004000000000000L,0x0000000000000000L,0x0000000000000008L});
+    public static final BitSet FOLLOW_113 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
+    public static final BitSet FOLLOW_114 = new BitSet(new long[]{0x00000000000001C0L});
+    public static final BitSet FOLLOW_115 = new BitSet(new long[]{0x00040000000001E0L,0x00000C0030000000L,0x0000000000000008L});
+    public static final BitSet FOLLOW_116 = new BitSet(new long[]{0x0000000000000000L,0x0000000022000000L});
+    public static final BitSet FOLLOW_117 = new BitSet(new long[]{0x0000000000000002L,0x0000000020000000L});
+    public static final BitSet FOLLOW_118 = new BitSet(new long[]{0x0000000000000000L,0x0000100000000000L});
+    public static final BitSet FOLLOW_119 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_120 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_121 = new BitSet(new long[]{0x0000000000000000L,0x0002800000000000L});
+    public static final BitSet FOLLOW_122 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_123 = new BitSet(new long[]{0x0000000000000002L,0x0002000000000000L});
+    public static final BitSet FOLLOW_124 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_125 = new BitSet(new long[]{0x0000000000000180L});
+    public static final BitSet FOLLOW_126 = new BitSet(new long[]{0x0000000080000010L,0x0000000003000000L});
+    public static final BitSet FOLLOW_127 = new BitSet(new long[]{0x0002200000000000L});
+    public static final BitSet FOLLOW_128 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_129 = new BitSet(new long[]{0x0000000000000002L,0x0008000000000000L});
+    public static final BitSet FOLLOW_130 = new BitSet(new long[]{0x0000001000000000L});
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.cubedsl.ide/src/org/eclipse/osbp/xtext/cubedsl/ide/CubeDSLIdeModule.java b/org.eclipse.osbp.xtext.cubedsl.ide/src/org/eclipse/osbp/xtext/cubedsl/ide/CubeDSLIdeModule.java
new file mode 100644
index 0000000..4e122ed
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ide/src/org/eclipse/osbp/xtext/cubedsl/ide/CubeDSLIdeModule.java
@@ -0,0 +1,11 @@
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.osbp.xtext.cubedsl.ide;
+
+
+/**
+ * Use this class to register ide components.
+ */
+public class CubeDSLIdeModule extends AbstractCubeDSLIdeModule {
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ide/src/org/eclipse/osbp/xtext/cubedsl/ide/CubeDSLIdeSetup.java b/org.eclipse.osbp.xtext.cubedsl.ide/src/org/eclipse/osbp/xtext/cubedsl/ide/CubeDSLIdeSetup.java
new file mode 100644
index 0000000..3a19d24
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ide/src/org/eclipse/osbp/xtext/cubedsl/ide/CubeDSLIdeSetup.java
@@ -0,0 +1,22 @@
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.osbp.xtext.cubedsl.ide;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLRuntimeModule;
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLStandaloneSetup;
+import org.eclipse.xtext.util.Modules2;
+
+/**
+ * Initialization support for running Xtext languages as language servers.
+ */
+public class CubeDSLIdeSetup extends CubeDSLStandaloneSetup {
+
+	@Override
+	public Injector createInjector() {
+		return Guice.createInjector(Modules2.mixin(new CubeDSLRuntimeModule(), new CubeDSLIdeModule()));
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.tests/.classpath b/org.eclipse.osbp.xtext.cubedsl.tests/.classpath
new file mode 100644
index 0000000..b4d2d11
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.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="xtend-gen"/>
+	<classpathentry kind="src" path="src-gen/"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.xtext.cubedsl.tests/.gitignore b/org.eclipse.osbp.xtext.cubedsl.tests/.gitignore
new file mode 100644
index 0000000..3e39898
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.tests/.gitignore
@@ -0,0 +1,6 @@
+/bin/
+
+/emf-gen/
+#/src-gen/
+/xtend-gen/
+/target/
diff --git a/org.eclipse.osbp.xtext.cubedsl.tests/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.cubedsl.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.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.cubedsl.tests/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.xtext.cubedsl.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.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.cubedsl.tests/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.cubedsl.tests/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.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.cubedsl.tests/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.cubedsl.tests/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.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.cubedsl.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.cubedsl.tests/META-INF/MANIFEST.MF
index 9258911..ae5bd5d 100644
--- a/org.eclipse.osbp.xtext.cubedsl.tests/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.xtext.cubedsl.tests/META-INF/MANIFEST.MF
@@ -8,10 +8,13 @@
 Require-Bundle: org.eclipse.osbp.xtext.cubedsl;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.cubedsl.ui;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.core.runtime,
- org.eclipse.xtext.junit4;bundle-version="[2.7.3,2.8.0)",
+ 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"
+ com.google.inject;bundle-version="3.0.0",
+ org.eclipse.xtext.xbase.lib,
+ org.eclipse.xtext.testing,
+ org.eclipse.xtext.xbase.testing
 Import-Package: org.apache.log4j,
  org.junit;version="4.5.0",
  org.junit.runner;version="4.5.0",
@@ -21,4 +24,4 @@
  org.junit.runners.model;version="4.5.0",
  org.hamcrest.core
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Export-Package: org.eclipse.osbp.xtext.cubedsl;version="0.9.0"
+Export-Package: org.eclipse.osbp.xtext.cubedsl.tests;x-internal=true
diff --git a/org.eclipse.osbp.xtext.cubedsl.tests/src-gen/org/eclipse/osbp/xtext/cubedsl/tests/CubeDSLInjectorProvider.java b/org.eclipse.osbp.xtext.cubedsl.tests/src-gen/org/eclipse/osbp/xtext/cubedsl/tests/CubeDSLInjectorProvider.java
new file mode 100644
index 0000000..f68e3e2
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.tests/src-gen/org/eclipse/osbp/xtext/cubedsl/tests/CubeDSLInjectorProvider.java
@@ -0,0 +1,66 @@
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.osbp.xtext.cubedsl.tests;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLRuntimeModule;
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLStandaloneSetup;
+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 CubeDSLInjectorProvider 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 CubeDSLStandaloneSetup() {
+			@Override
+			public Injector createInjector() {
+				return Guice.createInjector(createRuntimeModule());
+			}
+		}.createInjectorAndDoEMFRegistration();
+	}
+
+	protected CubeDSLRuntimeModule createRuntimeModule() {
+		// make it work also with Maven/Tycho and OSGI
+		// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=493672
+		return new CubeDSLRuntimeModule() {
+			@Override
+			public ClassLoader bindClassLoaderToInstance() {
+				return CubeDSLInjectorProvider.class
+						.getClassLoader();
+			}
+		};
+	}
+
+	@Override
+	public void restoreRegistry() {
+		stateBeforeInjectorCreation.restoreGlobalState();
+	}
+
+	@Override
+	public void setupRegistry() {
+		getInjector();
+		stateAfterInjectorCreation.restoreGlobalState();
+	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl.tests/src/org/eclipse/osbp/xtext/cubedsl/tests/CubeDSLParsingTest.xtend b/org.eclipse.osbp.xtext.cubedsl.tests/src/org/eclipse/osbp/xtext/cubedsl/tests/CubeDSLParsingTest.xtend
new file mode 100644
index 0000000..a917be5
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.tests/src/org/eclipse/osbp/xtext/cubedsl/tests/CubeDSLParsingTest.xtend
@@ -0,0 +1,29 @@
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.osbp.xtext.cubedsl.tests
+
+import com.google.inject.Inject
+import org.eclipse.osbp.xtext.cubedsl.CubeModel
+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(CubeDSLInjectorProvider)
+class CubeDSLParsingTest {
+	@Inject
+	ParseHelper<CubeModel> 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.cubedsl.ui/.classpath b/org.eclipse.osbp.xtext.cubedsl.ui/.classpath
new file mode 100644
index 0000000..0377d77
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.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.cubedsl.ui/.gitignore b/org.eclipse.osbp.xtext.cubedsl.ui/.gitignore
new file mode 100644
index 0000000..b5d5c06
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/.gitignore
@@ -0,0 +1,10 @@
+/bin/
+/emf-gen/
+/xtend-gen/
+# exclude everything inside /src-gen except README.txt
+# see http://git-scm.com/docs/gitignore
+#!/src-gen
+#/src-gen/*
+#!/src-gen/README.txt
+/target/
+**.java._trace
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.cubedsl.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.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.cubedsl.ui/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.xtext.cubedsl.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.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.cubedsl.ui/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.cubedsl.ui/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.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.cubedsl.ui/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.cubedsl.ui/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl.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.cubedsl.ui/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.cubedsl.ui/META-INF/MANIFEST.MF
index fbba099..bf4098b 100644
--- a/org.eclipse.osbp.xtext.cubedsl.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/META-INF/MANIFEST.MF
@@ -7,30 +7,32 @@
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.slf4j.api;bundle-version="1.7.2",
  org.eclipse.osbp.xtext.cubedsl;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.xtext.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.osbp.xtext.cubedsl.ide;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.xtext.ui;bundle-version="[2.11.0,2.12.0)",
  org.eclipse.ui.editors;bundle-version="3.5.0",
  org.eclipse.ui.ide;bundle-version="3.5.0",
- org.eclipse.xtext.ui.shared;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.ui.shared;bundle-version="[2.11.0,2.12.0)",
  org.eclipse.ui,
- org.eclipse.xtext.builder;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.builder;bundle-version="[2.11.0,2.12.0)",
  org.antlr.runtime,
- org.eclipse.xtext.common.types.ui;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtext.ui.codetemplates.ui;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.common.types.ui;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.ui.codetemplates.ui;bundle-version="[2.11.0,2.12.0)",
  org.eclipse.compare,
- org.eclipse.xtext.xbase.ui;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.xbase.ui;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.11.0,2.12.0)",
  org.eclipse.jdt.debug.ui,
- org.eclipse.osbp.utils;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.basic.ui;bundle-version="[0.9.0,0.10.0)"
-Import-Package: org.apache.log4j
+ org.eclipse.osbp.xtext.basic.ui;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,
+ org.eclipse.osbp.xtext.basic.validation;version="0.9.0"
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Export-Package: org.eclipse.osbp.xtext.cubedsl.ui;version="0.9.0",
  org.eclipse.osbp.xtext.cubedsl.ui.contentassist;version="0.9.0",
- org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr;version="0.9.0",
- org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr.internal;version="0.9.0",
  org.eclipse.osbp.xtext.cubedsl.ui.internal;version="0.9.0",
  org.eclipse.osbp.xtext.cubedsl.ui.labeling;version="0.9.0",
  org.eclipse.osbp.xtext.cubedsl.ui.outline;version="0.9.0",
  org.eclipse.osbp.xtext.cubedsl.ui.quickfix;version="0.9.0"
-Bundle-Activator: org.eclipse.osbp.xtext.cubedsl.ui.internal.CubeDSLActivator
+Bundle-Activator: org.eclipse.osbp.xtext.cubedsl.ui.internal.CubedslActivator
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/plugin.xml b/org.eclipse.osbp.xtext.cubedsl.ui/plugin.xml
index f93fddd..09aeeee 100644
--- a/org.eclipse.osbp.xtext.cubedsl.ui/plugin.xml
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/plugin.xml
@@ -212,6 +212,36 @@
         </page>
     </extension>
 
+	    <!-- Organize imports  -->
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.osbp.xtext.oxtype.ui.imports.OXTypeOrganizeImportsHandler"
+            commandId="org.eclipse.xtext.xbase.ui.organizeImports">
+               <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.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.cubedsl.CubeDSL.Editor.opened">
+                    </reference>
+                </visibleWhen>
+            </command>  
+        </menuContribution>
+    </extension>
+	
+
 	<!-- Quick Outline -->
 	<extension
 		point="org.eclipse.ui.handlers">
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/plugin.xml_gen b/org.eclipse.osbp.xtext.cubedsl.ui/plugin.xml_gen
index 5a6cea1..47052d8 100644
--- a/org.eclipse.osbp.xtext.cubedsl.ui/plugin.xml_gen
+++ b/org.eclipse.osbp.xtext.cubedsl.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.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
-            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
-            default="true"
-            extensions="cube"
-            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
-            matchingStrategy="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.editor.JavaEditorInputMatcher"
-            name="CubeDSL Editor">
-        </editor>
-    </extension>
-    <extension
-        point="org.eclipse.ui.handlers">
-        <handler
-            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
-            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
-            <activeWhen>
-                <reference
-                    definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
-                </reference>
-            </activeWhen>
-        </handler>
-        <handler
-            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
-            commandId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.validate">
-         <activeWhen>
-            <reference
-                    definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
-            </reference>
-         </activeWhen>
-      	</handler>
-      	<!-- copy qualified name -->
-        <handler
-            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory: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.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+			contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+			default="true"
+			extensions="cube"
+			id="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+			matchingStrategy="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.editor.JavaEditorInputMatcher"
+			name="CubeDSL Editor">
+		</editor>
+	</extension>
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+			commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+		<handler
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+			commandId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.validate">
+		<activeWhen>
+			<reference
+					definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+			</reference>
+		</activeWhen>
+		</handler>
+		<!-- copy qualified name -->
+		<handler
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+			commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+			<activeWhen>
 				<reference definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened" />
-            </activeWhen>
-        </handler>
-        <handler
-            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
-            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
-            <activeWhen>
-            	<and>
-            		<reference definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.XtextEditor.opened" />
-	                <iterate>
+			</activeWhen>
+		</handler>
+		<handler
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+			commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+			<activeWhen>
+				<and>
+					<reference definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.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.cubedsl.CubeDSL.Editor.opened">
-            <and>
-                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
-                <with variable="activeEditor">
-                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
-                        value="org.eclipse.osbp.xtext.cubedsl.CubeDSL" 
-                        forcePluginActivation="true"/>
-                </with>        
-            </and>
-        </definition>
-        <definition id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.XtextEditor.opened">
-            <and>
-                <reference definitionId="isXtextEditorActive"/>
-                <with variable="activeEditor">
-                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
-                        value="org.eclipse.osbp.xtext.cubedsl.CubeDSL" 
-                        forcePluginActivation="true"/>
-                </with>        
-            </and>
-        </definition>
-    </extension>
-    <extension
-            point="org.eclipse.ui.preferencePages">
-        <page
-            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
-            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
-            name="CubeDSL">
-            <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
-        </page>
-        <page
-            category="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
-            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
-            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.coloring"
-            name="Syntax Coloring">
-            <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
-        </page>
-        <page
-            category="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
-            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
-            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.templates"
-            name="Templates">
-            <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
-        </page>
-    </extension>
-    <extension
-            point="org.eclipse.ui.propertyPages">
-        <page
-            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
-            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
-            name="CubeDSL">
-            <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
-            <enabledWhen>
-	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</activeWhen>
+		</handler>
+	</extension>
+	<extension point="org.eclipse.core.expressions.definitions">
+		<definition id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+			<and>
+				<reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+				<with variable="activeEditor">
+					<test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName"
+						value="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+						forcePluginActivation="true"/>
+				</with>
+			</and>
+		</definition>
+		<definition id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.XtextEditor.opened">
+			<and>
+				<reference definitionId="isXtextEditorActive"/>
+				<with variable="activeEditor">
+					<test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName"
+						value="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+						forcePluginActivation="true"/>
+				</with>
+			</and>
+		</definition>
+	</extension>
+	<extension
+			point="org.eclipse.ui.preferencePages">
+		<page
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+			id="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+			name="CubeDSL">
+			<keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+		</page>
+		<page
+			category="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+			id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.coloring"
+			name="Syntax Coloring">
+			<keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+		</page>
+		<page
+			category="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+			id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.templates"
+			name="Templates">
+			<keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+		</page>
+	</extension>
+	<extension
+			point="org.eclipse.ui.propertyPages">
+		<page
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+			id="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+			name="CubeDSL">
+			<keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+			<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.cubedsl.ui.keyword_CubeDSL"
-            label="CubeDSL"/>
-    </extension>
-    <extension
-         point="org.eclipse.ui.commands">
-      <command
-            description="Trigger expensive validation"
-            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.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.cubedsl.CubeDSL.validate"
-                 style="push"
-                 tooltip="Trigger expensive validation">
-            <visibleWhen checkEnabled="false">
-                <reference
-                    definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.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.cubedsl.CubeDSL.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.cubedsl.CubeDSL.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.cubedsl.ui.keyword_CubeDSL"
+			label="CubeDSL"/>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+	<command
+			description="Trigger expensive validation"
+			id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.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.cubedsl.CubeDSL.validate"
+				 style="push"
+				 tooltip="Trigger expensive validation">
+			<visibleWhen checkEnabled="false">
+				<reference
+					definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.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.cubedsl.CubeDSL.XtextEditor.opened" />
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.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.cubedsl.CubeDSL.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.cubedsl.CubeDSL.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.cubedsl.CubeDSL.Editor.opened">
-                	</reference>
-            	</visibleWhen>
+					<reference definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
+					</reference>
+				</visibleWhen>
 			</command>
 		</menuContribution>
 	</extension>
 	<extension point="org.eclipse.ui.handlers">
-	    <handler
-            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
-            commandId="org.eclipse.xtext.ui.editor.FindReferences">
-            <activeWhen>
-                <reference
-                    definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened">
-                </reference>
-            </activeWhen>
-        </handler>
-    </extension>   
-
-<!-- adding resource factories -->
-
+		<handler
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+			commandId="org.eclipse.xtext.ui.editor.FindReferences">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.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.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
-            uriExtension="cube">
-        </resourceServiceProvider>
-    </extension>
-
-
+		<resourceServiceProvider
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+			uriExtension="cube">
+		</resourceServiceProvider>
+	</extension>
 	<!-- marker definitions for org.eclipse.osbp.xtext.cubedsl.CubeDSL -->
 	<extension
-	        id="cubedsl.check.fast"
-	        name="CubeDSL Problem"
-	        point="org.eclipse.core.resources.markers">
-	    <super type="org.eclipse.xtext.ui.check.fast"/>
-	    <persistent value="true"/>
+			id="cubedsl.check.fast"
+			name="CubeDSL Problem"
+			point="org.eclipse.core.resources.markers">
+		<super type="org.eclipse.xtext.ui.check.fast"/>
+		<persistent value="true"/>
 	</extension>
 	<extension
-	        id="cubedsl.check.normal"
-	        name="CubeDSL Problem"
-	        point="org.eclipse.core.resources.markers">
-	    <super type="org.eclipse.xtext.ui.check.normal"/>
-	    <persistent value="true"/>
+			id="cubedsl.check.normal"
+			name="CubeDSL Problem"
+			point="org.eclipse.core.resources.markers">
+		<super type="org.eclipse.xtext.ui.check.normal"/>
+		<persistent value="true"/>
 	</extension>
 	<extension
-	        id="cubedsl.check.expensive"
-	        name="CubeDSL Problem"
-	        point="org.eclipse.core.resources.markers">
-	    <super type="org.eclipse.xtext.ui.check.expensive"/>
-	    <persistent value="true"/>
+			id="cubedsl.check.expensive"
+			name="CubeDSL 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.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
-            fileExtensions="cube"
-            >
-      </participant>
-   </extension>
-   <extension
-            point="org.eclipse.ui.preferencePages">
-        <page
-            category="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
-            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
-            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.compiler.preferencePage"
-            name="Compiler">
-            <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
-        </page>
-    </extension>
-    <extension
-            point="org.eclipse.ui.propertyPages">
-        <page
-            category="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
-            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
-            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.compiler.propertyPage"
-            name="Compiler">
-            <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
-            <enabledWhen>
-	            <adapt type="org.eclipse.core.resources.IProject"/>
+	<extension point="org.eclipse.xtext.builder.participant">
+		<participant
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
+			fileExtensions="cube"/>
+	</extension>
+	<extension point="org.eclipse.ui.preferencePages">
+		<page
+			category="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+			id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.compiler.preferencePage"
+			name="Compiler">
+			<keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+		</page>
+	</extension>
+	<extension point="org.eclipse.ui.propertyPages">
+		<page
+			category="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+			id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.compiler.propertyPage"
+			name="Compiler">
+			<keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+			<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.cubedsl.CubeDSL.OpenGeneratedCode"
+				style="push">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.Editor.opened" />
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.generator.trace.OpenGeneratedFileHandler"
+			commandId="org.eclipse.xtext.ui.OpenGeneratedFileCommand">
+			<activeWhen>
+				<reference definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.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.cubedsl.CubeDSL -->
-    <extension
-            point="org.eclipse.ui.ide.markerResolution">
-        <markerResolutionGenerator
-            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.osbp.xtext.cubedsl.ui.cubedsl.check.fast">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-        </markerResolutionGenerator>
-        <markerResolutionGenerator
-            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.osbp.xtext.cubedsl.ui.cubedsl.check.normal">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-        </markerResolutionGenerator>
-        <markerResolutionGenerator
-            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.osbp.xtext.cubedsl.ui.cubedsl.check.expensive">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-        </markerResolutionGenerator>
-    </extension>
-   	<!-- Rename Refactoring -->
+	<!-- quickfix marker resolution generator for org.eclipse.osbp.xtext.cubedsl.CubeDSL -->
+	<extension
+			point="org.eclipse.ui.ide.markerResolution">
+		<markerResolutionGenerator
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.osbp.xtext.cubedsl.ui.cubedsl.check.fast">
+			<attribute
+				name="FIXABLE_KEY"
+				value="true">
+			</attribute>
+		</markerResolutionGenerator>
+		<markerResolutionGenerator
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.osbp.xtext.cubedsl.ui.cubedsl.check.normal">
+			<attribute
+				name="FIXABLE_KEY"
+				value="true">
+			</attribute>
+		</markerResolutionGenerator>
+		<markerResolutionGenerator
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.osbp.xtext.cubedsl.ui.cubedsl.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.cubedsl.ui.CubeDSLExecutableExtensionFactory: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.cubedsl.CubeDSL.Editor.opened">
-               </reference>
-            </visibleWhen>
-         </command>
-      </menuContribution>
-   </extension>
-   <extension point="org.eclipse.ui.preferencePages">
-	    <page
-	        category="org.eclipse.osbp.xtext.cubedsl.CubeDSL"
-	        class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
-	        id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.refactoring"
-	        name="Refactoring">
-	        <keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
-	    </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.cubedsl.CubeDSL.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.cubedsl.CubeDSL"
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+			id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.refactoring"
+			name="Refactoring">
+			<keywordReference id="org.eclipse.osbp.xtext.cubedsl.ui.keyword_CubeDSL"/>
+		</page>
+	</extension>
+	<!-- Type Hierarchy  -->
+	<extension point="org.eclipse.ui.handlers">
 		<handler 
 			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory: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.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.imports.OrganizeImportsHandler"
+			commandId="org.eclipse.xtext.xbase.ui.organizeImports">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.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.cubedsl.CubeDSL.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.cubedsl.ui.CubeDSLExecutableExtensionFactory: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.cubedsl.ui.CubeDSLExecutableExtensionFactory: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.cubedsl.CubeDSL" 
-                          id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.rulerActions">
-	     <action
-	             label="Not Used"
-	             class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
-	             style="push"
-	             actionID="RulerDoubleClick"
-	             id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.doubleClickBreakpointAction"/>
-	  </editorContribution>
-   </extension>
-   <extension point="org.eclipse.ui.popupMenus">
-      <viewerContribution
-         targetID="org.eclipse.osbp.xtext.cubedsl.CubeDSL.RulerContext"
-         id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.RulerPopupActions">
-         <action
-            label="Toggle Breakpoint"
-            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
-            menubarPath="debug"
-            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.rulerContextMenu.toggleBreakpointAction">
-         </action>
-         <action
-            label="Not used"
-            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerEnableDisableBreakpointActionDelegate"
-            menubarPath="debug"
-            id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.rulerContextMenu.enableDisableBreakpointAction">
-         </action>
-         <action
-           label="Breakpoint Properties"
-           helpContextId="breakpoint_properties_action_context"
-           class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.jdt.debug.ui.actions.JavaBreakpointPropertiesRulerActionDelegate"
-           menubarPath="group.properties"
-           id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.rulerContextMenu.openBreapointPropertiesAction">
-         </action>
-      </viewerContribution>
-   </extension>
-    <!-- Introduce Local Variable Refactoring -->
+	<extension point="org.eclipse.core.runtime.adapters">
+		<factory class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory: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.cubedsl.CubeDSL" 
+			id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.rulerActions">
+			<action
+				label="Not Used"
+	 			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+				style="push"
+				actionID="RulerDoubleClick"
+				id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.doubleClickBreakpointAction"/>
+		</editorContribution>
+	</extension>
+	<extension point="org.eclipse.ui.popupMenus">
+		<viewerContribution
+			targetID="org.eclipse.osbp.xtext.cubedsl.CubeDSL.RulerContext"
+			id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.RulerPopupActions">
+			<action
+				label="Toggle Breakpoint"
+				class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+				menubarPath="debug"
+				id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.rulerContextMenu.toggleBreakpointAction">
+			</action>
+			<action
+				label="Not used"
+				class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerEnableDisableBreakpointActionDelegate"
+				menubarPath="debug"
+				id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.rulerContextMenu.enableDisableBreakpointAction">
+			</action>
+			<action
+				label="Breakpoint Properties"
+				helpContextId="breakpoint_properties_action_context"
+				class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.jdt.debug.ui.actions.JavaBreakpointPropertiesRulerActionDelegate"
+				menubarPath="group.properties"
+				id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.rulerContextMenu.openBreapointPropertiesAction">
+			</action>
+		</viewerContribution>
+	</extension>
+	<!-- Introduce Local Variable Refactoring -->
 	<extension point="org.eclipse.ui.handlers">
 		<handler 
 			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory: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.cubedsl.CubeDSL.Editor.opened">
-               </reference>
-            </visibleWhen>
-         </command>
-      </menuContribution>
-   </extension>  
-   <!-- Open implementation -->
-   <extension point="org.eclipse.ui.handlers">
-      <handler
-            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory: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.cubedsl.CubeDSL.Editor.opened">
+					</reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<!-- Open implementation -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.navigation.OpenImplementationHandler"
+			commandId="org.eclipse.xtext.xbase.ui.OpenImplementationCommand">
+			<activeWhen>
 				<reference
 					definitionId="org.eclipse.osbp.xtext.cubedsl.CubeDSL.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.cubedsl.CubeDSL.Editor.opened">
-              </reference>
-		</visibleWhen>
-         </command>
-      </menuContribution>
-   </extension>
-
-  <extension point="org.eclipse.compare.contentViewers">
-    <viewer id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.compare.contentViewers"
-            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
-            extensions="cube">
-    </viewer>
-  </extension>
-  <extension point="org.eclipse.compare.contentMergeViewers">
-    <viewer id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.compare.contentMergeViewers"
-            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
-            extensions="cube" label="CubeDSL Compare">
-     </viewer>
-  </extension>
-  <extension point="org.eclipse.ui.editors.documentProviders">
-    <provider id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.editors.documentProviders"
-            class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
-            extensions="cube">
-    </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.cubedsl.CubeDSL.Editor.opened">
+					</reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.compare.contentViewers">
+		<viewer id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.compare.contentViewers"
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+			extensions="cube">
+		</viewer>
+	</extension>
+	<extension point="org.eclipse.compare.contentMergeViewers">
+		<viewer id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.compare.contentMergeViewers"
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+			extensions="cube" label="CubeDSL Compare">
+		</viewer>
+	</extension>
+	<extension point="org.eclipse.ui.editors.documentProviders">
+		<provider id="org.eclipse.osbp.xtext.cubedsl.CubeDSL.editors.documentProviders"
+			class="org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+			extensions="cube">
+		</provider>
+	</extension>
+	<extension point="org.eclipse.team.core.fileTypes">
+		<fileTypes
+			extension="cube"
+			type="text">
+		</fileTypes>
+	</extension>
 </plugin>
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/AbstractCubeDSLUiModule.java b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/AbstractCubeDSLUiModule.java
index 2b63124..afba36b 100644
--- a/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/AbstractCubeDSLUiModule.java
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/AbstractCubeDSLUiModule.java
@@ -10,366 +10,399 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
 
 package org.eclipse.osbp.xtext.cubedsl.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.cubedsl.ide.contentassist.antlr.CubeDSLParser;
+import org.eclipse.osbp.xtext.cubedsl.ide.contentassist.antlr.PartialCubeDSLContentAssistParser;
+import org.eclipse.osbp.xtext.cubedsl.ide.contentassist.antlr.internal.InternalCubeDSLLexer;
+import org.eclipse.osbp.xtext.cubedsl.ui.contentassist.CubeDSLProposalProvider;
+import org.eclipse.osbp.xtext.cubedsl.ui.labeling.CubeDSLDescriptionLabelProvider;
+import org.eclipse.osbp.xtext.cubedsl.ui.labeling.CubeDSLLabelProvider;
+import org.eclipse.osbp.xtext.cubedsl.ui.outline.CubeDSLOutlineTreeProvider;
+import org.eclipse.osbp.xtext.cubedsl.ui.quickfix.CubeDSLQuickfixProvider;
+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.cubedsl.ui.CubeDSLUiModule}
+ * Manual modifications go to {@link CubeDSLUiModule}.
  */
 @SuppressWarnings("all")
-public abstract class AbstractCubeDSLUiModule extends DefaultUiModule {
-	
+public abstract class AbstractCubeDSLUiModule extends DefaultXbaseWithAnnotationsUiModule {
+
 	public AbstractCubeDSLUiModule(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.cubedsl.parser.antlr.internal.InternalCubeDSLLexer.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(InternalCubeDSLLexer.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.cubedsl.parser.antlr.internal.InternalCubeDSLLexer.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 CubeDSLParser.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(InternalCubeDSLLexer.class).toProvider(LexerProvider.create(InternalCubeDSLLexer.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.cubedsl.ui.labeling.CubeDSLLabelProvider.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.cubedsl.ui.labeling.CubeDSLDescriptionLabelProvider.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.cubedsl.ui.outline.CubeDSLOutlineTreeProvider.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.cubedsl.ui.outline.CubeDSLOutlineTreeProvider.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.cubedsl.ui.quickfix.CubeDSLQuickfixProvider.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.cubedsl.ui.contentassist.CubeDSLProposalProvider.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.labeling.LabelProviderFragment2
+	public Class<? extends ILabelProvider> bindILabelProvider() {
+		return CubeDSLLabelProvider.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(CubeDSLDescriptionLabelProvider.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.cubedsl.ui.contentassist.antlr.CubeDSLParser.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.outline.OutlineTreeProviderFragment2
+	public Class<? extends IOutlineTreeProvider> bindIOutlineTreeProvider() {
+		return CubeDSLOutlineTreeProvider.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
-	public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr.internal.InternalCubeDSLLexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.xtext.cubedsl.ui.contentassist.antlr.internal.InternalCubeDSLLexer.class));
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.outline.OutlineTreeProviderFragment2
+	public Class<? extends IOutlineTreeStructureProvider> bindIOutlineTreeStructureProvider() {
+		return CubeDSLOutlineTreeProvider.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.cubedsl.ui.contentassist.antlr.internal.InternalCubeDSLLexer.class);
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.quickfix.QuickfixProviderFragment2
+	public Class<? extends IssueResolutionProvider> bindIssueResolutionProvider() {
+		return CubeDSLQuickfixProvider.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 CubeDSLProposalProvider.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 PartialCubeDSLContentAssistParser.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.cubedsl.ui.contentassist.antlr.PartialCubeDSLContentAssistParser.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.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLExecutableExtensionFactory.java b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLExecutableExtensionFactory.java
index fe82f36..719c32f 100644
--- a/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLExecutableExtensionFactory.java
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLExecutableExtensionFactory.java
@@ -10,17 +10,17 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
 
 package org.eclipse.osbp.xtext.cubedsl.ui;
 
+import com.google.inject.Injector;
+import org.eclipse.osbp.xtext.cubedsl.ui.internal.CubedslActivator;
 import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
 import org.osgi.framework.Bundle;
 
-import com.google.inject.Injector;
-
-import org.eclipse.osbp.xtext.cubedsl.ui.internal.CubeDSLActivator;
-
 /**
  * This class was generated. Customizations should only happen in a newly
  * introduced subclass. 
@@ -29,12 +29,12 @@
 
 	@Override
 	protected Bundle getBundle() {
-		return CubeDSLActivator.getInstance().getBundle();
+		return CubedslActivator.getInstance().getBundle();
 	}
 	
 	@Override
 	protected Injector getInjector() {
-		return CubeDSLActivator.getInstance().getInjector(CubeDSLActivator.ORG_ECLIPSE_OSBP_XTEXT_CUBEDSL_CUBEDSL);
+		return CubedslActivator.getInstance().getInjector(CubedslActivator.ORG_ECLIPSE_OSBP_XTEXT_CUBEDSL_CUBEDSL);
 	}
 	
 }
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/AbstractCubeDSLProposalProvider.java b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/AbstractCubeDSLProposalProvider.java
index 9083f5f..7729ef5 100644
--- a/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/AbstractCubeDSLProposalProvider.java
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/AbstractCubeDSLProposalProvider.java
@@ -10,32 +10,36 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
 
 package org.eclipse.osbp.xtext.cubedsl.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 AbstractCubeDSLProposalProvider extends org.eclipse.xtext.xbase.annotations.ui.contentassist.XbaseWithAnnotationsProposalProvider {
-		
+public abstract class AbstractCubeDSLProposalProvider extends OXtypeProposalProvider {
+
+	public void completeCubeModel_ImportSection(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
 	public void completeCubeModel_Pckg(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
 	public void completeCubePackage_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeCubePackage_Imports(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
-	}
 	public void completeCubePackage_Dimensions(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
@@ -171,10 +175,7 @@
 	public void completeCubeMeasure_NotVisible(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void completeImport_ImportedNamespace(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
-	}
-    
+
 	public void complete_CubeModel(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
@@ -223,18 +224,6 @@
 	public void complete_CubeLevelLevelType(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_Import(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		// subclasses may override
-	}
-	public void complete_CubeQualifiedNameWithWildCard(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_LFQN(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/internal/CubeDSLActivator.java b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/internal/CubeDSLActivator.java
index 411b0b0..146ce48 100644
--- a/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/internal/CubeDSLActivator.java
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src-gen/org/eclipse/osbp/xtext/cubedsl/ui/internal/CubeDSLActivator.java
@@ -10,35 +10,37 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
 
 package org.eclipse.osbp.xtext.cubedsl.ui.internal;
 
-import java.util.Collections;
-import java.util.Map;
-
-import org.apache.log4j.Logger;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.eclipse.xtext.ui.shared.SharedStateModule;
-import org.eclipse.xtext.util.Modules2;
-import org.osgi.framework.BundleContext;
-
 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.cubedsl.CubeDSLRuntimeModule;
+import org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLUiModule;
+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 CubeDSLActivator extends AbstractUIPlugin {
-	
+public class CubedslActivator extends AbstractUIPlugin {
+
 	public static final String ORG_ECLIPSE_OSBP_XTEXT_CUBEDSL_CUBEDSL = "org.eclipse.osbp.xtext.cubedsl.CubeDSL";
 	
-	private static final Logger logger = Logger.getLogger(CubeDSLActivator.class);
+	private static final Logger logger = Logger.getLogger(CubedslActivator.class);
 	
-	private static CubeDSLActivator INSTANCE;
+	private static CubedslActivator INSTANCE;
 	
 	private Map<String, Injector> injectors = Collections.synchronizedMap(Maps.<String, Injector> newHashMapWithExpectedSize(1));
 	
@@ -55,7 +57,7 @@
 		super.stop(context);
 	}
 	
-	public static CubeDSLActivator getInstance() {
+	public static CubedslActivator getInstance() {
 		return INSTANCE;
 	}
 	
@@ -82,20 +84,18 @@
 			throw new RuntimeException("Failed to create injector for " + language, e);
 		}
 	}
-
+	
 	protected Module getRuntimeModule(String grammar) {
 		if (ORG_ECLIPSE_OSBP_XTEXT_CUBEDSL_CUBEDSL.equals(grammar)) {
-			return new org.eclipse.osbp.xtext.cubedsl.CubeDSLRuntimeModule();
+			return new CubeDSLRuntimeModule();
 		}
-		
 		throw new IllegalArgumentException(grammar);
 	}
 	
 	protected Module getUiModule(String grammar) {
 		if (ORG_ECLIPSE_OSBP_XTEXT_CUBEDSL_CUBEDSL.equals(grammar)) {
-			return new org.eclipse.osbp.xtext.cubedsl.ui.CubeDSLUiModule(this);
+			return new CubeDSLUiModule(this);
 		}
-		
 		throw new IllegalArgumentException(grammar);
 	}
 	
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLDocumentationTranslator.java b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLDocumentationTranslator.java
index 6b673f0..7f1bdcc 100644
--- a/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLDocumentationTranslator.java
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLDocumentationTranslator.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 CubeDSLDocumentationTranslator 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.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLUiModule.java b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLUiModule.java
index 8347626..c5bb758 100644
--- a/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLUiModule.java
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/CubeDSLUiModule.java
@@ -11,41 +11,74 @@
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
  */
- package org.eclipse.osbp.xtext.cubedsl.ui;
+package org.eclipse.osbp.xtext.cubedsl.ui;
 
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLUiModuleHelper;
+import org.eclipse.osbp.xtext.basic.ui.BasicValidationDelegate;
+import org.eclipse.osbp.xtext.basic.validation.IBasicValidatorDelegate;
+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 CubeDSLUiModule extends org.eclipse.osbp.xtext.cubedsl.ui.AbstractCubeDSLUiModule {
-	
-	private static Logger LOGGER = LoggerFactory.getLogger(CubeDSLUiModule.class);
-	
+public class CubeDSLUiModule extends
+		org.eclipse.osbp.xtext.cubedsl.ui.AbstractCubeDSLUiModule {
+
+	private static Logger LOGGER = LoggerFactory
+			.getLogger(CubeDSLUiModule.class);
+
 	public CubeDSLUiModule(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 CubeDSLEObjectHover.class;
+		return CubeDSLEObjectHover.class;
 	}
-	
+
 	@Override
 	public Class<? extends IEObjectHoverProvider> bindIEObjectHoverProvider() {
-	     return CubeDSLEObjectHoverProvider.class;
+		return CubeDSLEObjectHoverProvider.class;
 	}
-	
+
 	@Override
 	public Class<? extends IEObjectHoverDocumentationProvider> bindIEObjectHoverDocumentationProvider() {
-	      return CubeDSLEObjectHoverDocumentationProvider.class;
+		return CubeDSLEObjectHoverDocumentationProvider.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;
+	}
+
+	public Class<? extends IBasicValidatorDelegate> bindIValidatorDelegate() {
+		return BasicValidationDelegate.class;
 	}
 }
diff --git a/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/CubeDSLProposalProvider.xtend b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/CubeDSLProposalProvider.xtend
index 94dce14..f3f3cbe 100644
--- a/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/CubeDSLProposalProvider.xtend
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/contentassist/CubeDSLProposalProvider.xtend
@@ -37,7 +37,14 @@
 	@Inject TerminalsProposalProvider provider
 	@Inject BasicDSLProposalProviderHelper providerHelper
 	
-	val private final String LEVEL_TYPE = "levelType=";
+	val private final String LEVEL_TYPE = "levelType";
+
+	/**
+	 * This override will enable 1 length non letter characters as keyword.
+	 */
+	override protected boolean isKeywordWorthyToPropose(Keyword keyword) {
+		return true
+	}
 
 	override protected StyledString getKeywordDisplayString(Keyword keyword) {
 		return BasicDSLProposalProviderHelper.getKeywordDisplayString(keyword, CubeDSLDocumentationTranslator.instance())
@@ -59,7 +66,7 @@
 		while (!(eObj instanceof CubeDimension)) {
 			eObj = eObj.eContainer
 		}
-		if (eObj != null) {
+		if (eObj !== null) {
 			if (eObj instanceof CubeDimension) {
 				var lCubeDimension = eObj as CubeDimension
 				if (!lCubeDimension.typeTime) {
@@ -74,11 +81,6 @@
 		providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this)
 	}
 
-	override public void complete_CubeQualifiedNameWithWildCard(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.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/quickfix/CubeDSLQuickfixProvider.xtend b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/quickfix/CubeDSLQuickfixProvider.xtend
index 2fe97d7..46eaa43 100644
--- a/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/quickfix/CubeDSLQuickfixProvider.xtend
+++ b/org.eclipse.osbp.xtext.cubedsl.ui/src/org/eclipse/osbp/xtext/cubedsl/ui/quickfix/CubeDSLQuickfixProvider.xtend
@@ -14,27 +14,26 @@
  *  This copyright notice shows up in the generated Java code
  *
  */
- 
 package org.eclipse.osbp.xtext.cubedsl.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 CubeDSLQuickfixProvider extends org.eclipse.xtext.ui.editor.quickfix.DefaultQuickfixProvider {
-
-//	@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 CubeDSLQuickfixProvider 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.cubedsl/.classpath b/org.eclipse.osbp.xtext.cubedsl/.classpath
new file mode 100644
index 0000000..3321285
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/.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.7"/>
+	<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="src" path="emf-gen"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.xtext.cubedsl/.gitignore b/org.eclipse.osbp.xtext.cubedsl/.gitignore
new file mode 100644
index 0000000..eb5886c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/.gitignore
@@ -0,0 +1,10 @@
+/bin/
+# /emf-gen/
+# /xtend-gen/
+# exclude everything inside /src-gen except README.txt
+# see http://git-scm.com/docs/gitignore
+!/src-gen
+# /src-gen/*
+!/src-gen/README.txt
+/target/
+**.java._trace
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.cubedsl/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.cubedsl/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/.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.cubedsl/.settings/org.eclipse.emf.ecore.xcore.Xcore.prefs b/org.eclipse.osbp.xtext.cubedsl/.settings/org.eclipse.emf.ecore.xcore.Xcore.prefs
new file mode 100644
index 0000000..5e53854
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/.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.cubedsl/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.xtext.cubedsl/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..f42de36
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/.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.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/org.eclipse.osbp.xtext.cubedsl/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.cubedsl/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/.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.cubedsl/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.cubedsl/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/.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.cubedsl/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.cubedsl/META-INF/MANIFEST.MF
index aa13ce8..03487bd 100644
--- a/org.eclipse.osbp.xtext.cubedsl/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.xtext.cubedsl/META-INF/MANIFEST.MF
@@ -20,24 +20,20 @@
  org.eclipse.emf.ecore.xcore.lib,
  org.eclipse.emf.mwe.utils;bundle-version="1.3.5";resolution:=optional,
  org.eclipse.osgi.services,
- org.eclipse.xtext;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.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.xbase;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.common.types;bundle-version="[2.11.0,2.12.0)";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.xbase;bundle-version="[2.11.0,2.12.0)";visibility:=reexport,
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.11.0,2.12.0)",
  org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional,
  mondrian.osgi;bundle-version="[3.5.0,3.5.1)",
- 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.runtime.common;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.common.xtext;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.persistence;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.i18n;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.utils;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.dsl.mwe;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
- org.eclipse.emf.mwe2.launch;bundle-version="2.7.1";resolution:=optional,
+ org.eclipse.emf.mwe2.launch;bundle-version="[2.9.0,2.10.0)";resolution:=optional,
  org.eclipse.osbp.xtext.basic;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
  org.eclipse.osbp.gitinfo;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.addons;bundle-version="[0.9.0,0.10.0)",
@@ -45,7 +41,9 @@
  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.xtext.builder.xbase.setups;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
 Bundle-RequiredExecutionEnvironment: JavaSE-1.7
 Export-Package: org.eclipse.osbp.xtext.cubedsl;version="0.9.0",
  org.eclipse.osbp.xtext.cubedsl.formatting;version="0.9.0",
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeAggregatorEnum.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeAggregatorEnum.java
index 612f826..7b90d91 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeAggregatorEnum.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeAggregatorEnum.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -207,6 +207,8 @@
 	 * Returns the '<em><b>Cube Aggregator 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 CubeAggregatorEnum get(String literal) {
@@ -223,6 +225,8 @@
 	 * Returns the '<em><b>Cube Aggregator 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 CubeAggregatorEnum getByName(String name) {
@@ -239,6 +243,8 @@
 	 * Returns the '<em><b>Cube Aggregator 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 CubeAggregatorEnum get(int value) {
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeBase.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeBase.java
index 2dd6565..78f6e14 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeBase.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeBase.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -21,10 +21,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeBase#getName <em>Name</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeBase()
  * @model
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLFactory.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLFactory.java
index 73c372d..f33b36f 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLFactory.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLFactory.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLPackage.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLPackage.java
index 5966be8..80494ec 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLPackage.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLPackage.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -37,7 +37,7 @@
  * <!-- end-user-doc -->
  * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLFactory
  * @model kind="package"
- *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='cube' modelName='CubeDSL' prefix='CubeDSL' updateClasspath='false' copyrightText='Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)\n All rights reserved. This program and the accompanying materials \n are made available under the terms of the Eclipse Public License v1.0 \n which accompanies this distribution, and is available at \n http://www.eclipse.org/legal/epl-v10.html \n\n Based on ideas from Xtext, Xtend, Xcore\n  \n Contributors:  \n \t\tJos\351 C. Dom\355nguez - Initial implementation\n ' basePackage='org.eclipse.osbp.xtext'"
+ *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='cube' modelName='CubeDSL' prefix='CubeDSL' updateClasspath='false' 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 Based on ideas from Xtext, Xtend, Xcore\r\n  \r\n Contributors:  \r\n \t\tJos\351 C. Dom\355nguez - Initial implementation\r\n ' basePackage='org.eclipse.osbp.xtext'"
  *        annotation="http://www.eclipse.org/emf/2002/Ecore rootPackage='cubeDSL'"
  * @generated
  */
@@ -122,13 +122,22 @@
 	int CUBE_MODEL = 0;
 
 	/**
+	 * The feature id for the '<em><b>Import Section</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CUBE_MODEL__IMPORT_SECTION = CUBE_LAZY_RESOLVER_FEATURE_COUNT + 0;
+
+	/**
 	 * The feature id for the '<em><b>Pckg</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int CUBE_MODEL__PCKG = CUBE_LAZY_RESOLVER_FEATURE_COUNT + 0;
+	int CUBE_MODEL__PCKG = CUBE_LAZY_RESOLVER_FEATURE_COUNT + 1;
 
 	/**
 	 * The number of structural features of the '<em>Cube Model</em>' class.
@@ -137,7 +146,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CUBE_MODEL_FEATURE_COUNT = CUBE_LAZY_RESOLVER_FEATURE_COUNT + 1;
+	int CUBE_MODEL_FEATURE_COUNT = CUBE_LAZY_RESOLVER_FEATURE_COUNT + 2;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -177,15 +186,6 @@
 	int CUBE_PACKAGE__NAME = OSBPTypesPackage.LPACKAGE__NAME;
 
 	/**
-	 * The feature id for the '<em><b>Imports</b></em>' containment reference list.
-	 * <!-- begin-user-doc -->
-	 * <!-- end-user-doc -->
-	 * @generated
-	 * @ordered
-	 */
-	int CUBE_PACKAGE__IMPORTS = OSBPTypesPackage.LPACKAGE__IMPORTS;
-
-	/**
 	 * The feature id for the '<em><b>Dimensions</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -219,7 +219,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CUBE_PACKAGE___ERESOLVE_PROXY__OBJECT = OSBPTypesPackage.LPACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT;
+	int CUBE_PACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT = OSBPTypesPackage.LPACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT;
 
 	/**
 	 * The number of operations of the '<em>Cube Package</em>' class.
@@ -1195,6 +1195,17 @@
 	EClass getCubeModel();
 
 	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.cubedsl.CubeModel#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.cubedsl.CubeModel#getImportSection()
+	 * @see #getCubeModel()
+	 * @generated
+	 */
+	EReference getCubeModel_ImportSection();
+
+	/**
 	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.cubedsl.CubeModel#getPckg <em>Pckg</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1858,6 +1869,14 @@
 		EClass CUBE_MODEL = eINSTANCE.getCubeModel();
 
 		/**
+		 * The meta object literal for the '<em><b>Import Section</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CUBE_MODEL__IMPORT_SECTION = eINSTANCE.getCubeModel_ImportSection();
+
+		/**
 		 * The meta object literal for the '<em><b>Pckg</b></em>' containment reference feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimension.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimension.java
index 7da988f..c36e191 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimension.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimension.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -22,11 +22,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeDimension#isTypeTime <em>Type Time</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeDimension#getHierarchies <em>Hierarchies</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeDimension()
  * @model
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionEntity.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionEntity.java
index 4f7cba3..7370c12 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionEntity.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionEntity.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -22,12 +22,12 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity#isKey <em>Key</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity#getHierarchLevels <em>Hierarch Levels</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity#getDimEntity <em>Dim Entity</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeDimensionEntity()
  * @model
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionEntityEntity.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionEntityEntity.java
index e1efed9..1e6e14d 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionEntityEntity.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionEntityEntity.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -22,10 +22,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity#getOverValue <em>Over Value</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeDimensionEntityEntity()
  * @model
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionUsage.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionUsage.java
index 7907252..a01b7d4 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionUsage.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeDimensionUsage.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -22,11 +22,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage#getSourceValue <em>Source Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeDimensionUsage#getOverValue <em>Over Value</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeDimensionUsage()
  * @model
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeEntity.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeEntity.java
index 8dc87ab..8760d36 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeEntity.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeEntity.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -23,12 +23,12 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeEntity#isKey <em>Key</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeEntity#getEntityValue <em>Entity Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeEntity#getKeyValue <em>Key Value</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeEntity()
  * @model
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeEntityRef.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeEntityRef.java
index f582746..c13d067 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeEntityRef.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeEntityRef.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -21,10 +21,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeEntityRef#getEntityRef <em>Entity Ref</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeEntityRef()
  * @model
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeHierarchy.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeHierarchy.java
index b7b94a7..cab6dab 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeHierarchy.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeHierarchy.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -21,6 +21,7 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#isHasAll <em>Has All</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#isAllMemberName <em>All Member Name</em>}</li>
@@ -29,7 +30,6 @@
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#getDefaultMemberValue <em>Default Member Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeHierarchy#getCubeDimEntity <em>Cube Dim Entity</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeHierarchy()
  * @model
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLazyResolver.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLazyResolver.java
index 13d1d86..0528911 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLazyResolver.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLazyResolver.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -31,7 +31,7 @@
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @model unique="false" proxyDataType="org.eclipse.osbp.xtext.cubedsl.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.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevel.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevel.java
index da570de..c2712c7 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevel.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevel.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -24,6 +24,7 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeLevel#isUniqueMembers <em>Unique Members</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeLevel#isLevelType <em>Level Type</em>}</li>
@@ -31,7 +32,6 @@
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeLevel#getLevelTypeValue <em>Level Type Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeLevel#getProperties <em>Properties</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeLevel()
  * @model
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelLevelType.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelLevelType.java
index e307862..94169f4 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelLevelType.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelLevelType.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -311,6 +311,8 @@
 	 * Returns the '<em><b>Cube Level Level Type</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 CubeLevelLevelType get(String literal) {
@@ -327,6 +329,8 @@
 	 * Returns the '<em><b>Cube Level Level Type</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 CubeLevelLevelType getByName(String name) {
@@ -343,6 +347,8 @@
 	 * Returns the '<em><b>Cube Level Level Type</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 CubeLevelLevelType get(int value) {
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelProp.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelProp.java
index ef9e788..884a350 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelProp.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelProp.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -22,12 +22,12 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeLevelProp#isType <em>Type</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeLevelProp#getLevelPropColValue <em>Level Prop Col Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeLevelProp#getTypeValue <em>Type Value</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeLevelProp()
  * @model
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelPropType.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelPropType.java
index 69acbab..e88bd21 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelPropType.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeLevelPropType.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -233,6 +233,8 @@
 	 * Returns the '<em><b>Cube Level Prop Type</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 CubeLevelPropType get(String literal) {
@@ -249,6 +251,8 @@
 	 * Returns the '<em><b>Cube Level Prop Type</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 CubeLevelPropType getByName(String name) {
@@ -265,6 +269,8 @@
 	 * Returns the '<em><b>Cube Level Prop Type</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 CubeLevelPropType get(int value) {
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeMeasure.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeMeasure.java
index bb8e4b0..ab99440 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeMeasure.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeMeasure.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -22,12 +22,12 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeMeasure#isNotVisible <em>Not Visible</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeMeasure#getAggregator <em>Aggregator</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeMeasure#getMeasureCol <em>Measure Col</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeMeasure()
  * @model
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeModel.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeModel.java
index 629f3ad..3cc5680 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeModel.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeModel.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -13,6 +13,7 @@
  */
 package org.eclipse.osbp.xtext.cubedsl;
 
+import org.eclipse.xtext.xtype.XImportSection;
 
 /**
  * <!-- begin-user-doc -->
@@ -21,10 +22,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeModel#getImportSection <em>Import Section</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeModel#getPckg <em>Pckg</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeModel()
  * @model
@@ -32,6 +34,32 @@
  */
 public interface CubeModel extends CubeLazyResolver {
 	/**
+	 * 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.cubedsl.CubeDSLPackage#getCubeModel_ImportSection()
+	 * @model containment="true"
+	 * @generated
+	 */
+	XImportSection getImportSection();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.cubedsl.CubeModel#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>Pckg</b></em>' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <p>
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubePackage.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubePackage.java
index 0bc0260..391f154 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubePackage.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubePackage.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -24,11 +24,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubePackage#getDimensions <em>Dimensions</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubePackage#getCubes <em>Cubes</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubePackage()
  * @model
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeType.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeType.java
index a42cf71..cea7e0d 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeType.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeType.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -21,12 +21,12 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeType#isDefaultMeasure <em>Default Measure</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeType#getDefaultMeasureValue <em>Default Measure Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeType#getCubeTypeEntity <em>Cube Type Entity</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeType()
  * @model
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeTypeEntity.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeTypeEntity.java
index ba3e6cd..8e2d831 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeTypeEntity.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/CubeTypeEntity.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -22,12 +22,12 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity#isKey <em>Key</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity#getDimensionUsages <em>Dimension Usages</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity#getMeasures <em>Measures</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage#getCubeTypeEntity()
  * @model
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeBaseImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeBaseImpl.java
index 2b079de..4c5fa95 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeBaseImpl.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeBaseImpl.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -28,10 +28,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeBaseImpl#getName <em>Name</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDSLFactoryImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDSLFactoryImpl.java
index b2ce825..cdd1270 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDSLFactoryImpl.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDSLFactoryImpl.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDSLPackageImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDSLPackageImpl.java
index 65c56e9..158ed2e 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDSLPackageImpl.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDSLPackageImpl.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -51,7 +51,7 @@
 import org.eclipse.osbp.xtext.cubedsl.CubeType;
 import org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity;
 
-import org.eclipse.xtext.xbase.XbasePackage;
+import org.eclipse.xtext.xtype.XtypePackage;
 
 /**
  * <!-- begin-user-doc -->
@@ -247,10 +247,7 @@
 		isInited = true;
 
 		// Initialize simple dependencies
-		EcorePackage.eINSTANCE.eClass();
 		OSBPEntityPackage.eINSTANCE.eClass();
-		XbasePackage.eINSTANCE.eClass();
-		OSBPTypesPackage.eINSTANCE.eClass();
 
 		// Create package meta-data objects
 		theCubeDSLPackage.createPackageContents();
@@ -281,7 +278,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getCubeModel_Pckg() {
+	public EReference getCubeModel_ImportSection() {
 		return (EReference)cubeModelEClass.getEStructuralFeatures().get(0);
 	}
 
@@ -290,6 +287,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EReference getCubeModel_Pckg() {
+		return (EReference)cubeModelEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EClass getCubeLazyResolver() {
 		return cubeLazyResolverEClass;
 	}
@@ -836,6 +842,7 @@
 
 		// Create classes and their features
 		cubeModelEClass = createEClass(CUBE_MODEL);
+		createEReference(cubeModelEClass, CUBE_MODEL__IMPORT_SECTION);
 		createEReference(cubeModelEClass, CUBE_MODEL__PCKG);
 
 		cubeLazyResolverEClass = createEClass(CUBE_LAZY_RESOLVER);
@@ -940,6 +947,7 @@
 		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);
 		OSBPEntityPackage theOSBPEntityPackage = (OSBPEntityPackage)EPackage.Registry.INSTANCE.getEPackage(OSBPEntityPackage.eNS_URI);
@@ -967,6 +975,7 @@
 
 		// Initialize classes, features, and operations; add parameters
 		initEClass(cubeModelEClass, CubeModel.class, "CubeModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getCubeModel_ImportSection(), theXtypePackage.getXImportSection(), null, "importSection", null, 0, 1, CubeModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getCubeModel_Pckg(), this.getCubePackage(), null, "pckg", null, 0, 1, CubeModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(cubeLazyResolverEClass, CubeLazyResolver.class, "CubeLazyResolver", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionEntityEntityImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionEntityEntityImpl.java
index bf6919f..4d424d3 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionEntityEntityImpl.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionEntityEntityImpl.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -31,10 +31,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionEntityEntityImpl#getOverValue <em>Over Value</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionEntityImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionEntityImpl.java
index fdda923..8f15d09 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionEntityImpl.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionEntityImpl.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -39,12 +39,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionEntityImpl#isKey <em>Key</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionEntityImpl#getHierarchLevels <em>Hierarch Levels</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionEntityImpl#getDimEntity <em>Dim Entity</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionImpl.java
index a9c0b51..8eae743 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionImpl.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionImpl.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -38,11 +38,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionImpl#isTypeTime <em>Type Time</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionImpl#getHierarchies <em>Hierarchies</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionUsageImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionUsageImpl.java
index fc70e51..4363d1b 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionUsageImpl.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeDimensionUsageImpl.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -32,11 +32,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionUsageImpl#getSourceValue <em>Source Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeDimensionUsageImpl#getOverValue <em>Over Value</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeEntityImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeEntityImpl.java
index 1674f14..cc908e6 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeEntityImpl.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeEntityImpl.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -32,12 +32,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeEntityImpl#isKey <em>Key</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeEntityImpl#getEntityValue <em>Entity Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeEntityImpl#getKeyValue <em>Key Value</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeEntityRefImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeEntityRefImpl.java
index 9ead3d8..406c5cf 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeEntityRefImpl.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeEntityRefImpl.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -31,10 +31,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeEntityRefImpl#getEntityRef <em>Entity Ref</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeHierarchyImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeHierarchyImpl.java
index e8e5abb..56b8127 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeHierarchyImpl.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeHierarchyImpl.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -31,6 +31,7 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeHierarchyImpl#isHasAll <em>Has All</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeHierarchyImpl#isAllMemberName <em>All Member Name</em>}</li>
@@ -39,7 +40,6 @@
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeHierarchyImpl#getDefaultMemberValue <em>Default Member Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeHierarchyImpl#getCubeDimEntity <em>Cube Dim Entity</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLazyResolverImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLazyResolverImpl.java
index 6a82126..de32709 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLazyResolverImpl.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLazyResolverImpl.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -23,20 +23,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.cubedsl.CubeDSLPackage;
 import org.eclipse.osbp.xtext.cubedsl.CubeLazyResolver;
 
+import org.eclipse.osbp.xtext.oxtype.resource.EcoreUtil3;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Cube Lazy Resolver</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
@@ -66,9 +61,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.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLevelImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLevelImpl.java
index db49ad1..10d4969 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLevelImpl.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLevelImpl.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -41,6 +41,7 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelImpl#isUniqueMembers <em>Unique Members</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelImpl#isLevelType <em>Level Type</em>}</li>
@@ -48,7 +49,6 @@
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelImpl#getLevelTypeValue <em>Level Type Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelImpl#getProperties <em>Properties</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLevelPropImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLevelPropImpl.java
index 6cac7c3..218a37e 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLevelPropImpl.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeLevelPropImpl.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -32,12 +32,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelPropImpl#isType <em>Type</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelPropImpl#getLevelPropColValue <em>Level Prop Col Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeLevelPropImpl#getTypeValue <em>Type Value</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeMeasureImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeMeasureImpl.java
index e8fe8c0..e2619ee 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeMeasureImpl.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeMeasureImpl.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -32,12 +32,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeMeasureImpl#isNotVisible <em>Not Visible</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeMeasureImpl#getAggregator <em>Aggregator</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeMeasureImpl#getMeasureCol <em>Measure Col</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeModelImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeModelImpl.java
index e661a41..53b5774 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeModelImpl.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeModelImpl.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -25,21 +25,34 @@
 import org.eclipse.osbp.xtext.cubedsl.CubeModel;
 import org.eclipse.osbp.xtext.cubedsl.CubePackage;
 
+import org.eclipse.xtext.xtype.XImportSection;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Cube Model</b></em>'.
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeModelImpl#getImportSection <em>Import Section</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeModelImpl#getPckg <em>Pckg</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
 public class CubeModelImpl extends CubeLazyResolverImpl implements CubeModel {
 	/**
+	 * 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 #getPckg() <em>Pckg</em>}' containment reference.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -73,6 +86,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, CubeDSLPackage.CUBE_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 - CubeDSLPackage.CUBE_MODEL__IMPORT_SECTION, null, msgs);
+			if (newImportSection != null)
+				msgs = ((InternalEObject)newImportSection).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - CubeDSLPackage.CUBE_MODEL__IMPORT_SECTION, null, msgs);
+			msgs = basicSetImportSection(newImportSection, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, CubeDSLPackage.CUBE_MODEL__IMPORT_SECTION, newImportSection, newImportSection));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public CubePackage getPckg() {
 		return pckg;
 	}
@@ -119,6 +175,8 @@
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
+			case CubeDSLPackage.CUBE_MODEL__IMPORT_SECTION:
+				return basicSetImportSection(null, msgs);
 			case CubeDSLPackage.CUBE_MODEL__PCKG:
 				return basicSetPckg(null, msgs);
 		}
@@ -133,6 +191,8 @@
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case CubeDSLPackage.CUBE_MODEL__IMPORT_SECTION:
+				return getImportSection();
 			case CubeDSLPackage.CUBE_MODEL__PCKG:
 				return getPckg();
 		}
@@ -147,6 +207,9 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case CubeDSLPackage.CUBE_MODEL__IMPORT_SECTION:
+				setImportSection((XImportSection)newValue);
+				return;
 			case CubeDSLPackage.CUBE_MODEL__PCKG:
 				setPckg((CubePackage)newValue);
 				return;
@@ -162,6 +225,9 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case CubeDSLPackage.CUBE_MODEL__IMPORT_SECTION:
+				setImportSection((XImportSection)null);
+				return;
 			case CubeDSLPackage.CUBE_MODEL__PCKG:
 				setPckg((CubePackage)null);
 				return;
@@ -177,6 +243,8 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case CubeDSLPackage.CUBE_MODEL__IMPORT_SECTION:
+				return importSection != null;
 			case CubeDSLPackage.CUBE_MODEL__PCKG:
 				return pckg != null;
 		}
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubePackageImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubePackageImpl.java
index a879b0b..79eb0a8 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubePackageImpl.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubePackageImpl.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -38,11 +38,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubePackageImpl#getDimensions <em>Dimensions</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubePackageImpl#getCubes <em>Cubes</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeTypeEntityImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeTypeEntityImpl.java
index ecec568..f2114c9 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeTypeEntityImpl.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeTypeEntityImpl.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -39,12 +39,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeTypeEntityImpl#isKey <em>Key</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeTypeEntityImpl#getDimensionUsages <em>Dimension Usages</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeTypeEntityImpl#getMeasures <em>Measures</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeTypeImpl.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeTypeImpl.java
index fbf79d9..aac1b1f 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeTypeImpl.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/impl/CubeTypeImpl.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -31,12 +31,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeTypeImpl#isDefaultMeasure <em>Default Measure</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeTypeImpl#getDefaultMeasureValue <em>Default Measure Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.cubedsl.impl.CubeTypeImpl#getCubeTypeEntity <em>Cube Type Entity</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/util/CubeDSLAdapterFactory.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/util/CubeDSLAdapterFactory.java
index 44056de..4ecacc8 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/util/CubeDSLAdapterFactory.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/util/CubeDSLAdapterFactory.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
diff --git a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/util/CubeDSLSwitch.java b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/util/CubeDSLSwitch.java
index c275317..a2ca62f 100644
--- a/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/util/CubeDSLSwitch.java
+++ b/org.eclipse.osbp.xtext.cubedsl/emf-gen/org/eclipse/osbp/xtext/cubedsl/util/CubeDSLSwitch.java
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2011, 2014 - Loetz GmbH&Co.KG (Heidelberg)
+ * 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 
@@ -61,7 +61,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
 	 */
diff --git a/org.eclipse.osbp.xtext.cubedsl/model/CubeDSL.xcore b/org.eclipse.osbp.xtext.cubedsl/model/CubeDSL.xcore
index 937b1e9..5766719 100644
--- a/org.eclipse.osbp.xtext.cubedsl/model/CubeDSL.xcore
+++ b/org.eclipse.osbp.xtext.cubedsl/model/CubeDSL.xcore
@@ -23,10 +23,12 @@
 import org.eclipse.osbp.dsl.semantic.entity.LEntity
 import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature
 import org.eclipse.emf.ecore.InternalEObject
-import org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3
+import org.eclipse.osbp.xtext.oxtype.resource.EcoreUtil3
 import org.eclipse.emf.ecore.EObject
+import org.eclipse.xtext.xtype.XImportSection
 
 class CubeModel extends CubeLazyResolver {
+	contains XImportSection importSection
 	contains CubePackage pckg
 }
 
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/AbstractCubeDSLRuntimeModule.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/AbstractCubeDSLRuntimeModule.java
index 46d3ec7..e4fe41f 100644
--- a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/AbstractCubeDSLRuntimeModule.java
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/AbstractCubeDSLRuntimeModule.java
@@ -10,23 +10,75 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
 
 package org.eclipse.osbp.xtext.cubedsl;
 
-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.cubedsl.jvmmodel.CubeDSLJvmModelInferrer;
+import org.eclipse.osbp.xtext.cubedsl.parser.antlr.CubeDSLAntlrTokenFileProvider;
+import org.eclipse.osbp.xtext.cubedsl.parser.antlr.CubeDSLParser;
+import org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal.InternalCubeDSLLexer;
+import org.eclipse.osbp.xtext.cubedsl.scoping.CubeDSLScopeProvider;
+import org.eclipse.osbp.xtext.cubedsl.serializer.CubeDSLSemanticSequencer;
+import org.eclipse.osbp.xtext.cubedsl.serializer.CubeDSLSyntacticSequencer;
+import org.eclipse.osbp.xtext.cubedsl.services.CubeDSLGrammarAccess;
+import org.eclipse.osbp.xtext.cubedsl.validation.CubeDSLValidator;
+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.cubedsl.CubeDSLRuntimeModule}
+ * Manual modifications go to {@link CubeDSLRuntimeModule}.
  */
- @SuppressWarnings("all")
-public abstract class AbstractCubeDSLRuntimeModule extends DefaultRuntimeModule {
+@SuppressWarnings("all")
+public abstract class AbstractCubeDSLRuntimeModule extends DefaultXbaseWithAnnotationsRuntimeModule {
 
 	protected Properties properties = null;
 
@@ -45,304 +97,147 @@
 			binder.bind(String.class).annotatedWith(Names.named(Constants.FILE_EXTENSIONS)).toInstance("cube");
 	}
 	
-	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
-	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISemanticSequencer> bindISemanticSequencer() {
-		return org.eclipse.osbp.xtext.cubedsl.serializer.CubeDSLSemanticSequencer.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
-	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer> bindISyntacticSequencer() {
-		return org.eclipse.osbp.xtext.cubedsl.serializer.CubeDSLSyntacticSequencer.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.cubedsl.parser.antlr.CubeDSLParser.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.cubedsl.parser.antlr.CubeDSLAntlrTokenFileProvider.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.cubedsl.parser.antlr.internal.InternalCubeDSLLexer.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
-	public com.google.inject.Provider<org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal.InternalCubeDSLLexer> provideInternalCubeDSLLexer() {
-		return org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal.InternalCubeDSLLexer.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.cubedsl.parser.antlr.internal.InternalCubeDSLLexer.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.validation.ValidatorFragment
-	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.osbp.xtext.cubedsl.validation.CubeDSLValidator> bindCubeDSLValidator() {
-		return org.eclipse.osbp.xtext.cubedsl.validation.CubeDSLValidator.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.cubedsl.formatting.CubeDSLFormatter.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.cubedsl.jvmmodel.CubeDSLJvmModelInferrer.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.cubedsl.services.CubeDSLGrammarAccess.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessFragment2
+	public Class<? extends IGrammarAccess> bindIGrammarAccess() {
+		return CubeDSLGrammarAccess.class;
 	}
-
+	
+	// contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2
+	public Class<? extends ISemanticSequencer> bindISemanticSequencer() {
+		return CubeDSLSemanticSequencer.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2
+	public Class<? extends ISyntacticSequencer> bindISyntacticSequencer() {
+		return CubeDSLSyntacticSequencer.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 CubeDSLParser.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 CubeDSLAntlrTokenFileProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends Lexer> bindLexer() {
+		return InternalCubeDSLLexer.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 InternalCubeDSLLexer> provideInternalCubeDSLLexer() {
+		return LexerProvider.create(InternalCubeDSLLexer.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(InternalCubeDSLLexer.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.validation.ValidatorFragment2
+	@SingletonBinding(eager=true)
+	public Class<? extends CubeDSLValidator> bindCubeDSLValidator() {
+		return CubeDSLValidator.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2
+	public Class<? extends IBatchScopeProvider> bindIBatchScopeProvider() {
+		return CubeDSLScopeProvider.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 CubeDSLJvmModelInferrer.class;
+	}
+	
 }
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSL.xtextbin b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSL.xtextbin
new file mode 100644
index 0000000..2ef5a2f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSL.xtextbin
Binary files differ
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLStandaloneSetupGenerated.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLStandaloneSetupGenerated.java
index ffeac30..d300d4c 100644
--- a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLStandaloneSetupGenerated.java
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/CubeDSLStandaloneSetupGenerated.java
@@ -10,25 +10,26 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
 
 package org.eclipse.osbp.xtext.cubedsl;
 
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.xtext.ISetup;
-import org.eclipse.emf.ecore.resource.Resource;
-
 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 CubeDSLStandaloneSetupGenerated implements ISetup {
 
+	@Override
 	public Injector createInjectorAndDoEMFRegistration() {
-		org.eclipse.xtext.xbase.annotations.XbaseWithAnnotationsStandaloneSetup.doSetup();
+		OXtypeStandaloneSetup.doSetup();
 
 		Injector injector = createInjector();
 		register(injector);
@@ -36,18 +37,14 @@
 	}
 	
 	public Injector createInjector() {
-		return Guice.createInjector(new org.eclipse.osbp.xtext.cubedsl.CubeDSLRuntimeModule());
+		return Guice.createInjector(new CubeDSLRuntimeModule());
 	}
 	
 	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("cube", resourceFactory);
-		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("cube", serviceProvider);
+		IResourceFactory resourceFactory = injector.getInstance(IResourceFactory.class);
+		IResourceServiceProvider serviceProvider = injector.getInstance(IResourceServiceProvider.class);
 		
-
-
-
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("cube", resourceFactory);
+		IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("cube", serviceProvider);
 	}
 }
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/CubeDSLAntlrTokenFileProvider.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/CubeDSLAntlrTokenFileProvider.java
index 7f3f7ec..4a86fc1 100644
--- a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/CubeDSLAntlrTokenFileProvider.java
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/CubeDSLAntlrTokenFileProvider.java
@@ -10,6 +10,8 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
 
 package org.eclipse.osbp.xtext.cubedsl.parser.antlr;
@@ -18,9 +20,10 @@
 import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
 
 public class CubeDSLAntlrTokenFileProvider implements IAntlrTokenFileProvider {
-	
+
+	@Override
 	public InputStream getAntlrTokenFile() {
 		ClassLoader classLoader = getClass().getClassLoader();
-    	return classLoader.getResourceAsStream("org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.tokens");
+		return classLoader.getResourceAsStream("org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.tokens");
 	}
 }
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/CubeDSLParser.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/CubeDSLParser.java
index 777eba1..b282c9d 100644
--- a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/CubeDSLParser.java
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/CubeDSLParser.java
@@ -10,41 +10,44 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
 
 package org.eclipse.osbp.xtext.cubedsl.parser.antlr;
 
 import com.google.inject.Inject;
-
-import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal.InternalCubeDSLParser;
 import org.eclipse.osbp.xtext.cubedsl.services.CubeDSLGrammarAccess;
+import org.eclipse.xtext.parser.antlr.AbstractAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
 
-public class CubeDSLParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
-	
+public class CubeDSLParser extends AbstractAntlrParser {
+
 	@Inject
 	private CubeDSLGrammarAccess grammarAccess;
-	
+
 	@Override
 	protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
 		tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
 	}
 	
+
 	@Override
-	protected org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal.InternalCubeDSLParser createParser(XtextTokenStream stream) {
-		return new org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal.InternalCubeDSLParser(stream, getGrammarAccess());
+	protected InternalCubeDSLParser createParser(XtextTokenStream stream) {
+		return new InternalCubeDSLParser(stream, getGrammarAccess());
 	}
-	
+
 	@Override 
 	protected String getDefaultRuleName() {
 		return "CubeModel";
 	}
-	
+
 	public CubeDSLGrammarAccess getGrammarAccess() {
 		return this.grammarAccess;
 	}
-	
+
 	public void setGrammarAccess(CubeDSLGrammarAccess grammarAccess) {
 		this.grammarAccess = grammarAccess;
 	}
-	
 }
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g
index c39846c..f1ffb3b 100644
--- a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g
@@ -10,13 +10,14 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
 
 grammar InternalCubeDSL;
 
 options {
 	superClass=AbstractInternalAntlrParser;
-	
 }
 
 @lexer::header {
@@ -28,7 +29,7 @@
 }
 
 @parser::header {
-package org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal; 
+package org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal;
 
 import org.eclipse.xtext.*;
 import org.eclipse.xtext.parser.*;
@@ -47,8021 +48,8441 @@
 @parser::members {
 
  	private CubeDSLGrammarAccess grammarAccess;
- 	
+
     public InternalCubeDSLParser(TokenStream input, CubeDSLGrammarAccess grammarAccess) {
         this(input);
         this.grammarAccess = grammarAccess;
         registerRules(grammarAccess.getGrammar());
     }
-    
+
     @Override
     protected String getFirstRuleName() {
-    	return "CubeModel";	
+    	return "CubeModel";
    	}
-   	
+
    	@Override
    	protected CubeDSLGrammarAccess getGrammarAccess() {
    		return grammarAccess;
    	}
+
 }
 
-@rulecatch { 
-    catch (RecognitionException re) { 
-        recover(input,re); 
+@rulecatch {
+    catch (RecognitionException re) {
+        recover(input,re);
         appendSkippedTokens();
-    } 
+    }
 }
 
-
-
-
 // Entry rule entryRuleCubeModel
-entryRuleCubeModel returns [EObject current=null] 
-	:
+entryRuleCubeModel returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getCubeModelRule()); }
-	 iv_ruleCubeModel=ruleCubeModel 
-	 { $current=$iv_ruleCubeModel.current; } 
-	 EOF 
-;
+	iv_ruleCubeModel=ruleCubeModel
+	{ $current=$iv_ruleCubeModel.current; }
+	EOF;
 
 // Rule CubeModel
-ruleCubeModel returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getCubeModelAccess().getCubeModelAction_0(),
-            $current);
-    }
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeModelAccess().getPckgCubePackageParserRuleCall_1_0()); 
-	    }
-		lv_pckg_1_0=ruleCubePackage		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeModelRule());
-	        }
-       		set(
-       			$current, 
-       			"pckg",
-        		lv_pckg_1_0, 
-        		"CubePackage");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleCubeModel returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getCubeModelAccess().getCubeModelAction_0(),
+					$current);
+			}
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubeModelAccess().getImportSectionXImportSectionParserRuleCall_1_0());
+				}
+				lv_importSection_1_0=ruleXImportSection
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubeModelRule());
+					}
+					set(
+						$current,
+						"importSection",
+						lv_importSection_1_0,
+						"org.eclipse.xtext.xbase.Xtype.XImportSection");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubeModelAccess().getPckgCubePackageParserRuleCall_2_0());
+				}
+				lv_pckg_2_0=ruleCubePackage
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubeModelRule());
+					}
+					set(
+						$current,
+						"pckg",
+						lv_pckg_2_0,
+						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubePackage");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleCubePackage
-entryRuleCubePackage returns [EObject current=null] 
-	:
+entryRuleCubePackage returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getCubePackageRule()); }
-	 iv_ruleCubePackage=ruleCubePackage 
-	 { $current=$iv_ruleCubePackage.current; } 
-	 EOF 
-;
+	iv_ruleCubePackage=ruleCubePackage
+	{ $current=$iv_ruleCubePackage.current; }
+	EOF;
 
 // Rule CubePackage
-ruleCubePackage returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='package' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getCubePackageAccess().getPackageKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubePackageAccess().getNameQualifiedNameParserRuleCall_1_0()); 
-	    }
-		lv_name_1_0=ruleQualifiedName		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubePackageRule());
-	        }
-       		set(
-       			$current, 
-       			"name",
-        		lv_name_1_0, 
-        		"QualifiedName");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_2='{' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getCubePackageAccess().getLeftCurlyBracketKeyword_2_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubePackageAccess().getImportsImportParserRuleCall_2_1_0()); 
-	    }
-		lv_imports_3_0=ruleImport		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubePackageRule());
-	        }
-       		add(
-       			$current, 
-       			"imports",
-        		lv_imports_3_0, 
-        		"Import");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubePackageAccess().getDimensionsCubeDimensionParserRuleCall_2_2_0()); 
-	    }
-		lv_dimensions_4_0=ruleCubeDimension		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubePackageRule());
-	        }
-       		add(
-       			$current, 
-       			"dimensions",
-        		lv_dimensions_4_0, 
-        		"CubeDimension");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubePackageAccess().getCubesCubeTypeParserRuleCall_2_3_0()); 
-	    }
-		lv_cubes_5_0=ruleCubeType		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubePackageRule());
-	        }
-       		add(
-       			$current, 
-       			"cubes",
-        		lv_cubes_5_0, 
-        		"CubeType");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*	otherlv_6='}' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getCubePackageAccess().getRightCurlyBracketKeyword_2_4());
-    }
-)?)
+ruleCubePackage returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='package'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getCubePackageAccess().getPackageKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubePackageAccess().getNameQualifiedNameParserRuleCall_1_0());
+				}
+				lv_name_1_0=ruleQualifiedName
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubePackageRule());
+					}
+					set(
+						$current,
+						"name",
+						lv_name_1_0,
+						"org.eclipse.xtext.xbase.Xbase.QualifiedName");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			otherlv_2='{'
+			{
+				newLeafNode(otherlv_2, grammarAccess.getCubePackageAccess().getLeftCurlyBracketKeyword_2_0());
+			}
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getCubePackageAccess().getDimensionsCubeDimensionParserRuleCall_2_1_0());
+					}
+					lv_dimensions_3_0=ruleCubeDimension
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getCubePackageRule());
+						}
+						add(
+							$current,
+							"dimensions",
+							lv_dimensions_3_0,
+							"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeDimension");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)*
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getCubePackageAccess().getCubesCubeTypeParserRuleCall_2_2_0());
+					}
+					lv_cubes_4_0=ruleCubeType
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getCubePackageRule());
+						}
+						add(
+							$current,
+							"cubes",
+							lv_cubes_4_0,
+							"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeType");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)*
+			otherlv_5='}'
+			{
+				newLeafNode(otherlv_5, grammarAccess.getCubePackageAccess().getRightCurlyBracketKeyword_2_3());
+			}
+		)?
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleCubeType
-entryRuleCubeType returns [EObject current=null] 
-	:
+entryRuleCubeType returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getCubeTypeRule()); }
-	 iv_ruleCubeType=ruleCubeType 
-	 { $current=$iv_ruleCubeType.current; } 
-	 EOF 
-;
+	iv_ruleCubeType=ruleCubeType
+	{ $current=$iv_ruleCubeType.current; }
+	EOF;
 
 // Rule CubeType
-ruleCubeType returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='cube' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getCubeTypeAccess().getCubeKeyword_0());
-    }
-(
-(
-		lv_name_1_0=RULE_ID
+ruleCubeType returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='cube'
 		{
-			newLeafNode(lv_name_1_0, grammarAccess.getCubeTypeAccess().getNameIDTerminalRuleCall_1_0()); 
+			newLeafNode(otherlv_0, grammarAccess.getCubeTypeAccess().getCubeKeyword_0());
 		}
+		(
+			(
+				lv_name_1_0=RULE_ID
+				{
+					newLeafNode(lv_name_1_0, grammarAccess.getCubeTypeAccess().getNameIDTerminalRuleCall_1_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getCubeTypeRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"name",
+						lv_name_1_0,
+						"org.eclipse.xtext.xbase.Xtype.ID");
+				}
+			)
+		)
+		(
+			(
+				(
+					lv_defaultMeasure_2_0='defaultMeasure'
+					{
+						newLeafNode(lv_defaultMeasure_2_0, grammarAccess.getCubeTypeAccess().getDefaultMeasureDefaultMeasureKeyword_2_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getCubeTypeRule());
+						}
+						setWithLastConsumed($current, "defaultMeasure", true, "defaultMeasure");
+					}
+				)
+			)
+			(
+				(
+					lv_defaultMeasureValue_3_0=RULE_STRING
+					{
+						newLeafNode(lv_defaultMeasureValue_3_0, grammarAccess.getCubeTypeAccess().getDefaultMeasureValueSTRINGTerminalRuleCall_2_1_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getCubeTypeRule());
+						}
+						setWithLastConsumed(
+							$current,
+							"defaultMeasureValue",
+							lv_defaultMeasureValue_3_0,
+							"org.eclipse.xtext.xbase.Xtype.STRING");
+					}
+				)
+			)
+		)?
+		otherlv_4='{'
 		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getCubeTypeRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"name",
-        		lv_name_1_0, 
-        		"ID");
-	    }
-
-)
-)((
-(
-		lv_defaultMeasure_2_0=	'defaultMeasure' 
-    {
-        newLeafNode(lv_defaultMeasure_2_0, grammarAccess.getCubeTypeAccess().getDefaultMeasureDefaultMeasureKeyword_2_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getCubeTypeRule());
-	        }
-       		setWithLastConsumed($current, "defaultMeasure", true, "defaultMeasure");
-	    }
-
-)
-)(
-(
-		lv_defaultMeasureValue_3_0=RULE_STRING
-		{
-			newLeafNode(lv_defaultMeasureValue_3_0, grammarAccess.getCubeTypeAccess().getDefaultMeasureValueSTRINGTerminalRuleCall_2_1_0()); 
+			newLeafNode(otherlv_4, grammarAccess.getCubeTypeAccess().getLeftCurlyBracketKeyword_3());
 		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubeTypeAccess().getCubeTypeEntityCubeTypeEntityParserRuleCall_4_0());
+				}
+				lv_cubeTypeEntity_5_0=ruleCubeTypeEntity
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubeTypeRule());
+					}
+					set(
+						$current,
+						"cubeTypeEntity",
+						lv_cubeTypeEntity_5_0,
+						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeTypeEntity");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_6='}'
 		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getCubeTypeRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"defaultMeasureValue",
-        		lv_defaultMeasureValue_3_0, 
-        		"STRING");
-	    }
-
-)
-))?	otherlv_4='{' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getCubeTypeAccess().getLeftCurlyBracketKeyword_3());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeTypeAccess().getCubeTypeEntityCubeTypeEntityParserRuleCall_4_0()); 
-	    }
-		lv_cubeTypeEntity_5_0=ruleCubeTypeEntity		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeTypeRule());
-	        }
-       		set(
-       			$current, 
-       			"cubeTypeEntity",
-        		lv_cubeTypeEntity_5_0, 
-        		"CubeTypeEntity");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_6='}' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getCubeTypeAccess().getRightCurlyBracketKeyword_5());
-    }
-)
+			newLeafNode(otherlv_6, grammarAccess.getCubeTypeAccess().getRightCurlyBracketKeyword_5());
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleCubeDimensionUsage
-entryRuleCubeDimensionUsage returns [EObject current=null] 
-	:
+entryRuleCubeDimensionUsage returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getCubeDimensionUsageRule()); }
-	 iv_ruleCubeDimensionUsage=ruleCubeDimensionUsage 
-	 { $current=$iv_ruleCubeDimensionUsage.current; } 
-	 EOF 
-;
+	iv_ruleCubeDimensionUsage=ruleCubeDimensionUsage
+	{ $current=$iv_ruleCubeDimensionUsage.current; }
+	EOF;
 
 // Rule CubeDimensionUsage
-ruleCubeDimensionUsage returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='dimensionUsage' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getCubeDimensionUsageAccess().getDimensionUsageKeyword_0());
-    }
-(
-(
+ruleCubeDimensionUsage returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='dimensionUsage'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getCubeDimensionUsageRule());
-	        }
-        }
-	otherlv_1=RULE_ID
-	{
-		newLeafNode(otherlv_1, grammarAccess.getCubeDimensionUsageAccess().getSourceValueCubeDimensionCrossReference_1_0()); 
-	}
-
-)
-)	otherlv_2='over' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getCubeDimensionUsageAccess().getOverKeyword_2());
-    }
-(
-(
+			newLeafNode(otherlv_0, grammarAccess.getCubeDimensionUsageAccess().getDimensionUsageKeyword_0());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getCubeDimensionUsageRule());
+					}
+				}
+				otherlv_1=RULE_ID
+				{
+					newLeafNode(otherlv_1, grammarAccess.getCubeDimensionUsageAccess().getSourceValueCubeDimensionCrossReference_1_0());
+				}
+			)
+		)
+		otherlv_2='over'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getCubeDimensionUsageRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getCubeDimensionUsageAccess().getOverValueLEntityFeatureCrossReference_3_0()); 
-	    }
-		ruleLFQN		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_4=';' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getCubeDimensionUsageAccess().getSemicolonKeyword_4());
-    }
-)
+			newLeafNode(otherlv_2, grammarAccess.getCubeDimensionUsageAccess().getOverKeyword_2());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getCubeDimensionUsageRule());
+					}
+				}
+				{
+					newCompositeNode(grammarAccess.getCubeDimensionUsageAccess().getOverValueLEntityFeatureCrossReference_3_0());
+				}
+				ruleLFQN
+				{
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleCubeDimension
-entryRuleCubeDimension returns [EObject current=null] 
-	:
+entryRuleCubeDimension returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getCubeDimensionRule()); }
-	 iv_ruleCubeDimension=ruleCubeDimension 
-	 { $current=$iv_ruleCubeDimension.current; } 
-	 EOF 
-;
+	iv_ruleCubeDimension=ruleCubeDimension
+	{ $current=$iv_ruleCubeDimension.current; }
+	EOF;
 
 // Rule CubeDimension
-ruleCubeDimension returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='dimension' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getCubeDimensionAccess().getDimensionKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeDimensionAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
-	    }
-		lv_name_1_0=ruleTRANSLATABLEID		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeDimensionRule());
-	        }
-       		set(
-       			$current, 
-       			"name",
-        		lv_name_1_0, 
-        		"TRANSLATABLEID");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(
-(
-		lv_typeTime_2_0=	'typeTime' 
-    {
-        newLeafNode(lv_typeTime_2_0, grammarAccess.getCubeDimensionAccess().getTypeTimeTypeTimeKeyword_2_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getCubeDimensionRule());
-	        }
-       		setWithLastConsumed($current, "typeTime", true, "typeTime");
-	    }
-
-)
-)?	otherlv_3='{' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getCubeDimensionAccess().getLeftCurlyBracketKeyword_3());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeDimensionAccess().getHierarchiesCubeHierarchyParserRuleCall_4_0()); 
-	    }
-		lv_hierarchies_4_0=ruleCubeHierarchy		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeDimensionRule());
-	        }
-       		add(
-       			$current, 
-       			"hierarchies",
-        		lv_hierarchies_4_0, 
-        		"CubeHierarchy");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*	otherlv_5='}' 
-    {
-    	newLeafNode(otherlv_5, grammarAccess.getCubeDimensionAccess().getRightCurlyBracketKeyword_5());
-    }
-)
+ruleCubeDimension returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='dimension'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getCubeDimensionAccess().getDimensionKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubeDimensionAccess().getNameTRANSLATABLEIDParserRuleCall_1_0());
+				}
+				lv_name_1_0=ruleTRANSLATABLEID
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubeDimensionRule());
+					}
+					set(
+						$current,
+						"name",
+						lv_name_1_0,
+						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.TRANSLATABLEID");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				lv_typeTime_2_0='typeTime'
+				{
+					newLeafNode(lv_typeTime_2_0, grammarAccess.getCubeDimensionAccess().getTypeTimeTypeTimeKeyword_2_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getCubeDimensionRule());
+					}
+					setWithLastConsumed($current, "typeTime", true, "typeTime");
+				}
+			)
+		)?
+		otherlv_3='{'
+		{
+			newLeafNode(otherlv_3, grammarAccess.getCubeDimensionAccess().getLeftCurlyBracketKeyword_3());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubeDimensionAccess().getHierarchiesCubeHierarchyParserRuleCall_4_0());
+				}
+				lv_hierarchies_4_0=ruleCubeHierarchy
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubeDimensionRule());
+					}
+					add(
+						$current,
+						"hierarchies",
+						lv_hierarchies_4_0,
+						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeHierarchy");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)*
+		otherlv_5='}'
+		{
+			newLeafNode(otherlv_5, grammarAccess.getCubeDimensionAccess().getRightCurlyBracketKeyword_5());
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleCubeHierarchy
-entryRuleCubeHierarchy returns [EObject current=null] 
-	:
+entryRuleCubeHierarchy returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getCubeHierarchyRule()); }
-	 iv_ruleCubeHierarchy=ruleCubeHierarchy 
-	 { $current=$iv_ruleCubeHierarchy.current; } 
-	 EOF 
-;
+	iv_ruleCubeHierarchy=ruleCubeHierarchy
+	{ $current=$iv_ruleCubeHierarchy.current; }
+	EOF;
 
 // Rule CubeHierarchy
-ruleCubeHierarchy returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getCubeHierarchyAccess().getCubeHierarchyAction_0(),
-            $current);
-    }
-)	otherlv_1='hierarchy' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getCubeHierarchyAccess().getHierarchyKeyword_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeHierarchyAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
-	    }
-		lv_name_2_0=ruleTRANSLATABLEID		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
-	        }
-       		set(
-       			$current, 
-       			"name",
-        		lv_name_2_0, 
-        		"TRANSLATABLEID");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)?(
-(
-		lv_hasAll_3_0=	'hasAll' 
-    {
-        newLeafNode(lv_hasAll_3_0, grammarAccess.getCubeHierarchyAccess().getHasAllHasAllKeyword_3_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getCubeHierarchyRule());
-	        }
-       		setWithLastConsumed($current, "hasAll", true, "hasAll");
-	    }
-
-)
-)?((
-(
-		lv_allMemberName_4_0=	'allMemberName=' 
-    {
-        newLeafNode(lv_allMemberName_4_0, grammarAccess.getCubeHierarchyAccess().getAllMemberNameAllMemberNameKeyword_4_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getCubeHierarchyRule());
-	        }
-       		setWithLastConsumed($current, "allMemberName", true, "allMemberName=");
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeHierarchyAccess().getAllMemberNameValueTRANSLATABLESTRINGParserRuleCall_4_1_0()); 
-	    }
-		lv_allMemberNameValue_5_0=ruleTRANSLATABLESTRING		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
-	        }
-       		set(
-       			$current, 
-       			"allMemberNameValue",
-        		lv_allMemberNameValue_5_0, 
-        		"TRANSLATABLESTRING");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?((
-(
-		lv_defaultMember_6_0=	'defaultMember=' 
-    {
-        newLeafNode(lv_defaultMember_6_0, grammarAccess.getCubeHierarchyAccess().getDefaultMemberDefaultMemberKeyword_5_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getCubeHierarchyRule());
-	        }
-       		setWithLastConsumed($current, "defaultMember", true, "defaultMember=");
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeHierarchyAccess().getDefaultMemberValueTRANSLATABLESTRINGParserRuleCall_5_1_0()); 
-	    }
-		lv_defaultMemberValue_7_0=ruleTRANSLATABLESTRING		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
-	        }
-       		set(
-       			$current, 
-       			"defaultMemberValue",
-        		lv_defaultMemberValue_7_0, 
-        		"TRANSLATABLESTRING");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?	otherlv_8='{' 
-    {
-    	newLeafNode(otherlv_8, grammarAccess.getCubeHierarchyAccess().getLeftCurlyBracketKeyword_6());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeHierarchyAccess().getCubeDimEntityCubeDimensionEntityParserRuleCall_7_0()); 
-	    }
-		lv_cubeDimEntity_9_0=ruleCubeDimensionEntity		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
-	        }
-       		set(
-       			$current, 
-       			"cubeDimEntity",
-        		lv_cubeDimEntity_9_0, 
-        		"CubeDimensionEntity");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_10='}' 
-    {
-    	newLeafNode(otherlv_10, grammarAccess.getCubeHierarchyAccess().getRightCurlyBracketKeyword_8());
-    }
-)
+ruleCubeHierarchy returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getCubeHierarchyAccess().getCubeHierarchyAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='hierarchy'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getCubeHierarchyAccess().getHierarchyKeyword_1());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubeHierarchyAccess().getNameTRANSLATABLEIDParserRuleCall_2_0());
+				}
+				lv_name_2_0=ruleTRANSLATABLEID
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
+					}
+					set(
+						$current,
+						"name",
+						lv_name_2_0,
+						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.TRANSLATABLEID");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+		(
+			(
+				lv_hasAll_3_0='hasAll'
+				{
+					newLeafNode(lv_hasAll_3_0, grammarAccess.getCubeHierarchyAccess().getHasAllHasAllKeyword_3_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getCubeHierarchyRule());
+					}
+					setWithLastConsumed($current, "hasAll", true, "hasAll");
+				}
+			)
+		)?
+		(
+			(
+				(
+					lv_allMemberName_4_0='allMemberName'
+					{
+						newLeafNode(lv_allMemberName_4_0, grammarAccess.getCubeHierarchyAccess().getAllMemberNameAllMemberNameKeyword_4_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getCubeHierarchyRule());
+						}
+						setWithLastConsumed($current, "allMemberName", true, "allMemberName");
+					}
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getCubeHierarchyAccess().getAllMemberNameValueTRANSLATABLESTRINGParserRuleCall_4_1_0());
+					}
+					lv_allMemberNameValue_5_0=ruleTRANSLATABLESTRING
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
+						}
+						set(
+							$current,
+							"allMemberNameValue",
+							lv_allMemberNameValue_5_0,
+							"org.eclipse.osbp.xtext.cubedsl.CubeDSL.TRANSLATABLESTRING");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+		(
+			(
+				(
+					lv_defaultMember_6_0='defaultMember'
+					{
+						newLeafNode(lv_defaultMember_6_0, grammarAccess.getCubeHierarchyAccess().getDefaultMemberDefaultMemberKeyword_5_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getCubeHierarchyRule());
+						}
+						setWithLastConsumed($current, "defaultMember", true, "defaultMember");
+					}
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getCubeHierarchyAccess().getDefaultMemberValueTRANSLATABLESTRINGParserRuleCall_5_1_0());
+					}
+					lv_defaultMemberValue_7_0=ruleTRANSLATABLESTRING
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
+						}
+						set(
+							$current,
+							"defaultMemberValue",
+							lv_defaultMemberValue_7_0,
+							"org.eclipse.osbp.xtext.cubedsl.CubeDSL.TRANSLATABLESTRING");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+		otherlv_8='{'
+		{
+			newLeafNode(otherlv_8, grammarAccess.getCubeHierarchyAccess().getLeftCurlyBracketKeyword_6());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubeHierarchyAccess().getCubeDimEntityCubeDimensionEntityParserRuleCall_7_0());
+				}
+				lv_cubeDimEntity_9_0=ruleCubeDimensionEntity
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
+					}
+					set(
+						$current,
+						"cubeDimEntity",
+						lv_cubeDimEntity_9_0,
+						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeDimensionEntity");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_10='}'
+		{
+			newLeafNode(otherlv_10, grammarAccess.getCubeHierarchyAccess().getRightCurlyBracketKeyword_8());
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleCubeEntity
-entryRuleCubeEntity returns [EObject current=null] 
-	:
+entryRuleCubeEntity returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getCubeEntityRule()); }
-	 iv_ruleCubeEntity=ruleCubeEntity 
-	 { $current=$iv_ruleCubeEntity.current; } 
-	 EOF 
-;
+	iv_ruleCubeEntity=ruleCubeEntity
+	{ $current=$iv_ruleCubeEntity.current; }
+	EOF;
 
 // Rule CubeEntity
-ruleCubeEntity returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='entity' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getCubeEntityAccess().getEntityKeyword_0());
-    }
-(
-(
+ruleCubeEntity returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='entity'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getCubeEntityRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getCubeEntityAccess().getEntityValueLEntityCrossReference_1_0()); 
-	    }
-		ruleLFQN		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)((
-(
-		lv_key_2_0=	'key=' 
-    {
-        newLeafNode(lv_key_2_0, grammarAccess.getCubeEntityAccess().getKeyKeyKeyword_2_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getCubeEntityRule());
-	        }
-       		setWithLastConsumed($current, "key", true, "key=");
-	    }
-
-)
-)(
-(
-		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getCubeEntityRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getCubeEntityAccess().getKeyValueLEntityFeatureCrossReference_2_1_0()); 
-	    }
-		ruleLFQN		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?)
+			newLeafNode(otherlv_0, grammarAccess.getCubeEntityAccess().getEntityKeyword_0());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getCubeEntityRule());
+					}
+				}
+				{
+					newCompositeNode(grammarAccess.getCubeEntityAccess().getEntityValueLEntityCrossReference_1_0());
+				}
+				ruleLFQN
+				{
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				(
+					lv_key_2_0='key'
+					{
+						newLeafNode(lv_key_2_0, grammarAccess.getCubeEntityAccess().getKeyKeyKeyword_2_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getCubeEntityRule());
+						}
+						setWithLastConsumed($current, "key", true, "key");
+					}
+				)
+			)
+			(
+				(
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getCubeEntityRule());
+						}
+					}
+					{
+						newCompositeNode(grammarAccess.getCubeEntityAccess().getKeyValueLEntityFeatureCrossReference_2_1_0());
+					}
+					ruleLFQN
+					{
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleCubeTypeEntity
-entryRuleCubeTypeEntity returns [EObject current=null] 
-	:
+entryRuleCubeTypeEntity returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getCubeTypeEntityRule()); }
-	 iv_ruleCubeTypeEntity=ruleCubeTypeEntity 
-	 { $current=$iv_ruleCubeTypeEntity.current; } 
-	 EOF 
-;
+	iv_ruleCubeTypeEntity=ruleCubeTypeEntity
+	{ $current=$iv_ruleCubeTypeEntity.current; }
+	EOF;
 
 // Rule CubeTypeEntity
-ruleCubeTypeEntity returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeTypeEntityAccess().getEntityRefCubeEntityParserRuleCall_0_0()); 
-	    }
-		lv_entityRef_0_0=ruleCubeEntity		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeTypeEntityRule());
-	        }
-       		set(
-       			$current, 
-       			"entityRef",
-        		lv_entityRef_0_0, 
-        		"CubeEntity");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_1='{' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getCubeTypeEntityAccess().getLeftCurlyBracketKeyword_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeTypeEntityAccess().getDimensionUsagesCubeDimensionUsageParserRuleCall_2_0()); 
-	    }
-		lv_dimensionUsages_2_0=ruleCubeDimensionUsage		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeTypeEntityRule());
-	        }
-       		add(
-       			$current, 
-       			"dimensionUsages",
-        		lv_dimensionUsages_2_0, 
-        		"CubeDimensionUsage");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeTypeEntityAccess().getMeasuresCubeMeasureParserRuleCall_3_0()); 
-	    }
-		lv_measures_3_0=ruleCubeMeasure		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeTypeEntityRule());
-	        }
-       		add(
-       			$current, 
-       			"measures",
-        		lv_measures_3_0, 
-        		"CubeMeasure");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*	otherlv_4='}' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getCubeTypeEntityAccess().getRightCurlyBracketKeyword_4());
-    }
-)
+ruleCubeTypeEntity returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubeTypeEntityAccess().getEntityRefCubeEntityParserRuleCall_0_0());
+				}
+				lv_entityRef_0_0=ruleCubeEntity
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubeTypeEntityRule());
+					}
+					set(
+						$current,
+						"entityRef",
+						lv_entityRef_0_0,
+						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeEntity");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_1='{'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getCubeTypeEntityAccess().getLeftCurlyBracketKeyword_1());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubeTypeEntityAccess().getDimensionUsagesCubeDimensionUsageParserRuleCall_2_0());
+				}
+				lv_dimensionUsages_2_0=ruleCubeDimensionUsage
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubeTypeEntityRule());
+					}
+					add(
+						$current,
+						"dimensionUsages",
+						lv_dimensionUsages_2_0,
+						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeDimensionUsage");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)*
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubeTypeEntityAccess().getMeasuresCubeMeasureParserRuleCall_3_0());
+				}
+				lv_measures_3_0=ruleCubeMeasure
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubeTypeEntityRule());
+					}
+					add(
+						$current,
+						"measures",
+						lv_measures_3_0,
+						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeMeasure");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)*
+		otherlv_4='}'
+		{
+			newLeafNode(otherlv_4, grammarAccess.getCubeTypeEntityAccess().getRightCurlyBracketKeyword_4());
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleCubeDimensionEntity
-entryRuleCubeDimensionEntity returns [EObject current=null] 
-	:
+entryRuleCubeDimensionEntity returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getCubeDimensionEntityRule()); }
-	 iv_ruleCubeDimensionEntity=ruleCubeDimensionEntity 
-	 { $current=$iv_ruleCubeDimensionEntity.current; } 
-	 EOF 
-;
+	iv_ruleCubeDimensionEntity=ruleCubeDimensionEntity
+	{ $current=$iv_ruleCubeDimensionEntity.current; }
+	EOF;
 
 // Rule CubeDimensionEntity
-ruleCubeDimensionEntity returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getCubeDimensionEntityAccess().getCubeDimensionEntityAction_0(),
-            $current);
-    }
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeDimensionEntityAccess().getEntityRefCubeEntityParserRuleCall_1_0()); 
-	    }
-		lv_entityRef_1_0=ruleCubeEntity		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeDimensionEntityRule());
-	        }
-       		set(
-       			$current, 
-       			"entityRef",
-        		lv_entityRef_1_0, 
-        		"CubeEntity");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_2='{' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getCubeDimensionEntityAccess().getLeftCurlyBracketKeyword_2());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeDimensionEntityAccess().getHierarchLevelsCubeLevelParserRuleCall_3_0()); 
-	    }
-		lv_hierarchLevels_3_0=ruleCubeLevel		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeDimensionEntityRule());
-	        }
-       		add(
-       			$current, 
-       			"hierarchLevels",
-        		lv_hierarchLevels_3_0, 
-        		"CubeLevel");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeDimensionEntityAccess().getDimEntityCubeDimensionEntityEntityParserRuleCall_4_0()); 
-	    }
-		lv_dimEntity_4_0=ruleCubeDimensionEntityEntity		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeDimensionEntityRule());
-	        }
-       		set(
-       			$current, 
-       			"dimEntity",
-        		lv_dimEntity_4_0, 
-        		"CubeDimensionEntityEntity");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)?	otherlv_5='}' 
-    {
-    	newLeafNode(otherlv_5, grammarAccess.getCubeDimensionEntityAccess().getRightCurlyBracketKeyword_5());
-    }
-)
+ruleCubeDimensionEntity returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getCubeDimensionEntityAccess().getCubeDimensionEntityAction_0(),
+					$current);
+			}
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubeDimensionEntityAccess().getEntityRefCubeEntityParserRuleCall_1_0());
+				}
+				lv_entityRef_1_0=ruleCubeEntity
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubeDimensionEntityRule());
+					}
+					set(
+						$current,
+						"entityRef",
+						lv_entityRef_1_0,
+						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeEntity");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_2='{'
+		{
+			newLeafNode(otherlv_2, grammarAccess.getCubeDimensionEntityAccess().getLeftCurlyBracketKeyword_2());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubeDimensionEntityAccess().getHierarchLevelsCubeLevelParserRuleCall_3_0());
+				}
+				lv_hierarchLevels_3_0=ruleCubeLevel
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubeDimensionEntityRule());
+					}
+					add(
+						$current,
+						"hierarchLevels",
+						lv_hierarchLevels_3_0,
+						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeLevel");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)*
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubeDimensionEntityAccess().getDimEntityCubeDimensionEntityEntityParserRuleCall_4_0());
+				}
+				lv_dimEntity_4_0=ruleCubeDimensionEntityEntity
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubeDimensionEntityRule());
+					}
+					set(
+						$current,
+						"dimEntity",
+						lv_dimEntity_4_0,
+						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeDimensionEntityEntity");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+		otherlv_5='}'
+		{
+			newLeafNode(otherlv_5, grammarAccess.getCubeDimensionEntityAccess().getRightCurlyBracketKeyword_5());
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleCubeDimensionEntityEntity
-entryRuleCubeDimensionEntityEntity returns [EObject current=null] 
-	:
+entryRuleCubeDimensionEntityEntity returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getCubeDimensionEntityEntityRule()); }
-	 iv_ruleCubeDimensionEntityEntity=ruleCubeDimensionEntityEntity 
-	 { $current=$iv_ruleCubeDimensionEntityEntity.current; } 
-	 EOF 
-;
+	iv_ruleCubeDimensionEntityEntity=ruleCubeDimensionEntityEntity
+	{ $current=$iv_ruleCubeDimensionEntityEntity.current; }
+	EOF;
 
 // Rule CubeDimensionEntityEntity
-ruleCubeDimensionEntityEntity returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getCubeDimensionEntityEntityAccess().getCubeDimensionEntityEntityAction_0(),
-            $current);
-    }
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getEntityRefCubeEntityParserRuleCall_1_0()); 
-	    }
-		lv_entityRef_1_0=ruleCubeEntity		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeDimensionEntityEntityRule());
-	        }
-       		set(
-       			$current, 
-       			"entityRef",
-        		lv_entityRef_1_0, 
-        		"CubeEntity");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_2='{' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getCubeDimensionEntityEntityAccess().getLeftCurlyBracketKeyword_2());
-    }
-	otherlv_3='over' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getCubeDimensionEntityEntityAccess().getOverKeyword_3());
-    }
-(
-(
+ruleCubeDimensionEntityEntity returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getCubeDimensionEntityEntityAccess().getCubeDimensionEntityEntityAction_0(),
+					$current);
+			}
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getEntityRefCubeEntityParserRuleCall_1_0());
+				}
+				lv_entityRef_1_0=ruleCubeEntity
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubeDimensionEntityEntityRule());
+					}
+					set(
+						$current,
+						"entityRef",
+						lv_entityRef_1_0,
+						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeEntity");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_2='{'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getCubeDimensionEntityEntityRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueLEntityFeatureCrossReference_4_0()); 
-	    }
-		ruleLFQN		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_5=';' 
-    {
-    	newLeafNode(otherlv_5, grammarAccess.getCubeDimensionEntityEntityAccess().getSemicolonKeyword_5());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getHierarchLevelsCubeLevelParserRuleCall_6_0()); 
-	    }
-		lv_hierarchLevels_6_0=ruleCubeLevel		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeDimensionEntityEntityRule());
-	        }
-       		add(
-       			$current, 
-       			"hierarchLevels",
-        		lv_hierarchLevels_6_0, 
-        		"CubeLevel");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getDimEntityCubeDimensionEntityEntityParserRuleCall_7_0()); 
-	    }
-		lv_dimEntity_7_0=ruleCubeDimensionEntityEntity		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeDimensionEntityEntityRule());
-	        }
-       		set(
-       			$current, 
-       			"dimEntity",
-        		lv_dimEntity_7_0, 
-        		"CubeDimensionEntityEntity");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)?	otherlv_8='}' 
-    {
-    	newLeafNode(otherlv_8, grammarAccess.getCubeDimensionEntityEntityAccess().getRightCurlyBracketKeyword_8());
-    }
-)
+			newLeafNode(otherlv_2, grammarAccess.getCubeDimensionEntityEntityAccess().getLeftCurlyBracketKeyword_2());
+		}
+		otherlv_3='over'
+		{
+			newLeafNode(otherlv_3, grammarAccess.getCubeDimensionEntityEntityAccess().getOverKeyword_3());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getCubeDimensionEntityEntityRule());
+					}
+				}
+				{
+					newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueLEntityFeatureCrossReference_4_0());
+				}
+				ruleLFQN
+				{
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getHierarchLevelsCubeLevelParserRuleCall_5_0());
+				}
+				lv_hierarchLevels_5_0=ruleCubeLevel
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubeDimensionEntityEntityRule());
+					}
+					add(
+						$current,
+						"hierarchLevels",
+						lv_hierarchLevels_5_0,
+						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeLevel");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)*
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getDimEntityCubeDimensionEntityEntityParserRuleCall_6_0());
+				}
+				lv_dimEntity_6_0=ruleCubeDimensionEntityEntity
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubeDimensionEntityEntityRule());
+					}
+					set(
+						$current,
+						"dimEntity",
+						lv_dimEntity_6_0,
+						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeDimensionEntityEntity");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+		otherlv_7='}'
+		{
+			newLeafNode(otherlv_7, grammarAccess.getCubeDimensionEntityEntityAccess().getRightCurlyBracketKeyword_7());
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleCubeLevel
-entryRuleCubeLevel returns [EObject current=null] 
-	:
+entryRuleCubeLevel returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getCubeLevelRule()); }
-	 iv_ruleCubeLevel=ruleCubeLevel 
-	 { $current=$iv_ruleCubeLevel.current; } 
-	 EOF 
-;
+	iv_ruleCubeLevel=ruleCubeLevel
+	{ $current=$iv_ruleCubeLevel.current; }
+	EOF;
 
 // Rule CubeLevel
-ruleCubeLevel returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='level' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getCubeLevelAccess().getLevelKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeLevelAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
-	    }
-		lv_name_1_0=ruleTRANSLATABLEID		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeLevelRule());
-	        }
-       		set(
-       			$current, 
-       			"name",
-        		lv_name_1_0, 
-        		"TRANSLATABLEID");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_2='column=' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getCubeLevelAccess().getColumnKeyword_2());
-    }
-(
-(
+ruleCubeLevel returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='level'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getCubeLevelRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getCubeLevelAccess().getLevelColValueLEntityFeatureCrossReference_3_0()); 
-	    }
-		ruleLFQN		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(
-(
-		lv_uniqueMembers_4_0=	'uniqueMembers' 
-    {
-        newLeafNode(lv_uniqueMembers_4_0, grammarAccess.getCubeLevelAccess().getUniqueMembersUniqueMembersKeyword_4_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getCubeLevelRule());
-	        }
-       		setWithLastConsumed($current, "uniqueMembers", true, "uniqueMembers");
-	    }
-
-)
-)?((
-(
-		lv_levelType_5_0=	'levelType=' 
-    {
-        newLeafNode(lv_levelType_5_0, grammarAccess.getCubeLevelAccess().getLevelTypeLevelTypeKeyword_5_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getCubeLevelRule());
-	        }
-       		setWithLastConsumed($current, "levelType", true, "levelType=");
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeLevelAccess().getLevelTypeValueCubeLevelLevelTypeEnumRuleCall_5_1_0()); 
-	    }
-		lv_levelTypeValue_6_0=ruleCubeLevelLevelType		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeLevelRule());
-	        }
-       		set(
-       			$current, 
-       			"levelTypeValue",
-        		lv_levelTypeValue_6_0, 
-        		"CubeLevelLevelType");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?(	otherlv_7=';' 
-    {
-    	newLeafNode(otherlv_7, grammarAccess.getCubeLevelAccess().getSemicolonKeyword_6_0());
-    }
-
-    |(	otherlv_8='{' 
-    {
-    	newLeafNode(otherlv_8, grammarAccess.getCubeLevelAccess().getLeftCurlyBracketKeyword_6_1_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeLevelAccess().getPropertiesCubeLevelPropParserRuleCall_6_1_1_0()); 
-	    }
-		lv_properties_9_0=ruleCubeLevelProp		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeLevelRule());
-	        }
-       		add(
-       			$current, 
-       			"properties",
-        		lv_properties_9_0, 
-        		"CubeLevelProp");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*	otherlv_10='}' 
-    {
-    	newLeafNode(otherlv_10, grammarAccess.getCubeLevelAccess().getRightCurlyBracketKeyword_6_1_2());
-    }
-)))
+			newLeafNode(otherlv_0, grammarAccess.getCubeLevelAccess().getLevelKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubeLevelAccess().getNameTRANSLATABLEIDParserRuleCall_1_0());
+				}
+				lv_name_1_0=ruleTRANSLATABLEID
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubeLevelRule());
+					}
+					set(
+						$current,
+						"name",
+						lv_name_1_0,
+						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.TRANSLATABLEID");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_2='column'
+		{
+			newLeafNode(otherlv_2, grammarAccess.getCubeLevelAccess().getColumnKeyword_2());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getCubeLevelRule());
+					}
+				}
+				{
+					newCompositeNode(grammarAccess.getCubeLevelAccess().getLevelColValueLEntityFeatureCrossReference_3_0());
+				}
+				ruleLFQN
+				{
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				lv_uniqueMembers_4_0='uniqueMembers'
+				{
+					newLeafNode(lv_uniqueMembers_4_0, grammarAccess.getCubeLevelAccess().getUniqueMembersUniqueMembersKeyword_4_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getCubeLevelRule());
+					}
+					setWithLastConsumed($current, "uniqueMembers", true, "uniqueMembers");
+				}
+			)
+		)?
+		(
+			(
+				(
+					lv_levelType_5_0='levelType'
+					{
+						newLeafNode(lv_levelType_5_0, grammarAccess.getCubeLevelAccess().getLevelTypeLevelTypeKeyword_5_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getCubeLevelRule());
+						}
+						setWithLastConsumed($current, "levelType", true, "levelType");
+					}
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getCubeLevelAccess().getLevelTypeValueCubeLevelLevelTypeEnumRuleCall_5_1_0());
+					}
+					lv_levelTypeValue_6_0=ruleCubeLevelLevelType
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getCubeLevelRule());
+						}
+						set(
+							$current,
+							"levelTypeValue",
+							lv_levelTypeValue_6_0,
+							"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeLevelLevelType");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+		(
+			otherlv_7='{'
+			{
+				newLeafNode(otherlv_7, grammarAccess.getCubeLevelAccess().getLeftCurlyBracketKeyword_6_0());
+			}
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getCubeLevelAccess().getPropertiesCubeLevelPropParserRuleCall_6_1_0());
+					}
+					lv_properties_8_0=ruleCubeLevelProp
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getCubeLevelRule());
+						}
+						add(
+							$current,
+							"properties",
+							lv_properties_8_0,
+							"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeLevelProp");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)*
+			otherlv_9='}'
+			{
+				newLeafNode(otherlv_9, grammarAccess.getCubeLevelAccess().getRightCurlyBracketKeyword_6_2());
+			}
+		)?
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleCubeLevelProp
-entryRuleCubeLevelProp returns [EObject current=null] 
-	:
+entryRuleCubeLevelProp returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getCubeLevelPropRule()); }
-	 iv_ruleCubeLevelProp=ruleCubeLevelProp 
-	 { $current=$iv_ruleCubeLevelProp.current; } 
-	 EOF 
-;
+	iv_ruleCubeLevelProp=ruleCubeLevelProp
+	{ $current=$iv_ruleCubeLevelProp.current; }
+	EOF;
 
 // Rule CubeLevelProp
-ruleCubeLevelProp returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='property' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getCubeLevelPropAccess().getPropertyKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeLevelPropAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
-	    }
-		lv_name_1_0=ruleTRANSLATABLEID		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeLevelPropRule());
-	        }
-       		set(
-       			$current, 
-       			"name",
-        		lv_name_1_0, 
-        		"TRANSLATABLEID");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_2='column=' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getCubeLevelPropAccess().getColumnKeyword_2());
-    }
-(
-(
+ruleCubeLevelProp returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='property'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getCubeLevelPropRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueLEntityFeatureCrossReference_3_0()); 
-	    }
-		ruleLFQN		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)((
-(
-		lv_type_4_0=	'type=' 
-    {
-        newLeafNode(lv_type_4_0, grammarAccess.getCubeLevelPropAccess().getTypeTypeKeyword_4_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getCubeLevelPropRule());
-	        }
-       		setWithLastConsumed($current, "type", true, "type=");
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeLevelPropAccess().getTypeValueCubeLevelPropTypeEnumRuleCall_4_1_0()); 
-	    }
-		lv_typeValue_5_0=ruleCubeLevelPropType		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeLevelPropRule());
-	        }
-       		set(
-       			$current, 
-       			"typeValue",
-        		lv_typeValue_5_0, 
-        		"CubeLevelPropType");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?	otherlv_6=';' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getCubeLevelPropAccess().getSemicolonKeyword_5());
-    }
-)
+			newLeafNode(otherlv_0, grammarAccess.getCubeLevelPropAccess().getPropertyKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubeLevelPropAccess().getNameTRANSLATABLEIDParserRuleCall_1_0());
+				}
+				lv_name_1_0=ruleTRANSLATABLEID
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubeLevelPropRule());
+					}
+					set(
+						$current,
+						"name",
+						lv_name_1_0,
+						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.TRANSLATABLEID");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_2='column'
+		{
+			newLeafNode(otherlv_2, grammarAccess.getCubeLevelPropAccess().getColumnKeyword_2());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getCubeLevelPropRule());
+					}
+				}
+				{
+					newCompositeNode(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueLEntityFeatureCrossReference_3_0());
+				}
+				ruleLFQN
+				{
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				(
+					lv_type_4_0='type'
+					{
+						newLeafNode(lv_type_4_0, grammarAccess.getCubeLevelPropAccess().getTypeTypeKeyword_4_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getCubeLevelPropRule());
+						}
+						setWithLastConsumed($current, "type", true, "type");
+					}
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getCubeLevelPropAccess().getTypeValueCubeLevelPropTypeEnumRuleCall_4_1_0());
+					}
+					lv_typeValue_5_0=ruleCubeLevelPropType
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getCubeLevelPropRule());
+						}
+						set(
+							$current,
+							"typeValue",
+							lv_typeValue_5_0,
+							"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeLevelPropType");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleCubeMeasure
-entryRuleCubeMeasure returns [EObject current=null] 
-	:
+entryRuleCubeMeasure returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getCubeMeasureRule()); }
-	 iv_ruleCubeMeasure=ruleCubeMeasure 
-	 { $current=$iv_ruleCubeMeasure.current; } 
-	 EOF 
-;
+	iv_ruleCubeMeasure=ruleCubeMeasure
+	{ $current=$iv_ruleCubeMeasure.current; }
+	EOF;
 
 // Rule CubeMeasure
-ruleCubeMeasure returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='measure' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getCubeMeasureAccess().getMeasureKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeMeasureAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
-	    }
-		lv_name_1_0=ruleTRANSLATABLEID		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeMeasureRule());
-	        }
-       		set(
-       			$current, 
-       			"name",
-        		lv_name_1_0, 
-        		"TRANSLATABLEID");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getCubeMeasureAccess().getAggregatorCubeAggregatorEnumEnumRuleCall_2_0()); 
-	    }
-		lv_aggregator_2_0=ruleCubeAggregatorEnum		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getCubeMeasureRule());
-	        }
-       		set(
-       			$current, 
-       			"aggregator",
-        		lv_aggregator_2_0, 
-        		"CubeAggregatorEnum");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_3='column=' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getCubeMeasureAccess().getColumnKeyword_3());
-    }
-(
-(
+ruleCubeMeasure returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='measure'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getCubeMeasureRule());
-	        }
-        }
-		{ 
-	        newCompositeNode(grammarAccess.getCubeMeasureAccess().getMeasureColLEntityFeatureCrossReference_4_0()); 
-	    }
-		ruleLFQN		{ 
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(
-(
-		lv_notVisible_5_0=	'notVisible' 
-    {
-        newLeafNode(lv_notVisible_5_0, grammarAccess.getCubeMeasureAccess().getNotVisibleNotVisibleKeyword_5_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getCubeMeasureRule());
-	        }
-       		setWithLastConsumed($current, "notVisible", true, "notVisible");
-	    }
-
-)
-)?	otherlv_6=';' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getCubeMeasureAccess().getSemicolonKeyword_6());
-    }
-)
+			newLeafNode(otherlv_0, grammarAccess.getCubeMeasureAccess().getMeasureKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubeMeasureAccess().getNameTRANSLATABLEIDParserRuleCall_1_0());
+				}
+				lv_name_1_0=ruleTRANSLATABLEID
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubeMeasureRule());
+					}
+					set(
+						$current,
+						"name",
+						lv_name_1_0,
+						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.TRANSLATABLEID");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getCubeMeasureAccess().getAggregatorCubeAggregatorEnumEnumRuleCall_2_0());
+				}
+				lv_aggregator_2_0=ruleCubeAggregatorEnum
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getCubeMeasureRule());
+					}
+					set(
+						$current,
+						"aggregator",
+						lv_aggregator_2_0,
+						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeAggregatorEnum");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		otherlv_3='column'
+		{
+			newLeafNode(otherlv_3, grammarAccess.getCubeMeasureAccess().getColumnKeyword_3());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getCubeMeasureRule());
+					}
+				}
+				{
+					newCompositeNode(grammarAccess.getCubeMeasureAccess().getMeasureColLEntityFeatureCrossReference_4_0());
+				}
+				ruleLFQN
+				{
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				lv_notVisible_5_0='notVisible'
+				{
+					newLeafNode(lv_notVisible_5_0, grammarAccess.getCubeMeasureAccess().getNotVisibleNotVisibleKeyword_5_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getCubeMeasureRule());
+					}
+					setWithLastConsumed($current, "notVisible", true, "notVisible");
+				}
+			)
+		)?
+	)
 ;
 
-
-
-
-
-// Entry rule entryRuleImport
-entryRuleImport returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getImportRule()); }
-	 iv_ruleImport=ruleImport 
-	 { $current=$iv_ruleImport.current; } 
-	 EOF 
-;
-
-// Rule Import
-ruleImport returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='import' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceCubeQualifiedNameWithWildCardParserRuleCall_1_0()); 
-	    }
-		lv_importedNamespace_1_0=ruleCubeQualifiedNameWithWildCard		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getImportRule());
-	        }
-       		set(
-       			$current, 
-       			"importedNamespace",
-        		lv_importedNamespace_1_0, 
-        		"CubeQualifiedNameWithWildCard");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)	otherlv_2=';' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getImportAccess().getSemicolonKeyword_2());
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleCubeQualifiedNameWithWildCard
-entryRuleCubeQualifiedNameWithWildCard returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getCubeQualifiedNameWithWildCardRule()); } 
-	 iv_ruleCubeQualifiedNameWithWildCard=ruleCubeQualifiedNameWithWildCard 
-	 { $current=$iv_ruleCubeQualifiedNameWithWildCard.current.getText(); }  
-	 EOF 
-;
-
-// Rule CubeQualifiedNameWithWildCard
-ruleCubeQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getCubeQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
-    }
-    this_QualifiedName_0=ruleQualifiedName    {
-		$current.merge(this_QualifiedName_0);
-    }
-
-    { 
-        afterParserOrEnumRuleCall();
-    }
-(
-	kw='.' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getCubeQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); 
-    }
-
-	kw='*' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getCubeQualifiedNameWithWildCardAccess().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 entryRuleLFQN
-entryRuleLFQN returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getLFQNRule()); } 
-	 iv_ruleLFQN=ruleLFQN 
-	 { $current=$iv_ruleLFQN.current.getText(); }  
-	 EOF 
-;
+entryRuleLFQN returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getLFQNRule()); }
+	iv_ruleLFQN=ruleLFQN
+	{ $current=$iv_ruleLFQN.current.getText(); }
+	EOF;
 
 // Rule LFQN
-ruleLFQN returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(    this_ID_0=RULE_ID    {
-		$current.merge(this_ID_0);
-    }
-
-    { 
-    newLeafNode(this_ID_0, grammarAccess.getLFQNAccess().getIDTerminalRuleCall_0()); 
-    }
-(
-	kw='.' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getLFQNAccess().getFullStopKeyword_1_0()); 
-    }
-    this_ID_2=RULE_ID    {
-		$current.merge(this_ID_2);
-    }
-
-    { 
-    newLeafNode(this_ID_2, grammarAccess.getLFQNAccess().getIDTerminalRuleCall_1_1()); 
-    }
-)*)
-    ;
-
-
-
-
-
-// Entry rule entryRuleTRANSLATABLEID
-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    {
-		$current.merge(this_ID_0);
-    }
-
-    { 
-    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 
-;
-
-// Rule TRANSLATABLESTRING
-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()); 
-    }
-
-    ;
-
-
-
-
-
-// Entry rule entryRuleXAnnotation
-entryRuleXAnnotation returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXAnnotationRule()); }
-	 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());
-    }
-(
-(
+ruleLFQN returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		this_ID_0=RULE_ID
 		{
-			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());
-    }
-)?)
-;
-
-
-
-
-
-// Entry rule entryRuleXAnnotationElementValuePair
-entryRuleXAnnotationElementValuePair returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXAnnotationElementValuePairRule()); }
-	 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();
-	    }
-
-)
-))
-;
-
-
-
-
-
-// Entry rule entryRuleXAnnotationElementValueOrCommaList
-entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListRule()); }
-	 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();
-	    }
-
-)
-))+)?))
-;
-
-
-
-
-
-// Entry rule entryRuleXAnnotationElementValue
-entryRuleXAnnotationElementValue returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXAnnotationElementValueRule()); }
-	 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();
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleXAnnotationOrExpression
-entryRuleXAnnotationOrExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXAnnotationOrExpressionRule()); }
-	 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();
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleXExpression
-entryRuleXExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXExpressionRule()); }
-	 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();
-    }
-
-;
-
-
-
-
-
-// Entry rule entryRuleXAssignment
-entryRuleXAssignment returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXAssignmentRule()); }
-	 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();
-	    }
-
-)
-))?))
-;
-
-
-
-
-
-// Entry rule entryRuleOpSingleAssign
-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()); 
-    }
-
-    ;
-
-
-
-
-
-// Entry rule entryRuleOpMultiAssign
-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()); 
-    }
-))
-    ;
-
-
-
-
-
-// Entry rule entryRuleXOrExpression
-entryRuleXOrExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXOrExpressionRule()); }
-	 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);
-    }
-)(
-(
-		{
-			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();
-	    }
-
-)
-))*)
-;
-
-
-
-
-
-// Entry rule entryRuleOpOr
-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()); 
-    }
-
-    ;
-
-
-
-
-
-// Entry rule entryRuleXAndExpression
-entryRuleXAndExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXAndExpressionRule()); }
-	 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);
-    }
-)(
-(
-		{
-			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();
-	    }
-
-)
-))*)
-;
-
-
-
-
-
-// Entry rule entryRuleOpAnd
-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()); 
-    }
-
-    ;
-
-
-
-
-
-// Entry rule entryRuleXEqualityExpression
-entryRuleXEqualityExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXEqualityExpressionRule()); }
-	 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);
-    }
-)(
-(
-		{
-			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();
-	    }
-
-)
-))*)
-;
-
-
-
-
-
-// Entry rule entryRuleOpEquality
-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()); 
-    }
-)
-    ;
-
-
-
-
-
-// Entry rule entryRuleXRelationalExpression
-entryRuleXRelationalExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXRelationalExpressionRule()); }
-	 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);
-    }
-)(
-(
-		{
-			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();
-	    }
-
-)
-)))*)
-;
-
-
-
-
-
-// Entry rule entryRuleOpCompare
-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()); 
-    }
-)
-    ;
-
-
-
-
-
-// Entry rule entryRuleXOtherOperatorExpression
-entryRuleXOtherOperatorExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); }
-	 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);
-    }
-)(
-(
-		{
-			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();
-	    }
-
-)
-))*)
-;
-
-
-
-
-
-// Entry rule entryRuleOpOther
-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()); 
-    }
-)
-    ;
-
-
-
-
-
-// Entry rule entryRuleXAdditiveExpression
-entryRuleXAdditiveExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXAdditiveExpressionRule()); }
-	 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);
-    }
-)(
-(
-		{
-			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();
-	    }
-
-)
-))*)
-;
-
-
-
-
-
-// Entry rule entryRuleOpAdd
-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()); 
-    }
-)
-    ;
-
-
-
-
-
-// Entry rule entryRuleXMultiplicativeExpression
-entryRuleXMultiplicativeExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); }
-	 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);
-    }
-)(
-(
-		{
-			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();
-	    }
-
-)
-))*)
-;
-
-
-
-
-
-// Entry rule entryRuleOpMulti
-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()); 
-    }
-)
-    ;
-
-
-
-
-
-// Entry rule entryRuleXUnaryOperation
-entryRuleXUnaryOperation returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXUnaryOperationRule()); }
-	 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);
-    }
-)(
-(
-		{
-			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();
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleOpUnary
-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()); 
-    }
-)
-    ;
-
-
-
-
-
-// Entry rule entryRuleXCastedExpression
-entryRuleXCastedExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXCastedExpressionRule()); }
-	 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();
-	    }
-
-)
-))*)
-;
-
-
-
-
-
-// Entry rule entryRuleXPostfixOperation
-entryRuleXPostfixOperation returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXPostfixOperationRule()); }
-	 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);
-    }
-)(
-(
-		{
-			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 
-;
-
-// 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()); 
-    }
-)
-    ;
-
-
-
-
-
-// Entry rule entryRuleXMemberFeatureCall
-entryRuleXMemberFeatureCall returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXMemberFeatureCallRule()); }
-	 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, "::");
-	    }
-
-)
-))(
-(
-		{
-			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());
-    }
-)?(
-(
-		{
-			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();
-	    }
-
-)
-)?))*)
-;
-
-
-
-
-
-// Entry rule entryRuleXPrimaryExpression
-entryRuleXPrimaryExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXPrimaryExpressionRule()); }
-	 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();
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleXLiteral
-entryRuleXLiteral returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXLiteralRule()); }
-	 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();
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleXCollectionLiteral
-entryRuleXCollectionLiteral returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXCollectionLiteralRule()); }
-	 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();
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleXSetLiteral
-entryRuleXSetLiteral returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXSetLiteralRule()); }
-	 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());
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleXListLiteral
-entryRuleXListLiteral returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXListLiteralRule()); }
-	 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());
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleXClosure
-entryRuleXClosure returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXClosureRule()); }
-	 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());
-    }
-)
-;
-
-
-
-
-
-// Entry rule entryRuleXExpressionInClosure
-entryRuleXExpressionInClosure returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXExpressionInClosureRule()); }
-	 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());
-    }
-)?)*)
-;
-
-
-
-
-
-// Entry rule entryRuleXShortClosure
-entryRuleXShortClosure returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXShortClosureRule()); }
-	 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();
-	    }
-
-)
-))
-;
-
-
-
-
-
-// Entry rule entryRuleXParenthesizedExpression
-entryRuleXParenthesizedExpression returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXParenthesizedExpressionRule()); }
-	 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());
-    }
-)?(
-(
-		{
-			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()); 
+			$current.merge(this_ID_0);
 		}
 		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXStringLiteralRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"value",
-        		lv_value_1_0, 
-        		"STRING");
-	    }
-
-)
-))
+			newLeafNode(this_ID_0, grammarAccess.getLFQNAccess().getIDTerminalRuleCall_0());
+		}
+		(
+			kw='.'
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getLFQNAccess().getFullStopKeyword_1_0());
+			}
+			this_ID_2=RULE_ID
+			{
+				$current.merge(this_ID_2);
+			}
+			{
+				newLeafNode(this_ID_2, grammarAccess.getLFQNAccess().getIDTerminalRuleCall_1_1());
+			}
+		)*
+	)
 ;
 
+// Entry rule entryRuleTRANSLATABLEID
+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
+	{
+		$current.merge(this_ID_0);
+	}
+	{
+		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;
 
+// Rule TRANSLATABLESTRING
+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());
+	}
+;
+
+// 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]:
+	{ newCompositeNode(grammarAccess.getXAnnotationRule()); }
+	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());
+		}
+		(
+			(
+				{
+					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]:
+	{ newCompositeNode(grammarAccess.getXAnnotationElementValuePairRule()); }
+	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,
+						"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationElementValue");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
+;
+
+// Entry rule entryRuleXAnnotationElementValueOrCommaList
+entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListRule()); }
+	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,
+								"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]:
+	{ newCompositeNode(grammarAccess.getXAnnotationElementValueRule()); }
+	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,
+								"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]:
+	{ newCompositeNode(grammarAccess.getXAnnotationOrExpressionRule()); }
+	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();
+		}
+	)
+;
+
+// Entry rule entryRuleXExpression
+entryRuleXExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXExpressionRule()); }
+	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();
+	}
+;
+
+// Entry rule entryRuleXAssignment
+entryRuleXAssignment returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXAssignmentRule()); }
+	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,
+							"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;
+
+// Rule OpSingleAssign
+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;
+
+// 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());
+			}
+		)
+	)
+;
+
+// Entry rule entryRuleXOrExpression
+entryRuleXOrExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXOrExpressionRule()); }
+	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);
+						}
+					)
+					(
+						(
+							{
+								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;
+
+// Rule OpOr
+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]:
+	{ newCompositeNode(grammarAccess.getXAndExpressionRule()); }
+	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);
+						}
+					)
+					(
+						(
+							{
+								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;
+
+// Rule OpAnd
+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]:
+	{ newCompositeNode(grammarAccess.getXEqualityExpressionRule()); }
+	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);
+						}
+					)
+					(
+						(
+							{
+								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;
+
+// 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());
+		}
+	)
+;
+
+// Entry rule entryRuleXRelationalExpression
+entryRuleXRelationalExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXRelationalExpressionRule()); }
+	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,
+								"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;
+
+// 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());
+		}
+	)
+;
+
+// Entry rule entryRuleXOtherOperatorExpression
+entryRuleXOtherOperatorExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); }
+	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);
+						}
+					)
+					(
+						(
+							{
+								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;
+
+// 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());
+		}
+	)
+;
+
+// Entry rule entryRuleXAdditiveExpression
+entryRuleXAdditiveExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXAdditiveExpressionRule()); }
+	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);
+						}
+					)
+					(
+						(
+							{
+								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;
+
+// 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());
+		}
+	)
+;
+
+// Entry rule entryRuleXMultiplicativeExpression
+entryRuleXMultiplicativeExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); }
+	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);
+						}
+					)
+					(
+						(
+							{
+								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;
+
+// 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());
+		}
+	)
+;
+
+// Entry rule entryRuleXUnaryOperation
+entryRuleXUnaryOperation returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXUnaryOperationRule()); }
+	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);
+				}
+			)
+			(
+				(
+					{
+						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();
+					}
+				)
+			)
+		)
+		    |
+		{
+			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;
+
+// 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());
+		}
+	)
+;
+
+// Entry rule entryRuleXCastedExpression
+entryRuleXCastedExpression returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXCastedExpressionRule()); }
+	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,
+							"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)*
+	)
+;
+
+// Entry rule entryRuleXPostfixOperation
+entryRuleXPostfixOperation returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXPostfixOperationRule()); }
+	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);
+					}
+				)
+				(
+					(
+						{
+							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;
+
+// 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());
+		}
+	)
+;
+
+// Entry rule entryRuleXMemberFeatureCall
+entryRuleXMemberFeatureCall returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXMemberFeatureCallRule()); }
+	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, "::");
+									}
+								)
+							)
+						)
+						(
+							(
+								{
+									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]:
+	{ newCompositeNode(grammarAccess.getXPrimaryExpressionRule()); }
+	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();
+		}
+	)
+;
+
+// Entry rule entryRuleXLiteral
+entryRuleXLiteral returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXLiteralRule()); }
+	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();
+		}
+	)
+;
+
+// Entry rule entryRuleXCollectionLiteral
+entryRuleXCollectionLiteral returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXCollectionLiteralRule()); }
+	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();
+		}
+	)
+;
+
+// Entry rule entryRuleXSetLiteral
+entryRuleXSetLiteral returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXSetLiteralRule()); }
+	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,
+							"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]:
+	{ newCompositeNode(grammarAccess.getXListLiteralRule()); }
+	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,
+							"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]:
+	{ newCompositeNode(grammarAccess.getXClosureRule()); }
+	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,
+									"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]:
+	{ newCompositeNode(grammarAccess.getXExpressionInClosureRule()); }
+	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,
+							"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]:
+	{ newCompositeNode(grammarAccess.getXShortClosureRule()); }
+	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,
+									"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]:
+	{ newCompositeNode(grammarAccess.getXParenthesizedExpressionRule()); }
+	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,
+						"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 CubeAggregatorEnum
-ruleCubeAggregatorEnum returns [Enumerator current=null] 
-    @init { enterRule(); }
-    @after { leaveRule(); }:
-((	enumLiteral_0='sum' 
-	{
-        $current = grammarAccess.getCubeAggregatorEnumAccess().getSUMEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_0, grammarAccess.getCubeAggregatorEnumAccess().getSUMEnumLiteralDeclaration_0()); 
-    }
-)
-    |(	enumLiteral_1='count' 
-	{
-        $current = grammarAccess.getCubeAggregatorEnumAccess().getCOUNTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_1, grammarAccess.getCubeAggregatorEnumAccess().getCOUNTEnumLiteralDeclaration_1()); 
-    }
-)
-    |(	enumLiteral_2='min' 
-	{
-        $current = grammarAccess.getCubeAggregatorEnumAccess().getMINEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_2, grammarAccess.getCubeAggregatorEnumAccess().getMINEnumLiteralDeclaration_2()); 
-    }
-)
-    |(	enumLiteral_3='max' 
-	{
-        $current = grammarAccess.getCubeAggregatorEnumAccess().getMAXEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_3, grammarAccess.getCubeAggregatorEnumAccess().getMAXEnumLiteralDeclaration_3()); 
-    }
-)
-    |(	enumLiteral_4='avg' 
-	{
-        $current = grammarAccess.getCubeAggregatorEnumAccess().getAVGEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_4, grammarAccess.getCubeAggregatorEnumAccess().getAVGEnumLiteralDeclaration_4()); 
-    }
-)
-    |(	enumLiteral_5='distinct-count' 
-	{
-        $current = grammarAccess.getCubeAggregatorEnumAccess().getDSCEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_5, grammarAccess.getCubeAggregatorEnumAccess().getDSCEnumLiteralDeclaration_5()); 
-    }
-));
-
-
+ruleCubeAggregatorEnum returns [Enumerator current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			enumLiteral_0='sum'
+			{
+				$current = grammarAccess.getCubeAggregatorEnumAccess().getSUMEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_0, grammarAccess.getCubeAggregatorEnumAccess().getSUMEnumLiteralDeclaration_0());
+			}
+		)
+		    |
+		(
+			enumLiteral_1='count'
+			{
+				$current = grammarAccess.getCubeAggregatorEnumAccess().getCOUNTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_1, grammarAccess.getCubeAggregatorEnumAccess().getCOUNTEnumLiteralDeclaration_1());
+			}
+		)
+		    |
+		(
+			enumLiteral_2='min'
+			{
+				$current = grammarAccess.getCubeAggregatorEnumAccess().getMINEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_2, grammarAccess.getCubeAggregatorEnumAccess().getMINEnumLiteralDeclaration_2());
+			}
+		)
+		    |
+		(
+			enumLiteral_3='max'
+			{
+				$current = grammarAccess.getCubeAggregatorEnumAccess().getMAXEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_3, grammarAccess.getCubeAggregatorEnumAccess().getMAXEnumLiteralDeclaration_3());
+			}
+		)
+		    |
+		(
+			enumLiteral_4='avg'
+			{
+				$current = grammarAccess.getCubeAggregatorEnumAccess().getAVGEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_4, grammarAccess.getCubeAggregatorEnumAccess().getAVGEnumLiteralDeclaration_4());
+			}
+		)
+		    |
+		(
+			enumLiteral_5='distinct-count'
+			{
+				$current = grammarAccess.getCubeAggregatorEnumAccess().getDSCEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_5, grammarAccess.getCubeAggregatorEnumAccess().getDSCEnumLiteralDeclaration_5());
+			}
+		)
+	)
+;
 
 // Rule CubeLevelPropType
-ruleCubeLevelPropType returns [Enumerator current=null] 
-    @init { enterRule(); }
-    @after { leaveRule(); }:
-((	enumLiteral_0='String' 
-	{
-        $current = grammarAccess.getCubeLevelPropTypeAccess().getSTRINGEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_0, grammarAccess.getCubeLevelPropTypeAccess().getSTRINGEnumLiteralDeclaration_0()); 
-    }
-)
-    |(	enumLiteral_1='Numeric' 
-	{
-        $current = grammarAccess.getCubeLevelPropTypeAccess().getNUMERICEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_1, grammarAccess.getCubeLevelPropTypeAccess().getNUMERICEnumLiteralDeclaration_1()); 
-    }
-)
-    |(	enumLiteral_2='Integer' 
-	{
-        $current = grammarAccess.getCubeLevelPropTypeAccess().getINTEGEREnumLiteralDeclaration_2().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_2, grammarAccess.getCubeLevelPropTypeAccess().getINTEGEREnumLiteralDeclaration_2()); 
-    }
-)
-    |(	enumLiteral_3='Boolean' 
-	{
-        $current = grammarAccess.getCubeLevelPropTypeAccess().getBOOLEANEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_3, grammarAccess.getCubeLevelPropTypeAccess().getBOOLEANEnumLiteralDeclaration_3()); 
-    }
-)
-    |(	enumLiteral_4='Date' 
-	{
-        $current = grammarAccess.getCubeLevelPropTypeAccess().getDATEEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_4, grammarAccess.getCubeLevelPropTypeAccess().getDATEEnumLiteralDeclaration_4()); 
-    }
-)
-    |(	enumLiteral_5='Time' 
-	{
-        $current = grammarAccess.getCubeLevelPropTypeAccess().getTIMEEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_5, grammarAccess.getCubeLevelPropTypeAccess().getTIMEEnumLiteralDeclaration_5()); 
-    }
-)
-    |(	enumLiteral_6='Timestamp' 
-	{
-        $current = grammarAccess.getCubeLevelPropTypeAccess().getTIMESTAMPEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_6, grammarAccess.getCubeLevelPropTypeAccess().getTIMESTAMPEnumLiteralDeclaration_6()); 
-    }
-));
-
-
+ruleCubeLevelPropType returns [Enumerator current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			enumLiteral_0='String'
+			{
+				$current = grammarAccess.getCubeLevelPropTypeAccess().getSTRINGEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_0, grammarAccess.getCubeLevelPropTypeAccess().getSTRINGEnumLiteralDeclaration_0());
+			}
+		)
+		    |
+		(
+			enumLiteral_1='Numeric'
+			{
+				$current = grammarAccess.getCubeLevelPropTypeAccess().getNUMERICEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_1, grammarAccess.getCubeLevelPropTypeAccess().getNUMERICEnumLiteralDeclaration_1());
+			}
+		)
+		    |
+		(
+			enumLiteral_2='Integer'
+			{
+				$current = grammarAccess.getCubeLevelPropTypeAccess().getINTEGEREnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_2, grammarAccess.getCubeLevelPropTypeAccess().getINTEGEREnumLiteralDeclaration_2());
+			}
+		)
+		    |
+		(
+			enumLiteral_3='Boolean'
+			{
+				$current = grammarAccess.getCubeLevelPropTypeAccess().getBOOLEANEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_3, grammarAccess.getCubeLevelPropTypeAccess().getBOOLEANEnumLiteralDeclaration_3());
+			}
+		)
+		    |
+		(
+			enumLiteral_4='Date'
+			{
+				$current = grammarAccess.getCubeLevelPropTypeAccess().getDATEEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_4, grammarAccess.getCubeLevelPropTypeAccess().getDATEEnumLiteralDeclaration_4());
+			}
+		)
+		    |
+		(
+			enumLiteral_5='Time'
+			{
+				$current = grammarAccess.getCubeLevelPropTypeAccess().getTIMEEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_5, grammarAccess.getCubeLevelPropTypeAccess().getTIMEEnumLiteralDeclaration_5());
+			}
+		)
+		    |
+		(
+			enumLiteral_6='Timestamp'
+			{
+				$current = grammarAccess.getCubeLevelPropTypeAccess().getTIMESTAMPEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_6, grammarAccess.getCubeLevelPropTypeAccess().getTIMESTAMPEnumLiteralDeclaration_6());
+			}
+		)
+	)
+;
 
 // Rule CubeLevelLevelType
-ruleCubeLevelLevelType returns [Enumerator current=null] 
-    @init { enterRule(); }
-    @after { leaveRule(); }:
-((	enumLiteral_0='Time' 
-	{
-        $current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_0, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0()); 
-    }
-)
-    |(	enumLiteral_1='TimeYears' 
-	{
-        $current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_YEARSEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_1, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_YEARSEnumLiteralDeclaration_1()); 
-    }
-)
-    |(	enumLiteral_2='TimeHalfYears' 
-	{
-        $current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HALF_YEARSEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_2, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HALF_YEARSEnumLiteralDeclaration_2()); 
-    }
-)
-    |(	enumLiteral_3='TimeQuarters' 
-	{
-        $current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_QUARTERSEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_3, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_QUARTERSEnumLiteralDeclaration_3()); 
-    }
-)
-    |(	enumLiteral_4='TimeMonths' 
-	{
-        $current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MONTHSEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_4, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MONTHSEnumLiteralDeclaration_4()); 
-    }
-)
-    |(	enumLiteral_5='TimeWeeks' 
-	{
-        $current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_WEEKSEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_5, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_WEEKSEnumLiteralDeclaration_5()); 
-    }
-)
-    |(	enumLiteral_6='TimeDays' 
-	{
-        $current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_DAYSEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_6, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_DAYSEnumLiteralDeclaration_6()); 
-    }
-)
-    |(	enumLiteral_7='TimeHours' 
-	{
-        $current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HOURSEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_7, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HOURSEnumLiteralDeclaration_7()); 
-    }
-)
-    |(	enumLiteral_8='TimeMinutes' 
-	{
-        $current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MINUTESEnumLiteralDeclaration_8().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_8, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MINUTESEnumLiteralDeclaration_8()); 
-    }
-)
-    |(	enumLiteral_9='TimeSeconds' 
-	{
-        $current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_9, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9()); 
-    }
-));
-
-
+ruleCubeLevelLevelType returns [Enumerator current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			enumLiteral_0='Time'
+			{
+				$current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_0, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0());
+			}
+		)
+		    |
+		(
+			enumLiteral_1='TimeYears'
+			{
+				$current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_YEARSEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_1, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_YEARSEnumLiteralDeclaration_1());
+			}
+		)
+		    |
+		(
+			enumLiteral_2='TimeHalfYears'
+			{
+				$current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HALF_YEARSEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_2, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HALF_YEARSEnumLiteralDeclaration_2());
+			}
+		)
+		    |
+		(
+			enumLiteral_3='TimeQuarters'
+			{
+				$current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_QUARTERSEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_3, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_QUARTERSEnumLiteralDeclaration_3());
+			}
+		)
+		    |
+		(
+			enumLiteral_4='TimeMonths'
+			{
+				$current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MONTHSEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_4, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MONTHSEnumLiteralDeclaration_4());
+			}
+		)
+		    |
+		(
+			enumLiteral_5='TimeWeeks'
+			{
+				$current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_WEEKSEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_5, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_WEEKSEnumLiteralDeclaration_5());
+			}
+		)
+		    |
+		(
+			enumLiteral_6='TimeDays'
+			{
+				$current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_DAYSEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_6, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_DAYSEnumLiteralDeclaration_6());
+			}
+		)
+		    |
+		(
+			enumLiteral_7='TimeHours'
+			{
+				$current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HOURSEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_7, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HOURSEnumLiteralDeclaration_7());
+			}
+		)
+		    |
+		(
+			enumLiteral_8='TimeMinutes'
+			{
+				$current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MINUTESEnumLiteralDeclaration_8().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_8, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MINUTESEnumLiteralDeclaration_8());
+			}
+		)
+		    |
+		(
+			enumLiteral_9='TimeSeconds'
+			{
+				$current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_9, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9());
+			}
+		)
+	)
+;
 
 RULE_HEX : ('0x'|'0X') ('0'..'9'|'a'..'f'|'A'..'F'|'_')+ ('#' (('b'|'B') ('i'|'I')|('l'|'L')))?;
 
@@ -8080,5 +8501,3 @@
 RULE_WS : (' '|'\t'|'\r'|'\n')+;
 
 RULE_ANY_OTHER : .;
-
-
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.tokens b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.tokens
index 39fb474..79d3b48 100644
--- a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.tokens
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.tokens
@@ -1,120 +1,121 @@
-'!'=74
-'!='=59
-'!=='=61
-'#'=45
-'%'=73
-'%='=52
-'&&'=57
-'&'=108
-'('=41
-')'=43
-'*'=39
-'**'=71
-'*='=50
-'+'=69
-'++'=76
-'+='=48
-','=42
-'-'=70
-'--'=77
-'-='=49
-'->'=63
-'.'=38
-'..'=65
-'..<'=64
-'/'=72
-'/='=51
-':'=84
-'::'=78
-';'=20
-'<'=53
-'<>'=67
-'='=44
-'=='=58
-'==='=60
-'=>'=66
-'>'=54
-'>='=55
-'?'=107
-'?.'=79
-'?:'=68
-'@'=40
-'Boolean'=118
-'Date'=119
-'Integer'=117
-'Numeric'=116
-'String'=115
-'Time'=120
-'TimeDays'=127
-'TimeHalfYears'=123
-'TimeHours'=128
-'TimeMinutes'=129
-'TimeMonths'=125
-'TimeQuarters'=124
-'TimeSeconds'=130
-'TimeWeeks'=126
-'TimeYears'=122
-'Timestamp'=121
-'['=46
-']'=47
-'allMemberName='=25
-'as'=75
-'avg'=113
-'case'=86
-'catch'=106
-'column='=30
-'count'=110
+'!'=77
+'!='=62
+'!=='=64
+'#'=48
+'%'=76
+'%='=55
+'&&'=60
+'&'=109
+'('=44
+')'=46
+'*'=40
+'**'=74
+'*='=53
+'+'=72
+'++'=79
+'+='=51
+','=45
+'-'=73
+'--'=80
+'-='=52
+'->'=66
+'.'=36
+'..'=68
+'..<'=67
+'/'=75
+'/='=54
+':'=87
+'::'=81
+';'=42
+'<'=56
+'<>'=70
+'='=47
+'=='=61
+'==='=63
+'=>'=69
+'>'=57
+'>='=58
+'?'=108
+'?.'=82
+'?:'=71
+'@'=43
+'Boolean'=119
+'Date'=120
+'Integer'=118
+'Numeric'=117
+'String'=116
+'Time'=121
+'TimeDays'=128
+'TimeHalfYears'=124
+'TimeHours'=129
+'TimeMinutes'=130
+'TimeMonths'=126
+'TimeQuarters'=125
+'TimeSeconds'=131
+'TimeWeeks'=127
+'TimeYears'=123
+'Timestamp'=122
+'['=49
+']'=50
+'allMemberName'=24
+'as'=78
+'avg'=114
+'case'=89
+'catch'=107
+'column'=29
+'count'=111
 'cube'=16
-'default'=85
+'default'=88
 'defaultMeasure'=17
-'defaultMember='=26
-'dimension'=21
+'defaultMember'=25
+'dimension'=20
 'dimensionUsage'=18
-'distinct-count'=114
-'do'=89
-'else'=82
-'entity'=27
-'extends'=92
-'extension'=94
-'false'=97
-'finally'=104
-'for'=87
-'hasAll'=24
-'hierarchy'=23
-'if'=81
+'distinct-count'=115
+'do'=92
+'else'=85
+'entity'=26
+'extends'=95
+'extension'=39
+'false'=98
+'finally'=105
+'for'=90
+'hasAll'=23
+'hierarchy'=22
+'if'=84
 'import'=37
-'instanceof'=62
-'key='=28
-'level'=29
-'levelType='=32
-'max'=112
-'measure'=35
-'min'=111
-'new'=96
-'notVisible'=36
-'null'=99
+'instanceof'=65
+'key'=27
+'level'=28
+'levelType'=31
+'max'=113
+'measure'=34
+'min'=112
+'new'=97
+'notVisible'=35
+'ns'=41
+'null'=100
 'over'=19
 'package'=13
-'property'=33
-'return'=102
-'static'=93
-'sum'=109
-'super'=95
-'switch'=83
-'synchronized'=105
-'throw'=101
-'true'=98
-'try'=103
-'type='=34
-'typeTime'=22
-'typeof'=100
-'uniqueMembers'=31
-'val'=91
-'var'=90
-'while'=88
+'property'=32
+'return'=103
+'static'=38
+'sum'=110
+'super'=96
+'switch'=86
+'synchronized'=106
+'throw'=102
+'true'=99
+'try'=104
+'type'=33
+'typeTime'=21
+'typeof'=101
+'uniqueMembers'=30
+'val'=94
+'var'=93
+'while'=91
 '{'=14
-'|'=80
-'||'=56
+'|'=83
+'||'=59
 '}'=15
 RULE_ANY_OTHER=12
 RULE_DECIMAL=8
@@ -156,6 +157,7 @@
 T__128=128
 T__129=129
 T__130=130
+T__131=131
 T__13=13
 T__14=14
 T__15=15
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSLLexer.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSLLexer.java
index 87bfa26..0760a58 100644
--- a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSLLexer.java
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSLLexer.java
@@ -40,6 +40,7 @@
     public static final int T__60=60;
     public static final int T__61=61;
     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;
@@ -166,15 +167,15 @@
         super(input,state);
 
     }
-    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g"; }
+    public String getGrammarFileName() { return "InternalCubeDSL.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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:11:7: ( 'package' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:11:9: 'package'
+            // InternalCubeDSL.g:11:7: ( 'package' )
+            // InternalCubeDSL.g:11:9: 'package'
             {
             match("package"); 
 
@@ -194,8 +195,8 @@
         try {
             int _type = T__14;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:12:7: ( '{' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:12:9: '{'
+            // InternalCubeDSL.g:12:7: ( '{' )
+            // InternalCubeDSL.g:12:9: '{'
             {
             match('{'); 
 
@@ -214,8 +215,8 @@
         try {
             int _type = T__15;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:13:7: ( '}' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:13:9: '}'
+            // InternalCubeDSL.g:13:7: ( '}' )
+            // InternalCubeDSL.g:13:9: '}'
             {
             match('}'); 
 
@@ -234,8 +235,8 @@
         try {
             int _type = T__16;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:14:7: ( 'cube' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:14:9: 'cube'
+            // InternalCubeDSL.g:14:7: ( 'cube' )
+            // InternalCubeDSL.g:14:9: 'cube'
             {
             match("cube"); 
 
@@ -255,8 +256,8 @@
         try {
             int _type = T__17;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:15:7: ( 'defaultMeasure' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:15:9: 'defaultMeasure'
+            // InternalCubeDSL.g:15:7: ( 'defaultMeasure' )
+            // InternalCubeDSL.g:15:9: 'defaultMeasure'
             {
             match("defaultMeasure"); 
 
@@ -276,8 +277,8 @@
         try {
             int _type = T__18;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:16:7: ( 'dimensionUsage' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:16:9: 'dimensionUsage'
+            // InternalCubeDSL.g:16:7: ( 'dimensionUsage' )
+            // InternalCubeDSL.g:16:9: 'dimensionUsage'
             {
             match("dimensionUsage"); 
 
@@ -297,8 +298,8 @@
         try {
             int _type = T__19;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:17:7: ( 'over' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:17:9: 'over'
+            // InternalCubeDSL.g:17:7: ( 'over' )
+            // InternalCubeDSL.g:17:9: 'over'
             {
             match("over"); 
 
@@ -318,10 +319,11 @@
         try {
             int _type = T__20;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:18:7: ( ';' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:18:9: ';'
+            // InternalCubeDSL.g:18:7: ( 'dimension' )
+            // InternalCubeDSL.g:18:9: 'dimension'
             {
-            match(';'); 
+            match("dimension"); 
+
 
             }
 
@@ -338,10 +340,10 @@
         try {
             int _type = T__21;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:19:7: ( 'dimension' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:19:9: 'dimension'
+            // InternalCubeDSL.g:19:7: ( 'typeTime' )
+            // InternalCubeDSL.g:19:9: 'typeTime'
             {
-            match("dimension"); 
+            match("typeTime"); 
 
 
             }
@@ -359,10 +361,10 @@
         try {
             int _type = T__22;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:20:7: ( 'typeTime' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:20:9: 'typeTime'
+            // InternalCubeDSL.g:20:7: ( 'hierarchy' )
+            // InternalCubeDSL.g:20:9: 'hierarchy'
             {
-            match("typeTime"); 
+            match("hierarchy"); 
 
 
             }
@@ -380,10 +382,10 @@
         try {
             int _type = T__23;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:21:7: ( 'hierarchy' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:21:9: 'hierarchy'
+            // InternalCubeDSL.g:21:7: ( 'hasAll' )
+            // InternalCubeDSL.g:21:9: 'hasAll'
             {
-            match("hierarchy"); 
+            match("hasAll"); 
 
 
             }
@@ -401,10 +403,10 @@
         try {
             int _type = T__24;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:22:7: ( 'hasAll' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:22:9: 'hasAll'
+            // InternalCubeDSL.g:22:7: ( 'allMemberName' )
+            // InternalCubeDSL.g:22:9: 'allMemberName'
             {
-            match("hasAll"); 
+            match("allMemberName"); 
 
 
             }
@@ -422,10 +424,10 @@
         try {
             int _type = T__25;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:23:7: ( 'allMemberName=' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:23:9: 'allMemberName='
+            // InternalCubeDSL.g:23:7: ( 'defaultMember' )
+            // InternalCubeDSL.g:23:9: 'defaultMember'
             {
-            match("allMemberName="); 
+            match("defaultMember"); 
 
 
             }
@@ -443,10 +445,10 @@
         try {
             int _type = T__26;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:24:7: ( 'defaultMember=' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:24:9: 'defaultMember='
+            // InternalCubeDSL.g:24:7: ( 'entity' )
+            // InternalCubeDSL.g:24:9: 'entity'
             {
-            match("defaultMember="); 
+            match("entity"); 
 
 
             }
@@ -464,10 +466,10 @@
         try {
             int _type = T__27;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:25:7: ( 'entity' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:25:9: 'entity'
+            // InternalCubeDSL.g:25:7: ( 'key' )
+            // InternalCubeDSL.g:25:9: 'key'
             {
-            match("entity"); 
+            match("key"); 
 
 
             }
@@ -485,10 +487,10 @@
         try {
             int _type = T__28;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:26:7: ( 'key=' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:26:9: 'key='
+            // InternalCubeDSL.g:26:7: ( 'level' )
+            // InternalCubeDSL.g:26:9: 'level'
             {
-            match("key="); 
+            match("level"); 
 
 
             }
@@ -506,10 +508,10 @@
         try {
             int _type = T__29;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:27:7: ( 'level' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:27:9: 'level'
+            // InternalCubeDSL.g:27:7: ( 'column' )
+            // InternalCubeDSL.g:27:9: 'column'
             {
-            match("level"); 
+            match("column"); 
 
 
             }
@@ -527,10 +529,10 @@
         try {
             int _type = T__30;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:28:7: ( 'column=' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:28:9: 'column='
+            // InternalCubeDSL.g:28:7: ( 'uniqueMembers' )
+            // InternalCubeDSL.g:28:9: 'uniqueMembers'
             {
-            match("column="); 
+            match("uniqueMembers"); 
 
 
             }
@@ -548,10 +550,10 @@
         try {
             int _type = T__31;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:29:7: ( 'uniqueMembers' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:29:9: 'uniqueMembers'
+            // InternalCubeDSL.g:29:7: ( 'levelType' )
+            // InternalCubeDSL.g:29:9: 'levelType'
             {
-            match("uniqueMembers"); 
+            match("levelType"); 
 
 
             }
@@ -569,10 +571,10 @@
         try {
             int _type = T__32;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:30:7: ( 'levelType=' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:30:9: 'levelType='
+            // InternalCubeDSL.g:30:7: ( 'property' )
+            // InternalCubeDSL.g:30:9: 'property'
             {
-            match("levelType="); 
+            match("property"); 
 
 
             }
@@ -590,10 +592,10 @@
         try {
             int _type = T__33;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:31:7: ( 'property' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:31:9: 'property'
+            // InternalCubeDSL.g:31:7: ( 'type' )
+            // InternalCubeDSL.g:31:9: 'type'
             {
-            match("property"); 
+            match("type"); 
 
 
             }
@@ -611,10 +613,10 @@
         try {
             int _type = T__34;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:32:7: ( 'type=' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:32:9: 'type='
+            // InternalCubeDSL.g:32:7: ( 'measure' )
+            // InternalCubeDSL.g:32:9: 'measure'
             {
-            match("type="); 
+            match("measure"); 
 
 
             }
@@ -632,10 +634,10 @@
         try {
             int _type = T__35;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:33:7: ( 'measure' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:33:9: 'measure'
+            // InternalCubeDSL.g:33:7: ( 'notVisible' )
+            // InternalCubeDSL.g:33:9: 'notVisible'
             {
-            match("measure"); 
+            match("notVisible"); 
 
 
             }
@@ -653,11 +655,10 @@
         try {
             int _type = T__36;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:34:7: ( 'notVisible' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:34:9: 'notVisible'
+            // InternalCubeDSL.g:34:7: ( '.' )
+            // InternalCubeDSL.g:34:9: '.'
             {
-            match("notVisible"); 
-
+            match('.'); 
 
             }
 
@@ -674,8 +675,8 @@
         try {
             int _type = T__37;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:35:7: ( 'import' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:35:9: 'import'
+            // InternalCubeDSL.g:35:7: ( 'import' )
+            // InternalCubeDSL.g:35:9: 'import'
             {
             match("import"); 
 
@@ -695,10 +696,11 @@
         try {
             int _type = T__38;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:36:7: ( '.' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:36:9: '.'
+            // InternalCubeDSL.g:36:7: ( 'static' )
+            // InternalCubeDSL.g:36:9: 'static'
             {
-            match('.'); 
+            match("static"); 
+
 
             }
 
@@ -715,10 +717,11 @@
         try {
             int _type = T__39;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:37:7: ( '*' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:37:9: '*'
+            // InternalCubeDSL.g:37:7: ( 'extension' )
+            // InternalCubeDSL.g:37:9: 'extension'
             {
-            match('*'); 
+            match("extension"); 
+
 
             }
 
@@ -735,10 +738,10 @@
         try {
             int _type = T__40;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:38:7: ( '@' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:38:9: '@'
+            // InternalCubeDSL.g:38:7: ( '*' )
+            // InternalCubeDSL.g:38:9: '*'
             {
-            match('@'); 
+            match('*'); 
 
             }
 
@@ -755,10 +758,11 @@
         try {
             int _type = T__41;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:39:7: ( '(' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:39:9: '('
+            // InternalCubeDSL.g:39:7: ( 'ns' )
+            // InternalCubeDSL.g:39:9: 'ns'
             {
-            match('('); 
+            match("ns"); 
+
 
             }
 
@@ -775,10 +779,10 @@
         try {
             int _type = T__42;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:40:7: ( ',' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:40:9: ','
+            // InternalCubeDSL.g:40:7: ( ';' )
+            // InternalCubeDSL.g:40:9: ';'
             {
-            match(','); 
+            match(';'); 
 
             }
 
@@ -795,10 +799,10 @@
         try {
             int _type = T__43;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:41:7: ( ')' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:41:9: ')'
+            // InternalCubeDSL.g:41:7: ( '@' )
+            // InternalCubeDSL.g:41:9: '@'
             {
-            match(')'); 
+            match('@'); 
 
             }
 
@@ -815,10 +819,10 @@
         try {
             int _type = T__44;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:42:7: ( '=' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:42:9: '='
+            // InternalCubeDSL.g:42:7: ( '(' )
+            // InternalCubeDSL.g:42:9: '('
             {
-            match('='); 
+            match('('); 
 
             }
 
@@ -835,10 +839,10 @@
         try {
             int _type = T__45;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:43:7: ( '#' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:43:9: '#'
+            // InternalCubeDSL.g:43:7: ( ',' )
+            // InternalCubeDSL.g:43:9: ','
             {
-            match('#'); 
+            match(','); 
 
             }
 
@@ -855,10 +859,10 @@
         try {
             int _type = T__46;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:44:7: ( '[' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:44:9: '['
+            // InternalCubeDSL.g:44:7: ( ')' )
+            // InternalCubeDSL.g:44:9: ')'
             {
-            match('['); 
+            match(')'); 
 
             }
 
@@ -875,10 +879,10 @@
         try {
             int _type = T__47;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:45:7: ( ']' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:45:9: ']'
+            // InternalCubeDSL.g:45:7: ( '=' )
+            // InternalCubeDSL.g:45:9: '='
             {
-            match(']'); 
+            match('='); 
 
             }
 
@@ -895,11 +899,10 @@
         try {
             int _type = T__48;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:46:7: ( '+=' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:46:9: '+='
+            // InternalCubeDSL.g:46:7: ( '#' )
+            // InternalCubeDSL.g:46:9: '#'
             {
-            match("+="); 
-
+            match('#'); 
 
             }
 
@@ -916,11 +919,10 @@
         try {
             int _type = T__49;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:47:7: ( '-=' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:47:9: '-='
+            // InternalCubeDSL.g:47:7: ( '[' )
+            // InternalCubeDSL.g:47:9: '['
             {
-            match("-="); 
-
+            match('['); 
 
             }
 
@@ -937,11 +939,10 @@
         try {
             int _type = T__50;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:48:7: ( '*=' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:48:9: '*='
+            // InternalCubeDSL.g:48:7: ( ']' )
+            // InternalCubeDSL.g:48:9: ']'
             {
-            match("*="); 
-
+            match(']'); 
 
             }
 
@@ -958,10 +959,10 @@
         try {
             int _type = T__51;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:49:7: ( '/=' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:49:9: '/='
+            // InternalCubeDSL.g:49:7: ( '+=' )
+            // InternalCubeDSL.g:49:9: '+='
             {
-            match("/="); 
+            match("+="); 
 
 
             }
@@ -979,10 +980,10 @@
         try {
             int _type = T__52;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:50:7: ( '%=' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:50:9: '%='
+            // InternalCubeDSL.g:50:7: ( '-=' )
+            // InternalCubeDSL.g:50:9: '-='
             {
-            match("%="); 
+            match("-="); 
 
 
             }
@@ -1000,10 +1001,11 @@
         try {
             int _type = T__53;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:51:7: ( '<' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:51:9: '<'
+            // InternalCubeDSL.g:51:7: ( '*=' )
+            // InternalCubeDSL.g:51:9: '*='
             {
-            match('<'); 
+            match("*="); 
+
 
             }
 
@@ -1020,10 +1022,11 @@
         try {
             int _type = T__54;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:52:7: ( '>' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:52:9: '>'
+            // InternalCubeDSL.g:52:7: ( '/=' )
+            // InternalCubeDSL.g:52:9: '/='
             {
-            match('>'); 
+            match("/="); 
+
 
             }
 
@@ -1040,10 +1043,10 @@
         try {
             int _type = T__55;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:53:7: ( '>=' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:53:9: '>='
+            // InternalCubeDSL.g:53:7: ( '%=' )
+            // InternalCubeDSL.g:53:9: '%='
             {
-            match(">="); 
+            match("%="); 
 
 
             }
@@ -1061,11 +1064,10 @@
         try {
             int _type = T__56;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:54:7: ( '||' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:54:9: '||'
+            // InternalCubeDSL.g:54:7: ( '<' )
+            // InternalCubeDSL.g:54:9: '<'
             {
-            match("||"); 
-
+            match('<'); 
 
             }
 
@@ -1082,11 +1084,10 @@
         try {
             int _type = T__57;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:55:7: ( '&&' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:55:9: '&&'
+            // InternalCubeDSL.g:55:7: ( '>' )
+            // InternalCubeDSL.g:55:9: '>'
             {
-            match("&&"); 
-
+            match('>'); 
 
             }
 
@@ -1103,10 +1104,10 @@
         try {
             int _type = T__58;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:56:7: ( '==' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:56:9: '=='
+            // InternalCubeDSL.g:56:7: ( '>=' )
+            // InternalCubeDSL.g:56:9: '>='
             {
-            match("=="); 
+            match(">="); 
 
 
             }
@@ -1124,10 +1125,10 @@
         try {
             int _type = T__59;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:57:7: ( '!=' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:57:9: '!='
+            // InternalCubeDSL.g:57:7: ( '||' )
+            // InternalCubeDSL.g:57:9: '||'
             {
-            match("!="); 
+            match("||"); 
 
 
             }
@@ -1145,10 +1146,10 @@
         try {
             int _type = T__60;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:58:7: ( '===' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:58:9: '==='
+            // InternalCubeDSL.g:58:7: ( '&&' )
+            // InternalCubeDSL.g:58:9: '&&'
             {
-            match("==="); 
+            match("&&"); 
 
 
             }
@@ -1166,10 +1167,10 @@
         try {
             int _type = T__61;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:59:7: ( '!==' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:59:9: '!=='
+            // InternalCubeDSL.g:59:7: ( '==' )
+            // InternalCubeDSL.g:59:9: '=='
             {
-            match("!=="); 
+            match("=="); 
 
 
             }
@@ -1187,10 +1188,10 @@
         try {
             int _type = T__62;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:60:7: ( 'instanceof' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:60:9: 'instanceof'
+            // InternalCubeDSL.g:60:7: ( '!=' )
+            // InternalCubeDSL.g:60:9: '!='
             {
-            match("instanceof"); 
+            match("!="); 
 
 
             }
@@ -1208,10 +1209,10 @@
         try {
             int _type = T__63;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:61:7: ( '->' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:61:9: '->'
+            // InternalCubeDSL.g:61:7: ( '===' )
+            // InternalCubeDSL.g:61:9: '==='
             {
-            match("->"); 
+            match("==="); 
 
 
             }
@@ -1229,10 +1230,10 @@
         try {
             int _type = T__64;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:62:7: ( '..<' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:62:9: '..<'
+            // InternalCubeDSL.g:62:7: ( '!==' )
+            // InternalCubeDSL.g:62:9: '!=='
             {
-            match("..<"); 
+            match("!=="); 
 
 
             }
@@ -1250,10 +1251,10 @@
         try {
             int _type = T__65;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:63:7: ( '..' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:63:9: '..'
+            // InternalCubeDSL.g:63:7: ( 'instanceof' )
+            // InternalCubeDSL.g:63:9: 'instanceof'
             {
-            match(".."); 
+            match("instanceof"); 
 
 
             }
@@ -1271,10 +1272,10 @@
         try {
             int _type = T__66;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:64:7: ( '=>' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:64:9: '=>'
+            // InternalCubeDSL.g:64:7: ( '->' )
+            // InternalCubeDSL.g:64:9: '->'
             {
-            match("=>"); 
+            match("->"); 
 
 
             }
@@ -1292,10 +1293,10 @@
         try {
             int _type = T__67;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:65:7: ( '<>' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:65:9: '<>'
+            // InternalCubeDSL.g:65:7: ( '..<' )
+            // InternalCubeDSL.g:65:9: '..<'
             {
-            match("<>"); 
+            match("..<"); 
 
 
             }
@@ -1313,10 +1314,10 @@
         try {
             int _type = T__68;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:66:7: ( '?:' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:66:9: '?:'
+            // InternalCubeDSL.g:66:7: ( '..' )
+            // InternalCubeDSL.g:66:9: '..'
             {
-            match("?:"); 
+            match(".."); 
 
 
             }
@@ -1334,10 +1335,11 @@
         try {
             int _type = T__69;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:67:7: ( '+' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:67:9: '+'
+            // InternalCubeDSL.g:67:7: ( '=>' )
+            // InternalCubeDSL.g:67:9: '=>'
             {
-            match('+'); 
+            match("=>"); 
+
 
             }
 
@@ -1354,10 +1356,11 @@
         try {
             int _type = T__70;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:68:7: ( '-' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:68:9: '-'
+            // InternalCubeDSL.g:68:7: ( '<>' )
+            // InternalCubeDSL.g:68:9: '<>'
             {
-            match('-'); 
+            match("<>"); 
+
 
             }
 
@@ -1374,10 +1377,10 @@
         try {
             int _type = T__71;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:69:7: ( '**' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:69:9: '**'
+            // InternalCubeDSL.g:69:7: ( '?:' )
+            // InternalCubeDSL.g:69:9: '?:'
             {
-            match("**"); 
+            match("?:"); 
 
 
             }
@@ -1395,10 +1398,10 @@
         try {
             int _type = T__72;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:70:7: ( '/' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:70:9: '/'
+            // InternalCubeDSL.g:70:7: ( '+' )
+            // InternalCubeDSL.g:70:9: '+'
             {
-            match('/'); 
+            match('+'); 
 
             }
 
@@ -1415,10 +1418,10 @@
         try {
             int _type = T__73;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:71:7: ( '%' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:71:9: '%'
+            // InternalCubeDSL.g:71:7: ( '-' )
+            // InternalCubeDSL.g:71:9: '-'
             {
-            match('%'); 
+            match('-'); 
 
             }
 
@@ -1435,10 +1438,11 @@
         try {
             int _type = T__74;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:72:7: ( '!' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:72:9: '!'
+            // InternalCubeDSL.g:72:7: ( '**' )
+            // InternalCubeDSL.g:72:9: '**'
             {
-            match('!'); 
+            match("**"); 
+
 
             }
 
@@ -1455,11 +1459,10 @@
         try {
             int _type = T__75;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:73:7: ( 'as' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:73:9: 'as'
+            // InternalCubeDSL.g:73:7: ( '/' )
+            // InternalCubeDSL.g:73:9: '/'
             {
-            match("as"); 
-
+            match('/'); 
 
             }
 
@@ -1476,11 +1479,10 @@
         try {
             int _type = T__76;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:74:7: ( '++' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:74:9: '++'
+            // InternalCubeDSL.g:74:7: ( '%' )
+            // InternalCubeDSL.g:74:9: '%'
             {
-            match("++"); 
-
+            match('%'); 
 
             }
 
@@ -1497,11 +1499,10 @@
         try {
             int _type = T__77;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:75:7: ( '--' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:75:9: '--'
+            // InternalCubeDSL.g:75:7: ( '!' )
+            // InternalCubeDSL.g:75:9: '!'
             {
-            match("--"); 
-
+            match('!'); 
 
             }
 
@@ -1518,10 +1519,10 @@
         try {
             int _type = T__78;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:76:7: ( '::' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:76:9: '::'
+            // InternalCubeDSL.g:76:7: ( 'as' )
+            // InternalCubeDSL.g:76:9: 'as'
             {
-            match("::"); 
+            match("as"); 
 
 
             }
@@ -1539,10 +1540,10 @@
         try {
             int _type = T__79;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:77:7: ( '?.' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:77:9: '?.'
+            // InternalCubeDSL.g:77:7: ( '++' )
+            // InternalCubeDSL.g:77:9: '++'
             {
-            match("?."); 
+            match("++"); 
 
 
             }
@@ -1560,10 +1561,11 @@
         try {
             int _type = T__80;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:78:7: ( '|' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:78:9: '|'
+            // InternalCubeDSL.g:78:7: ( '--' )
+            // InternalCubeDSL.g:78:9: '--'
             {
-            match('|'); 
+            match("--"); 
+
 
             }
 
@@ -1580,10 +1582,10 @@
         try {
             int _type = T__81;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:79:7: ( 'if' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:79:9: 'if'
+            // InternalCubeDSL.g:79:7: ( '::' )
+            // InternalCubeDSL.g:79:9: '::'
             {
-            match("if"); 
+            match("::"); 
 
 
             }
@@ -1601,10 +1603,10 @@
         try {
             int _type = T__82;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:80:7: ( 'else' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:80:9: 'else'
+            // InternalCubeDSL.g:80:7: ( '?.' )
+            // InternalCubeDSL.g:80:9: '?.'
             {
-            match("else"); 
+            match("?."); 
 
 
             }
@@ -1622,11 +1624,10 @@
         try {
             int _type = T__83;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:81:7: ( 'switch' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:81:9: 'switch'
+            // InternalCubeDSL.g:81:7: ( '|' )
+            // InternalCubeDSL.g:81:9: '|'
             {
-            match("switch"); 
-
+            match('|'); 
 
             }
 
@@ -1643,10 +1644,11 @@
         try {
             int _type = T__84;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:82:7: ( ':' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:82:9: ':'
+            // InternalCubeDSL.g:82:7: ( 'if' )
+            // InternalCubeDSL.g:82:9: 'if'
             {
-            match(':'); 
+            match("if"); 
+
 
             }
 
@@ -1663,10 +1665,10 @@
         try {
             int _type = T__85;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:83:7: ( 'default' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:83:9: 'default'
+            // InternalCubeDSL.g:83:7: ( 'else' )
+            // InternalCubeDSL.g:83:9: 'else'
             {
-            match("default"); 
+            match("else"); 
 
 
             }
@@ -1684,10 +1686,10 @@
         try {
             int _type = T__86;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:84:7: ( 'case' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:84:9: 'case'
+            // InternalCubeDSL.g:84:7: ( 'switch' )
+            // InternalCubeDSL.g:84:9: 'switch'
             {
-            match("case"); 
+            match("switch"); 
 
 
             }
@@ -1705,11 +1707,10 @@
         try {
             int _type = T__87;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:85:7: ( 'for' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:85:9: 'for'
+            // InternalCubeDSL.g:85:7: ( ':' )
+            // InternalCubeDSL.g:85:9: ':'
             {
-            match("for"); 
-
+            match(':'); 
 
             }
 
@@ -1726,10 +1727,10 @@
         try {
             int _type = T__88;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:86:7: ( 'while' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:86:9: 'while'
+            // InternalCubeDSL.g:86:7: ( 'default' )
+            // InternalCubeDSL.g:86:9: 'default'
             {
-            match("while"); 
+            match("default"); 
 
 
             }
@@ -1747,10 +1748,10 @@
         try {
             int _type = T__89;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:87:7: ( 'do' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:87:9: 'do'
+            // InternalCubeDSL.g:87:7: ( 'case' )
+            // InternalCubeDSL.g:87:9: 'case'
             {
-            match("do"); 
+            match("case"); 
 
 
             }
@@ -1768,10 +1769,10 @@
         try {
             int _type = T__90;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:88:7: ( 'var' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:88:9: 'var'
+            // InternalCubeDSL.g:88:7: ( 'for' )
+            // InternalCubeDSL.g:88:9: 'for'
             {
-            match("var"); 
+            match("for"); 
 
 
             }
@@ -1789,10 +1790,10 @@
         try {
             int _type = T__91;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:89:7: ( 'val' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:89:9: 'val'
+            // InternalCubeDSL.g:89:7: ( 'while' )
+            // InternalCubeDSL.g:89:9: 'while'
             {
-            match("val"); 
+            match("while"); 
 
 
             }
@@ -1810,10 +1811,10 @@
         try {
             int _type = T__92;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:90:7: ( 'extends' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:90:9: 'extends'
+            // InternalCubeDSL.g:90:7: ( 'do' )
+            // InternalCubeDSL.g:90:9: 'do'
             {
-            match("extends"); 
+            match("do"); 
 
 
             }
@@ -1831,10 +1832,10 @@
         try {
             int _type = T__93;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:91:7: ( 'static' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:91:9: 'static'
+            // InternalCubeDSL.g:91:7: ( 'var' )
+            // InternalCubeDSL.g:91:9: 'var'
             {
-            match("static"); 
+            match("var"); 
 
 
             }
@@ -1852,10 +1853,10 @@
         try {
             int _type = T__94;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:92:7: ( 'extension' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:92:9: 'extension'
+            // InternalCubeDSL.g:92:7: ( 'val' )
+            // InternalCubeDSL.g:92:9: 'val'
             {
-            match("extension"); 
+            match("val"); 
 
 
             }
@@ -1873,10 +1874,10 @@
         try {
             int _type = T__95;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:93:7: ( 'super' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:93:9: 'super'
+            // InternalCubeDSL.g:93:7: ( 'extends' )
+            // InternalCubeDSL.g:93:9: 'extends'
             {
-            match("super"); 
+            match("extends"); 
 
 
             }
@@ -1894,10 +1895,10 @@
         try {
             int _type = T__96;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:94:7: ( 'new' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:94:9: 'new'
+            // InternalCubeDSL.g:94:7: ( 'super' )
+            // InternalCubeDSL.g:94:9: 'super'
             {
-            match("new"); 
+            match("super"); 
 
 
             }
@@ -1915,10 +1916,10 @@
         try {
             int _type = T__97;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:95:7: ( 'false' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:95:9: 'false'
+            // InternalCubeDSL.g:95:7: ( 'new' )
+            // InternalCubeDSL.g:95:9: 'new'
             {
-            match("false"); 
+            match("new"); 
 
 
             }
@@ -1936,10 +1937,10 @@
         try {
             int _type = T__98;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:96:7: ( 'true' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:96:9: 'true'
+            // InternalCubeDSL.g:96:7: ( 'false' )
+            // InternalCubeDSL.g:96:9: 'false'
             {
-            match("true"); 
+            match("false"); 
 
 
             }
@@ -1957,10 +1958,10 @@
         try {
             int _type = T__99;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:97:7: ( 'null' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:97:9: 'null'
+            // InternalCubeDSL.g:97:7: ( 'true' )
+            // InternalCubeDSL.g:97:9: 'true'
             {
-            match("null"); 
+            match("true"); 
 
 
             }
@@ -1978,10 +1979,10 @@
         try {
             int _type = T__100;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:98:8: ( 'typeof' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:98:10: 'typeof'
+            // InternalCubeDSL.g:98:8: ( 'null' )
+            // InternalCubeDSL.g:98:10: 'null'
             {
-            match("typeof"); 
+            match("null"); 
 
 
             }
@@ -1999,10 +2000,10 @@
         try {
             int _type = T__101;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:99:8: ( 'throw' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:99:10: 'throw'
+            // InternalCubeDSL.g:99:8: ( 'typeof' )
+            // InternalCubeDSL.g:99:10: 'typeof'
             {
-            match("throw"); 
+            match("typeof"); 
 
 
             }
@@ -2020,10 +2021,10 @@
         try {
             int _type = T__102;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:100:8: ( 'return' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:100:10: 'return'
+            // InternalCubeDSL.g:100:8: ( 'throw' )
+            // InternalCubeDSL.g:100:10: 'throw'
             {
-            match("return"); 
+            match("throw"); 
 
 
             }
@@ -2041,10 +2042,10 @@
         try {
             int _type = T__103;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:101:8: ( 'try' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:101:10: 'try'
+            // InternalCubeDSL.g:101:8: ( 'return' )
+            // InternalCubeDSL.g:101:10: 'return'
             {
-            match("try"); 
+            match("return"); 
 
 
             }
@@ -2062,10 +2063,10 @@
         try {
             int _type = T__104;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:102:8: ( 'finally' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:102:10: 'finally'
+            // InternalCubeDSL.g:102:8: ( 'try' )
+            // InternalCubeDSL.g:102:10: 'try'
             {
-            match("finally"); 
+            match("try"); 
 
 
             }
@@ -2083,10 +2084,10 @@
         try {
             int _type = T__105;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:103:8: ( 'synchronized' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:103:10: 'synchronized'
+            // InternalCubeDSL.g:103:8: ( 'finally' )
+            // InternalCubeDSL.g:103:10: 'finally'
             {
-            match("synchronized"); 
+            match("finally"); 
 
 
             }
@@ -2104,10 +2105,10 @@
         try {
             int _type = T__106;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:104:8: ( 'catch' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:104:10: 'catch'
+            // InternalCubeDSL.g:104:8: ( 'synchronized' )
+            // InternalCubeDSL.g:104:10: 'synchronized'
             {
-            match("catch"); 
+            match("synchronized"); 
 
 
             }
@@ -2125,10 +2126,11 @@
         try {
             int _type = T__107;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:105:8: ( '?' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:105:10: '?'
+            // InternalCubeDSL.g:105:8: ( 'catch' )
+            // InternalCubeDSL.g:105:10: 'catch'
             {
-            match('?'); 
+            match("catch"); 
+
 
             }
 
@@ -2145,10 +2147,10 @@
         try {
             int _type = T__108;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:106:8: ( '&' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:106:10: '&'
+            // InternalCubeDSL.g:106:8: ( '?' )
+            // InternalCubeDSL.g:106:10: '?'
             {
-            match('&'); 
+            match('?'); 
 
             }
 
@@ -2165,11 +2167,10 @@
         try {
             int _type = T__109;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:107:8: ( 'sum' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:107:10: 'sum'
+            // InternalCubeDSL.g:107:8: ( '&' )
+            // InternalCubeDSL.g:107:10: '&'
             {
-            match("sum"); 
-
+            match('&'); 
 
             }
 
@@ -2186,10 +2187,10 @@
         try {
             int _type = T__110;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:108:8: ( 'count' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:108:10: 'count'
+            // InternalCubeDSL.g:108:8: ( 'sum' )
+            // InternalCubeDSL.g:108:10: 'sum'
             {
-            match("count"); 
+            match("sum"); 
 
 
             }
@@ -2207,10 +2208,10 @@
         try {
             int _type = T__111;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:109:8: ( 'min' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:109:10: 'min'
+            // InternalCubeDSL.g:109:8: ( 'count' )
+            // InternalCubeDSL.g:109:10: 'count'
             {
-            match("min"); 
+            match("count"); 
 
 
             }
@@ -2228,10 +2229,10 @@
         try {
             int _type = T__112;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:110:8: ( 'max' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:110:10: 'max'
+            // InternalCubeDSL.g:110:8: ( 'min' )
+            // InternalCubeDSL.g:110:10: 'min'
             {
-            match("max"); 
+            match("min"); 
 
 
             }
@@ -2249,10 +2250,10 @@
         try {
             int _type = T__113;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:111:8: ( 'avg' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:111:10: 'avg'
+            // InternalCubeDSL.g:111:8: ( 'max' )
+            // InternalCubeDSL.g:111:10: 'max'
             {
-            match("avg"); 
+            match("max"); 
 
 
             }
@@ -2270,10 +2271,10 @@
         try {
             int _type = T__114;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:112:8: ( 'distinct-count' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:112:10: 'distinct-count'
+            // InternalCubeDSL.g:112:8: ( 'avg' )
+            // InternalCubeDSL.g:112:10: 'avg'
             {
-            match("distinct-count"); 
+            match("avg"); 
 
 
             }
@@ -2291,10 +2292,10 @@
         try {
             int _type = T__115;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:113:8: ( 'String' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:113:10: 'String'
+            // InternalCubeDSL.g:113:8: ( 'distinct-count' )
+            // InternalCubeDSL.g:113:10: 'distinct-count'
             {
-            match("String"); 
+            match("distinct-count"); 
 
 
             }
@@ -2312,10 +2313,10 @@
         try {
             int _type = T__116;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:114:8: ( 'Numeric' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:114:10: 'Numeric'
+            // InternalCubeDSL.g:114:8: ( 'String' )
+            // InternalCubeDSL.g:114:10: 'String'
             {
-            match("Numeric"); 
+            match("String"); 
 
 
             }
@@ -2333,10 +2334,10 @@
         try {
             int _type = T__117;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:115:8: ( 'Integer' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:115:10: 'Integer'
+            // InternalCubeDSL.g:115:8: ( 'Numeric' )
+            // InternalCubeDSL.g:115:10: 'Numeric'
             {
-            match("Integer"); 
+            match("Numeric"); 
 
 
             }
@@ -2354,10 +2355,10 @@
         try {
             int _type = T__118;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:116:8: ( 'Boolean' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:116:10: 'Boolean'
+            // InternalCubeDSL.g:116:8: ( 'Integer' )
+            // InternalCubeDSL.g:116:10: 'Integer'
             {
-            match("Boolean"); 
+            match("Integer"); 
 
 
             }
@@ -2375,10 +2376,10 @@
         try {
             int _type = T__119;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:117:8: ( 'Date' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:117:10: 'Date'
+            // InternalCubeDSL.g:117:8: ( 'Boolean' )
+            // InternalCubeDSL.g:117:10: 'Boolean'
             {
-            match("Date"); 
+            match("Boolean"); 
 
 
             }
@@ -2396,10 +2397,10 @@
         try {
             int _type = T__120;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:118:8: ( 'Time' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:118:10: 'Time'
+            // InternalCubeDSL.g:118:8: ( 'Date' )
+            // InternalCubeDSL.g:118:10: 'Date'
             {
-            match("Time"); 
+            match("Date"); 
 
 
             }
@@ -2417,10 +2418,10 @@
         try {
             int _type = T__121;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:119:8: ( 'Timestamp' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:119:10: 'Timestamp'
+            // InternalCubeDSL.g:119:8: ( 'Time' )
+            // InternalCubeDSL.g:119:10: 'Time'
             {
-            match("Timestamp"); 
+            match("Time"); 
 
 
             }
@@ -2438,10 +2439,10 @@
         try {
             int _type = T__122;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:120:8: ( 'TimeYears' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:120:10: 'TimeYears'
+            // InternalCubeDSL.g:120:8: ( 'Timestamp' )
+            // InternalCubeDSL.g:120:10: 'Timestamp'
             {
-            match("TimeYears"); 
+            match("Timestamp"); 
 
 
             }
@@ -2459,10 +2460,10 @@
         try {
             int _type = T__123;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:121:8: ( 'TimeHalfYears' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:121:10: 'TimeHalfYears'
+            // InternalCubeDSL.g:121:8: ( 'TimeYears' )
+            // InternalCubeDSL.g:121:10: 'TimeYears'
             {
-            match("TimeHalfYears"); 
+            match("TimeYears"); 
 
 
             }
@@ -2480,10 +2481,10 @@
         try {
             int _type = T__124;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:122:8: ( 'TimeQuarters' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:122:10: 'TimeQuarters'
+            // InternalCubeDSL.g:122:8: ( 'TimeHalfYears' )
+            // InternalCubeDSL.g:122:10: 'TimeHalfYears'
             {
-            match("TimeQuarters"); 
+            match("TimeHalfYears"); 
 
 
             }
@@ -2501,10 +2502,10 @@
         try {
             int _type = T__125;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:123:8: ( 'TimeMonths' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:123:10: 'TimeMonths'
+            // InternalCubeDSL.g:123:8: ( 'TimeQuarters' )
+            // InternalCubeDSL.g:123:10: 'TimeQuarters'
             {
-            match("TimeMonths"); 
+            match("TimeQuarters"); 
 
 
             }
@@ -2522,10 +2523,10 @@
         try {
             int _type = T__126;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:124:8: ( 'TimeWeeks' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:124:10: 'TimeWeeks'
+            // InternalCubeDSL.g:124:8: ( 'TimeMonths' )
+            // InternalCubeDSL.g:124:10: 'TimeMonths'
             {
-            match("TimeWeeks"); 
+            match("TimeMonths"); 
 
 
             }
@@ -2543,10 +2544,10 @@
         try {
             int _type = T__127;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:125:8: ( 'TimeDays' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:125:10: 'TimeDays'
+            // InternalCubeDSL.g:125:8: ( 'TimeWeeks' )
+            // InternalCubeDSL.g:125:10: 'TimeWeeks'
             {
-            match("TimeDays"); 
+            match("TimeWeeks"); 
 
 
             }
@@ -2564,10 +2565,10 @@
         try {
             int _type = T__128;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:126:8: ( 'TimeHours' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:126:10: 'TimeHours'
+            // InternalCubeDSL.g:126:8: ( 'TimeDays' )
+            // InternalCubeDSL.g:126:10: 'TimeDays'
             {
-            match("TimeHours"); 
+            match("TimeDays"); 
 
 
             }
@@ -2585,10 +2586,10 @@
         try {
             int _type = T__129;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:127:8: ( 'TimeMinutes' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:127:10: 'TimeMinutes'
+            // InternalCubeDSL.g:127:8: ( 'TimeHours' )
+            // InternalCubeDSL.g:127:10: 'TimeHours'
             {
-            match("TimeMinutes"); 
+            match("TimeHours"); 
 
 
             }
@@ -2606,10 +2607,10 @@
         try {
             int _type = T__130;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:128:8: ( 'TimeSeconds' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:128:10: 'TimeSeconds'
+            // InternalCubeDSL.g:128:8: ( 'TimeMinutes' )
+            // InternalCubeDSL.g:128:10: 'TimeMinutes'
             {
-            match("TimeSeconds"); 
+            match("TimeMinutes"); 
 
 
             }
@@ -2622,15 +2623,36 @@
     }
     // $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;
+            // InternalCubeDSL.g:129:8: ( 'TimeSeconds' )
+            // InternalCubeDSL.g:129:10: 'TimeSeconds'
+            {
+            match("TimeSeconds"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__131"
+
     // $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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalCubeDSL.g:8487:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // InternalCubeDSL.g:8487:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:12: ( '0x' | '0X' )
+            // InternalCubeDSL.g:8487:12: ( '0x' | '0X' )
             int alt1=2;
             int LA1_0 = input.LA(1);
 
@@ -2658,7 +2680,7 @@
             }
             switch (alt1) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:13: '0x'
+                    // InternalCubeDSL.g:8487:13: '0x'
                     {
                     match("0x"); 
 
@@ -2666,7 +2688,7 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:18: '0X'
+                    // InternalCubeDSL.g:8487:18: '0X'
                     {
                     match("0X"); 
 
@@ -2676,7 +2698,7 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            // InternalCubeDSL.g:8487:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
             int cnt2=0;
             loop2:
             do {
@@ -2690,7 +2712,7 @@
 
                 switch (alt2) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:
+            	    // InternalCubeDSL.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();
@@ -2714,7 +2736,7 @@
                 cnt2++;
             } while (true);
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalCubeDSL.g:8487:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -2723,10 +2745,10 @@
             }
             switch (alt4) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalCubeDSL.g:8487:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     {
                     match('#'); 
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalCubeDSL.g:8487:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     int alt3=2;
                     int LA3_0 = input.LA(1);
 
@@ -2744,7 +2766,7 @@
                     }
                     switch (alt3) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            // InternalCubeDSL.g:8487:64: ( 'b' | 'B' ) ( 'i' | 'I' )
                             {
                             if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                                 input.consume();
@@ -2768,7 +2790,7 @@
                             }
                             break;
                         case 2 :
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8055:84: ( 'l' | 'L' )
+                            // InternalCubeDSL.g:8487:84: ( 'l' | 'L' )
                             {
                             if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                                 input.consume();
@@ -2807,11 +2829,11 @@
         try {
             int _type = RULE_INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8057:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8057:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            // InternalCubeDSL.g:8489:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // InternalCubeDSL.g:8489:12: '0' .. '9' ( '0' .. '9' | '_' )*
             {
             matchRange('0','9'); 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8057:21: ( '0' .. '9' | '_' )*
+            // InternalCubeDSL.g:8489:21: ( '0' .. '9' | '_' )*
             loop5:
             do {
                 int alt5=2;
@@ -2824,7 +2846,7 @@
 
                 switch (alt5) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:
+            	    // InternalCubeDSL.g:
             	    {
             	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||input.LA(1)=='_' ) {
             	        input.consume();
@@ -2860,11 +2882,11 @@
         try {
             int _type = RULE_DECIMAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8059:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8059:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalCubeDSL.g:8491:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // InternalCubeDSL.g:8491: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8059:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            // InternalCubeDSL.g:8491:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -2873,7 +2895,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8059:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    // InternalCubeDSL.g:8491:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
                     {
                     if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                         input.consume();
@@ -2884,7 +2906,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8059:36: ( '+' | '-' )?
+                    // InternalCubeDSL.g:8491:36: ( '+' | '-' )?
                     int alt6=2;
                     int LA6_0 = input.LA(1);
 
@@ -2893,7 +2915,7 @@
                     }
                     switch (alt6) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:
+                            // InternalCubeDSL.g:
                             {
                             if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
                                 input.consume();
@@ -2917,7 +2939,7 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8059:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalCubeDSL.g:8491:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             int alt8=3;
             int LA8_0 = input.LA(1);
 
@@ -2929,7 +2951,7 @@
             }
             switch (alt8) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8059:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    // InternalCubeDSL.g:8491:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
                     {
                     if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                         input.consume();
@@ -2953,7 +2975,7 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8059:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
+                    // InternalCubeDSL.g:8491: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();
@@ -2986,10 +3008,10 @@
         try {
             int _type = RULE_ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8061:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8061:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalCubeDSL.g:8493:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // InternalCubeDSL.g:8493:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8061:11: ( '^' )?
+            // InternalCubeDSL.g:8493:11: ( '^' )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -2998,7 +3020,7 @@
             }
             switch (alt9) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8061:11: '^'
+                    // InternalCubeDSL.g:8493:11: '^'
                     {
                     match('^'); 
 
@@ -3016,7 +3038,7 @@
                 recover(mse);
                 throw mse;}
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8061:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalCubeDSL.g:8493:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             loop10:
             do {
                 int alt10=2;
@@ -3029,7 +3051,7 @@
 
                 switch (alt10) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:
+            	    // InternalCubeDSL.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();
@@ -3065,10 +3087,10 @@
         try {
             int _type = RULE_STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalCubeDSL.g:8495:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // InternalCubeDSL.g:8495:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalCubeDSL.g:8495:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             int alt15=2;
             int LA15_0 = input.LA(1);
 
@@ -3086,10 +3108,10 @@
             }
             switch (alt15) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    // InternalCubeDSL.g:8495:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
                     {
                     match('\"'); 
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    // InternalCubeDSL.g:8495:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
                     loop11:
                     do {
                         int alt11=3;
@@ -3105,7 +3127,7 @@
 
                         switch (alt11) {
                     	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:21: '\\\\' .
+                    	    // InternalCubeDSL.g:8495:21: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -3113,7 +3135,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    // InternalCubeDSL.g:8495:28: ~ ( ( '\\\\' | '\"' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -3133,7 +3155,7 @@
                         }
                     } while (true);
 
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:44: ( '\"' )?
+                    // InternalCubeDSL.g:8495:44: ( '\"' )?
                     int alt12=2;
                     int LA12_0 = input.LA(1);
 
@@ -3142,7 +3164,7 @@
                     }
                     switch (alt12) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:44: '\"'
+                            // InternalCubeDSL.g:8495:44: '\"'
                             {
                             match('\"'); 
 
@@ -3155,10 +3177,10 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    // InternalCubeDSL.g:8495:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
                     {
                     match('\''); 
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    // InternalCubeDSL.g:8495:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
                     loop13:
                     do {
                         int alt13=3;
@@ -3174,7 +3196,7 @@
 
                         switch (alt13) {
                     	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:55: '\\\\' .
+                    	    // InternalCubeDSL.g:8495:55: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -3182,7 +3204,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    // InternalCubeDSL.g:8495:62: ~ ( ( '\\\\' | '\\'' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -3202,7 +3224,7 @@
                         }
                     } while (true);
 
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:79: ( '\\'' )?
+                    // InternalCubeDSL.g:8495:79: ( '\\'' )?
                     int alt14=2;
                     int LA14_0 = input.LA(1);
 
@@ -3211,7 +3233,7 @@
                     }
                     switch (alt14) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8063:79: '\\''
+                            // InternalCubeDSL.g:8495:79: '\\''
                             {
                             match('\''); 
 
@@ -3242,12 +3264,12 @@
         try {
             int _type = RULE_ML_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8065:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8065:19: '/*' ( options {greedy=false; } : . )* '*/'
+            // InternalCubeDSL.g:8497:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalCubeDSL.g:8497:19: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8065:24: ( options {greedy=false; } : . )*
+            // InternalCubeDSL.g:8497:24: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -3272,7 +3294,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8065:52: .
+            	    // InternalCubeDSL.g:8497:52: .
             	    {
             	    matchAny(); 
 
@@ -3302,12 +3324,12 @@
         try {
             int _type = RULE_SL_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8067:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8067:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            // InternalCubeDSL.g:8499:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalCubeDSL.g:8499:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
             {
             match("//"); 
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8067:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            // InternalCubeDSL.g:8499:24: (~ ( ( '\\n' | '\\r' ) ) )*
             loop17:
             do {
                 int alt17=2;
@@ -3320,7 +3342,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8067:24: ~ ( ( '\\n' | '\\r' ) )
+            	    // InternalCubeDSL.g:8499: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();
@@ -3340,7 +3362,7 @@
                 }
             } while (true);
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8067:40: ( ( '\\r' )? '\\n' )?
+            // InternalCubeDSL.g:8499:40: ( ( '\\r' )? '\\n' )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -3349,9 +3371,9 @@
             }
             switch (alt19) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8067:41: ( '\\r' )? '\\n'
+                    // InternalCubeDSL.g:8499:41: ( '\\r' )? '\\n'
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8067:41: ( '\\r' )?
+                    // InternalCubeDSL.g:8499:41: ( '\\r' )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -3360,7 +3382,7 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8067:41: '\\r'
+                            // InternalCubeDSL.g:8499:41: '\\r'
                             {
                             match('\r'); 
 
@@ -3392,10 +3414,10 @@
         try {
             int _type = RULE_WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8069:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8069:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalCubeDSL.g:8501:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalCubeDSL.g:8501:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8069:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalCubeDSL.g:8501:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             int cnt20=0;
             loop20:
             do {
@@ -3409,7 +3431,7 @@
 
                 switch (alt20) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:
+            	    // InternalCubeDSL.g:
             	    {
             	    if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
             	        input.consume();
@@ -3449,8 +3471,8 @@
         try {
             int _type = RULE_ANY_OTHER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8071:16: ( . )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:8071:18: .
+            // InternalCubeDSL.g:8503:16: ( . )
+            // InternalCubeDSL.g:8503:18: .
             {
             matchAny(); 
 
@@ -3465,894 +3487,901 @@
     // $ANTLR end "RULE_ANY_OTHER"
 
     public void mTokens() throws RecognitionException {
-        // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.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;
+        // InternalCubeDSL.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 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=128;
         alt21 = dfa21.predict(input);
         switch (alt21) {
             case 1 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:10: T__13
+                // InternalCubeDSL.g:1:10: T__13
                 {
                 mT__13(); 
 
                 }
                 break;
             case 2 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:16: T__14
+                // InternalCubeDSL.g:1:16: T__14
                 {
                 mT__14(); 
 
                 }
                 break;
             case 3 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:22: T__15
+                // InternalCubeDSL.g:1:22: T__15
                 {
                 mT__15(); 
 
                 }
                 break;
             case 4 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:28: T__16
+                // InternalCubeDSL.g:1:28: T__16
                 {
                 mT__16(); 
 
                 }
                 break;
             case 5 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:34: T__17
+                // InternalCubeDSL.g:1:34: T__17
                 {
                 mT__17(); 
 
                 }
                 break;
             case 6 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:40: T__18
+                // InternalCubeDSL.g:1:40: T__18
                 {
                 mT__18(); 
 
                 }
                 break;
             case 7 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:46: T__19
+                // InternalCubeDSL.g:1:46: T__19
                 {
                 mT__19(); 
 
                 }
                 break;
             case 8 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:52: T__20
+                // InternalCubeDSL.g:1:52: T__20
                 {
                 mT__20(); 
 
                 }
                 break;
             case 9 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:58: T__21
+                // InternalCubeDSL.g:1:58: T__21
                 {
                 mT__21(); 
 
                 }
                 break;
             case 10 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:64: T__22
+                // InternalCubeDSL.g:1:64: T__22
                 {
                 mT__22(); 
 
                 }
                 break;
             case 11 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:70: T__23
+                // InternalCubeDSL.g:1:70: T__23
                 {
                 mT__23(); 
 
                 }
                 break;
             case 12 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:76: T__24
+                // InternalCubeDSL.g:1:76: T__24
                 {
                 mT__24(); 
 
                 }
                 break;
             case 13 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:82: T__25
+                // InternalCubeDSL.g:1:82: T__25
                 {
                 mT__25(); 
 
                 }
                 break;
             case 14 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:88: T__26
+                // InternalCubeDSL.g:1:88: T__26
                 {
                 mT__26(); 
 
                 }
                 break;
             case 15 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:94: T__27
+                // InternalCubeDSL.g:1:94: T__27
                 {
                 mT__27(); 
 
                 }
                 break;
             case 16 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:100: T__28
+                // InternalCubeDSL.g:1:100: T__28
                 {
                 mT__28(); 
 
                 }
                 break;
             case 17 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:106: T__29
+                // InternalCubeDSL.g:1:106: T__29
                 {
                 mT__29(); 
 
                 }
                 break;
             case 18 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:112: T__30
+                // InternalCubeDSL.g:1:112: T__30
                 {
                 mT__30(); 
 
                 }
                 break;
             case 19 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:118: T__31
+                // InternalCubeDSL.g:1:118: T__31
                 {
                 mT__31(); 
 
                 }
                 break;
             case 20 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:124: T__32
+                // InternalCubeDSL.g:1:124: T__32
                 {
                 mT__32(); 
 
                 }
                 break;
             case 21 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:130: T__33
+                // InternalCubeDSL.g:1:130: T__33
                 {
                 mT__33(); 
 
                 }
                 break;
             case 22 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:136: T__34
+                // InternalCubeDSL.g:1:136: T__34
                 {
                 mT__34(); 
 
                 }
                 break;
             case 23 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:142: T__35
+                // InternalCubeDSL.g:1:142: T__35
                 {
                 mT__35(); 
 
                 }
                 break;
             case 24 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:148: T__36
+                // InternalCubeDSL.g:1:148: T__36
                 {
                 mT__36(); 
 
                 }
                 break;
             case 25 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:154: T__37
+                // InternalCubeDSL.g:1:154: T__37
                 {
                 mT__37(); 
 
                 }
                 break;
             case 26 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:160: T__38
+                // InternalCubeDSL.g:1:160: T__38
                 {
                 mT__38(); 
 
                 }
                 break;
             case 27 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:166: T__39
+                // InternalCubeDSL.g:1:166: T__39
                 {
                 mT__39(); 
 
                 }
                 break;
             case 28 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:172: T__40
+                // InternalCubeDSL.g:1:172: T__40
                 {
                 mT__40(); 
 
                 }
                 break;
             case 29 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:178: T__41
+                // InternalCubeDSL.g:1:178: T__41
                 {
                 mT__41(); 
 
                 }
                 break;
             case 30 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:184: T__42
+                // InternalCubeDSL.g:1:184: T__42
                 {
                 mT__42(); 
 
                 }
                 break;
             case 31 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:190: T__43
+                // InternalCubeDSL.g:1:190: T__43
                 {
                 mT__43(); 
 
                 }
                 break;
             case 32 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:196: T__44
+                // InternalCubeDSL.g:1:196: T__44
                 {
                 mT__44(); 
 
                 }
                 break;
             case 33 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:202: T__45
+                // InternalCubeDSL.g:1:202: T__45
                 {
                 mT__45(); 
 
                 }
                 break;
             case 34 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:208: T__46
+                // InternalCubeDSL.g:1:208: T__46
                 {
                 mT__46(); 
 
                 }
                 break;
             case 35 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:214: T__47
+                // InternalCubeDSL.g:1:214: T__47
                 {
                 mT__47(); 
 
                 }
                 break;
             case 36 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:220: T__48
+                // InternalCubeDSL.g:1:220: T__48
                 {
                 mT__48(); 
 
                 }
                 break;
             case 37 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:226: T__49
+                // InternalCubeDSL.g:1:226: T__49
                 {
                 mT__49(); 
 
                 }
                 break;
             case 38 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:232: T__50
+                // InternalCubeDSL.g:1:232: T__50
                 {
                 mT__50(); 
 
                 }
                 break;
             case 39 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:238: T__51
+                // InternalCubeDSL.g:1:238: T__51
                 {
                 mT__51(); 
 
                 }
                 break;
             case 40 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:244: T__52
+                // InternalCubeDSL.g:1:244: T__52
                 {
                 mT__52(); 
 
                 }
                 break;
             case 41 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:250: T__53
+                // InternalCubeDSL.g:1:250: T__53
                 {
                 mT__53(); 
 
                 }
                 break;
             case 42 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:256: T__54
+                // InternalCubeDSL.g:1:256: T__54
                 {
                 mT__54(); 
 
                 }
                 break;
             case 43 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:262: T__55
+                // InternalCubeDSL.g:1:262: T__55
                 {
                 mT__55(); 
 
                 }
                 break;
             case 44 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:268: T__56
+                // InternalCubeDSL.g:1:268: T__56
                 {
                 mT__56(); 
 
                 }
                 break;
             case 45 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:274: T__57
+                // InternalCubeDSL.g:1:274: T__57
                 {
                 mT__57(); 
 
                 }
                 break;
             case 46 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:280: T__58
+                // InternalCubeDSL.g:1:280: T__58
                 {
                 mT__58(); 
 
                 }
                 break;
             case 47 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:286: T__59
+                // InternalCubeDSL.g:1:286: T__59
                 {
                 mT__59(); 
 
                 }
                 break;
             case 48 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:292: T__60
+                // InternalCubeDSL.g:1:292: T__60
                 {
                 mT__60(); 
 
                 }
                 break;
             case 49 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:298: T__61
+                // InternalCubeDSL.g:1:298: T__61
                 {
                 mT__61(); 
 
                 }
                 break;
             case 50 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:304: T__62
+                // InternalCubeDSL.g:1:304: T__62
                 {
                 mT__62(); 
 
                 }
                 break;
             case 51 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:310: T__63
+                // InternalCubeDSL.g:1:310: T__63
                 {
                 mT__63(); 
 
                 }
                 break;
             case 52 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:316: T__64
+                // InternalCubeDSL.g:1:316: T__64
                 {
                 mT__64(); 
 
                 }
                 break;
             case 53 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:322: T__65
+                // InternalCubeDSL.g:1:322: T__65
                 {
                 mT__65(); 
 
                 }
                 break;
             case 54 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:328: T__66
+                // InternalCubeDSL.g:1:328: T__66
                 {
                 mT__66(); 
 
                 }
                 break;
             case 55 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:334: T__67
+                // InternalCubeDSL.g:1:334: T__67
                 {
                 mT__67(); 
 
                 }
                 break;
             case 56 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:340: T__68
+                // InternalCubeDSL.g:1:340: T__68
                 {
                 mT__68(); 
 
                 }
                 break;
             case 57 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:346: T__69
+                // InternalCubeDSL.g:1:346: T__69
                 {
                 mT__69(); 
 
                 }
                 break;
             case 58 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:352: T__70
+                // InternalCubeDSL.g:1:352: T__70
                 {
                 mT__70(); 
 
                 }
                 break;
             case 59 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:358: T__71
+                // InternalCubeDSL.g:1:358: T__71
                 {
                 mT__71(); 
 
                 }
                 break;
             case 60 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:364: T__72
+                // InternalCubeDSL.g:1:364: T__72
                 {
                 mT__72(); 
 
                 }
                 break;
             case 61 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:370: T__73
+                // InternalCubeDSL.g:1:370: T__73
                 {
                 mT__73(); 
 
                 }
                 break;
             case 62 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:376: T__74
+                // InternalCubeDSL.g:1:376: T__74
                 {
                 mT__74(); 
 
                 }
                 break;
             case 63 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:382: T__75
+                // InternalCubeDSL.g:1:382: T__75
                 {
                 mT__75(); 
 
                 }
                 break;
             case 64 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:388: T__76
+                // InternalCubeDSL.g:1:388: T__76
                 {
                 mT__76(); 
 
                 }
                 break;
             case 65 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:394: T__77
+                // InternalCubeDSL.g:1:394: T__77
                 {
                 mT__77(); 
 
                 }
                 break;
             case 66 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:400: T__78
+                // InternalCubeDSL.g:1:400: T__78
                 {
                 mT__78(); 
 
                 }
                 break;
             case 67 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:406: T__79
+                // InternalCubeDSL.g:1:406: T__79
                 {
                 mT__79(); 
 
                 }
                 break;
             case 68 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:412: T__80
+                // InternalCubeDSL.g:1:412: T__80
                 {
                 mT__80(); 
 
                 }
                 break;
             case 69 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:418: T__81
+                // InternalCubeDSL.g:1:418: T__81
                 {
                 mT__81(); 
 
                 }
                 break;
             case 70 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:424: T__82
+                // InternalCubeDSL.g:1:424: T__82
                 {
                 mT__82(); 
 
                 }
                 break;
             case 71 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:430: T__83
+                // InternalCubeDSL.g:1:430: T__83
                 {
                 mT__83(); 
 
                 }
                 break;
             case 72 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:436: T__84
+                // InternalCubeDSL.g:1:436: T__84
                 {
                 mT__84(); 
 
                 }
                 break;
             case 73 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:442: T__85
+                // InternalCubeDSL.g:1:442: T__85
                 {
                 mT__85(); 
 
                 }
                 break;
             case 74 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:448: T__86
+                // InternalCubeDSL.g:1:448: T__86
                 {
                 mT__86(); 
 
                 }
                 break;
             case 75 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:454: T__87
+                // InternalCubeDSL.g:1:454: T__87
                 {
                 mT__87(); 
 
                 }
                 break;
             case 76 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:460: T__88
+                // InternalCubeDSL.g:1:460: T__88
                 {
                 mT__88(); 
 
                 }
                 break;
             case 77 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:466: T__89
+                // InternalCubeDSL.g:1:466: T__89
                 {
                 mT__89(); 
 
                 }
                 break;
             case 78 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:472: T__90
+                // InternalCubeDSL.g:1:472: T__90
                 {
                 mT__90(); 
 
                 }
                 break;
             case 79 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:478: T__91
+                // InternalCubeDSL.g:1:478: T__91
                 {
                 mT__91(); 
 
                 }
                 break;
             case 80 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:484: T__92
+                // InternalCubeDSL.g:1:484: T__92
                 {
                 mT__92(); 
 
                 }
                 break;
             case 81 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:490: T__93
+                // InternalCubeDSL.g:1:490: T__93
                 {
                 mT__93(); 
 
                 }
                 break;
             case 82 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:496: T__94
+                // InternalCubeDSL.g:1:496: T__94
                 {
                 mT__94(); 
 
                 }
                 break;
             case 83 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:502: T__95
+                // InternalCubeDSL.g:1:502: T__95
                 {
                 mT__95(); 
 
                 }
                 break;
             case 84 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:508: T__96
+                // InternalCubeDSL.g:1:508: T__96
                 {
                 mT__96(); 
 
                 }
                 break;
             case 85 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:514: T__97
+                // InternalCubeDSL.g:1:514: T__97
                 {
                 mT__97(); 
 
                 }
                 break;
             case 86 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:520: T__98
+                // InternalCubeDSL.g:1:520: T__98
                 {
                 mT__98(); 
 
                 }
                 break;
             case 87 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:526: T__99
+                // InternalCubeDSL.g:1:526: T__99
                 {
                 mT__99(); 
 
                 }
                 break;
             case 88 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:532: T__100
+                // InternalCubeDSL.g:1:532: T__100
                 {
                 mT__100(); 
 
                 }
                 break;
             case 89 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:539: T__101
+                // InternalCubeDSL.g:1:539: T__101
                 {
                 mT__101(); 
 
                 }
                 break;
             case 90 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:546: T__102
+                // InternalCubeDSL.g:1:546: T__102
                 {
                 mT__102(); 
 
                 }
                 break;
             case 91 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:553: T__103
+                // InternalCubeDSL.g:1:553: T__103
                 {
                 mT__103(); 
 
                 }
                 break;
             case 92 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:560: T__104
+                // InternalCubeDSL.g:1:560: T__104
                 {
                 mT__104(); 
 
                 }
                 break;
             case 93 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:567: T__105
+                // InternalCubeDSL.g:1:567: T__105
                 {
                 mT__105(); 
 
                 }
                 break;
             case 94 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:574: T__106
+                // InternalCubeDSL.g:1:574: T__106
                 {
                 mT__106(); 
 
                 }
                 break;
             case 95 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:581: T__107
+                // InternalCubeDSL.g:1:581: T__107
                 {
                 mT__107(); 
 
                 }
                 break;
             case 96 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:588: T__108
+                // InternalCubeDSL.g:1:588: T__108
                 {
                 mT__108(); 
 
                 }
                 break;
             case 97 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:595: T__109
+                // InternalCubeDSL.g:1:595: T__109
                 {
                 mT__109(); 
 
                 }
                 break;
             case 98 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:602: T__110
+                // InternalCubeDSL.g:1:602: T__110
                 {
                 mT__110(); 
 
                 }
                 break;
             case 99 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:609: T__111
+                // InternalCubeDSL.g:1:609: T__111
                 {
                 mT__111(); 
 
                 }
                 break;
             case 100 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:616: T__112
+                // InternalCubeDSL.g:1:616: T__112
                 {
                 mT__112(); 
 
                 }
                 break;
             case 101 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:623: T__113
+                // InternalCubeDSL.g:1:623: T__113
                 {
                 mT__113(); 
 
                 }
                 break;
             case 102 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:630: T__114
+                // InternalCubeDSL.g:1:630: T__114
                 {
                 mT__114(); 
 
                 }
                 break;
             case 103 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:637: T__115
+                // InternalCubeDSL.g:1:637: T__115
                 {
                 mT__115(); 
 
                 }
                 break;
             case 104 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:644: T__116
+                // InternalCubeDSL.g:1:644: T__116
                 {
                 mT__116(); 
 
                 }
                 break;
             case 105 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:651: T__117
+                // InternalCubeDSL.g:1:651: T__117
                 {
                 mT__117(); 
 
                 }
                 break;
             case 106 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:658: T__118
+                // InternalCubeDSL.g:1:658: T__118
                 {
                 mT__118(); 
 
                 }
                 break;
             case 107 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:665: T__119
+                // InternalCubeDSL.g:1:665: T__119
                 {
                 mT__119(); 
 
                 }
                 break;
             case 108 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:672: T__120
+                // InternalCubeDSL.g:1:672: T__120
                 {
                 mT__120(); 
 
                 }
                 break;
             case 109 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:679: T__121
+                // InternalCubeDSL.g:1:679: T__121
                 {
                 mT__121(); 
 
                 }
                 break;
             case 110 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:686: T__122
+                // InternalCubeDSL.g:1:686: T__122
                 {
                 mT__122(); 
 
                 }
                 break;
             case 111 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:693: T__123
+                // InternalCubeDSL.g:1:693: T__123
                 {
                 mT__123(); 
 
                 }
                 break;
             case 112 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:700: T__124
+                // InternalCubeDSL.g:1:700: T__124
                 {
                 mT__124(); 
 
                 }
                 break;
             case 113 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:707: T__125
+                // InternalCubeDSL.g:1:707: T__125
                 {
                 mT__125(); 
 
                 }
                 break;
             case 114 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:714: T__126
+                // InternalCubeDSL.g:1:714: T__126
                 {
                 mT__126(); 
 
                 }
                 break;
             case 115 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:721: T__127
+                // InternalCubeDSL.g:1:721: T__127
                 {
                 mT__127(); 
 
                 }
                 break;
             case 116 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:728: T__128
+                // InternalCubeDSL.g:1:728: T__128
                 {
                 mT__128(); 
 
                 }
                 break;
             case 117 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:735: T__129
+                // InternalCubeDSL.g:1:735: T__129
                 {
                 mT__129(); 
 
                 }
                 break;
             case 118 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:742: T__130
+                // InternalCubeDSL.g:1:742: T__130
                 {
                 mT__130(); 
 
                 }
                 break;
             case 119 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:749: RULE_HEX
+                // InternalCubeDSL.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // InternalCubeDSL.g:1:756: RULE_HEX
                 {
                 mRULE_HEX(); 
 
                 }
                 break;
-            case 120 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:758: RULE_INT
+            case 121 :
+                // InternalCubeDSL.g:1:765: RULE_INT
                 {
                 mRULE_INT(); 
 
                 }
                 break;
-            case 121 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:767: RULE_DECIMAL
+            case 122 :
+                // InternalCubeDSL.g:1:774: RULE_DECIMAL
                 {
                 mRULE_DECIMAL(); 
 
                 }
                 break;
-            case 122 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:780: RULE_ID
+            case 123 :
+                // InternalCubeDSL.g:1:787: RULE_ID
                 {
                 mRULE_ID(); 
 
                 }
                 break;
-            case 123 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:788: RULE_STRING
+            case 124 :
+                // InternalCubeDSL.g:1:795: RULE_STRING
                 {
                 mRULE_STRING(); 
 
                 }
                 break;
-            case 124 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:800: RULE_ML_COMMENT
+            case 125 :
+                // InternalCubeDSL.g:1:807: RULE_ML_COMMENT
                 {
                 mRULE_ML_COMMENT(); 
 
                 }
                 break;
-            case 125 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:816: RULE_SL_COMMENT
+            case 126 :
+                // InternalCubeDSL.g:1:823: RULE_SL_COMMENT
                 {
                 mRULE_SL_COMMENT(); 
 
                 }
                 break;
-            case 126 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:832: RULE_WS
+            case 127 :
+                // InternalCubeDSL.g:1:839: RULE_WS
                 {
                 mRULE_WS(); 
 
                 }
                 break;
-            case 127 :
-                // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1:840: RULE_ANY_OTHER
+            case 128 :
+                // InternalCubeDSL.g:1:847: RULE_ANY_OTHER
                 {
                 mRULE_ANY_OTHER(); 
 
@@ -4366,60 +4395,59 @@
 
     protected DFA21 dfa21 = new DFA21(this);
     static final String DFA21_eotS =
-        "\1\uffff\1\74\2\uffff\3\74\1\uffff\12\74\1\137\1\142\4\uffff\1\151\3\uffff\1\157\1\163\1\167\1\171\1\173\1\175\1\177\1\u0081\1\u0083\1\u0086\1\u0088\13\74\2\u009b\1\71\5\uffff\2\74\3\uffff\5\74\1\u00a9\1\74\1\uffff\6\74\1\u00b2\17\74\1\u00c2\1\u00c4\10\uffff\1\u00c6\32\uffff\1\u00c8\6\uffff\20\74\1\uffff\1\u009b\4\uffff\12\74\1\uffff\3\74\1\u00e8\4\74\1\uffff\1\u00ed\7\74\1\u00f5\1\u00f6\1\74\1\u00f8\3\74\7\uffff\3\74\1\u00ff\1\74\1\u0101\3\74\1\u0105\1\u0106\11\74\1\u0110\2\74\1\u0113\4\74\1\u0118\1\74\1\u011c\1\uffff\4\74\1\uffff\1\74\1\u0122\1\74\1\uffff\3\74\2\uffff\1\74\1\uffff\1\u0128\5\74\1\uffff\1\74\1\uffff\3\74\2\uffff\5\74\1\u0137\1\u0140\2\74\1\uffff\1\74\1\u0144\1\uffff\1\u0145\3\74\1\uffff\1\74\1\uffff\1\74\1\uffff\1\u014b\4\74\1\uffff\1\74\1\u0153\3\74\1\uffff\4\74\1\u015b\1\74\1\u015d\1\74\1\u015f\5\74\1\uffff\10\74\1\uffff\3\74\2\uffff\4\74\1\u0176\1\uffff\1\74\1\u0178\1\74\1\u017a\3\74\1\uffff\3\74\1\u0181\1\74\1\u0183\1\u0184\1\uffff\1\74\1\uffff\1\74\1\uffff\1\u0187\1\u0188\15\74\1\u0196\1\74\1\uffff\1\u0199\3\74\1\uffff\1\74\1\uffff\1\74\1\uffff\1\u019f\3\74\1\u01a3\1\74\1\uffff\1\74\2\uffff\1\74\1\u01a7\2\uffff\1\u01a8\1\u01a9\1\u01aa\12\74\1\uffff\1\u01b5\1\74\1\uffff\2\74\1\u01b9\2\74\1\uffff\3\74\1\uffff\3\74\4\uffff\10\74\1\u01ca\1\74\1\uffff\1\74\1\u01cf\2\uffff\1\u01d0\1\74\1\u01d2\5\74\1\u01d8\1\u01d9\1\74\1\u01db\3\74\1\u01df\1\uffff\4\74\2\uffff\1\74\2\uffff\1\74\1\u01e6\1\u01e7\1\74\2\uffff\1\74\1\uffff\1\74\1\u01eb\1\74\1\uffff\6\74\2\uffff\3\74\1\uffff\1\u01f6\1\u01f7\5\74\1\u01fd\1\74\1\u01ff\2\uffff\4\74\1\u0204\1\uffff\1\u0205\1\uffff\1\u0206\1\uffff\1\u0207\5\uffff";
+        "\1\uffff\1\74\2\uffff\14\74\1\134\2\74\1\146\5\uffff\1\156\3\uffff\1\164\1\170\1\174\1\176\1\u0080\1\u0082\1\u0084\1\u0086\1\u0088\1\u008b\1\u008d\12\74\2\u009c\1\71\5\uffff\2\74\3\uffff\5\74\1\u00aa\7\74\1\u00b3\13\74\1\u00bf\2\74\1\u00c3\1\uffff\2\74\1\u00c6\4\74\10\uffff\1\u00cd\32\uffff\1\u00cf\6\uffff\14\74\1\uffff\1\u009c\4\uffff\12\74\1\uffff\3\74\1\u00ea\4\74\1\uffff\1\u00ef\3\74\1\u00f3\3\74\1\u00f7\1\u00f8\1\74\1\uffff\1\u00fa\1\74\2\uffff\2\74\1\uffff\3\74\1\u0101\1\74\4\uffff\1\u0103\3\74\1\u0107\1\u0108\11\74\1\u0112\2\74\1\u0115\4\74\1\u011a\1\u011d\1\u011e\1\uffff\4\74\1\uffff\2\74\1\u0125\1\uffff\3\74\2\uffff\1\74\1\uffff\1\u012a\5\74\1\uffff\1\74\1\uffff\3\74\2\uffff\5\74\1\u0139\1\u0142\2\74\1\uffff\1\74\1\u0146\1\uffff\1\u0147\3\74\1\uffff\2\74\2\uffff\1\u014d\5\74\1\uffff\1\u0155\3\74\1\uffff\4\74\1\u015d\1\74\1\u015f\1\74\1\u0161\5\74\1\uffff\10\74\1\uffff\2\74\1\u0173\2\uffff\4\74\1\u0178\1\uffff\1\74\1\u017a\1\74\1\u017c\3\74\1\uffff\3\74\1\u0183\1\74\1\u0185\1\u0186\1\uffff\1\74\1\uffff\1\74\1\uffff\1\u0189\1\u018a\15\74\1\u0198\1\74\1\uffff\1\u019b\3\74\1\uffff\1\74\1\uffff\1\74\1\uffff\1\74\1\u01a2\2\74\1\u01a5\1\74\1\uffff\1\74\2\uffff\1\74\1\u01a9\2\uffff\1\u01aa\1\u01ab\1\u01ac\12\74\1\uffff\1\u01b7\1\74\1\uffff\2\74\1\u01bb\3\74\1\uffff\2\74\1\uffff\3\74\4\uffff\10\74\1\u01cc\1\74\1\uffff\1\74\1\u01d1\2\uffff\1\u01d2\1\74\1\u01d4\1\u01d5\4\74\1\u01da\1\u01db\1\74\1\u01dd\3\74\1\u01e1\1\uffff\4\74\2\uffff\1\74\2\uffff\1\74\1\u01e8\1\u01e9\1\74\2\uffff\1\74\1\uffff\1\74\1\u01ed\1\74\1\uffff\6\74\2\uffff\3\74\1\uffff\1\u01f8\1\u01f9\5\74\1\u01ff\1\74\1\u0201\2\uffff\1\74\1\u0203\1\74\1\u0205\1\u0206\1\uffff\1\u0207\1\uffff\1\u0208\1\uffff\1\u0209\5\uffff";
     static final String DFA21_eofS =
-        "\u0208\uffff";
+        "\u020a\uffff";
     static final String DFA21_minS =
-        "\1\0\1\141\2\uffff\1\141\1\145\1\166\1\uffff\1\150\1\141\2\154\2\145\1\156\1\141\1\145\1\146\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\72\1\164\1\141\1\150\1\141\1\145\1\164\1\165\1\156\1\157\1\141\1\151\2\60\1\44\5\uffff\1\143\1\157\3\uffff\1\142\1\154\1\163\1\146\1\155\1\44\1\145\1\uffff\1\160\1\165\1\162\1\145\1\163\1\154\1\44\1\147\1\164\1\163\1\164\1\171\1\166\1\151\1\141\1\156\1\170\1\164\1\167\1\154\1\160\1\163\1\44\1\74\10\uffff\1\75\32\uffff\1\75\6\uffff\1\151\1\141\1\155\1\156\1\162\1\154\1\156\1\151\1\154\1\164\1\162\1\155\1\164\1\157\1\164\1\155\1\uffff\1\60\4\uffff\1\153\1\160\1\145\1\165\1\156\1\145\1\143\1\141\1\145\1\164\1\uffff\1\162\2\145\1\44\1\157\1\162\1\101\1\115\1\uffff\1\44\1\151\2\145\1\75\1\145\1\161\1\163\2\44\1\126\1\44\1\154\1\157\1\164\7\uffff\2\164\1\145\1\44\1\143\1\44\1\163\1\141\1\154\2\44\1\165\1\151\2\145\1\154\2\145\1\141\1\145\1\44\1\155\1\164\1\44\1\150\1\165\1\156\1\151\1\44\1\75\1\44\1\uffff\1\167\1\141\1\154\1\145\1\uffff\1\164\1\44\1\156\1\uffff\1\154\2\165\2\uffff\1\151\1\uffff\1\44\1\162\1\141\1\143\1\151\1\162\1\uffff\1\150\1\uffff\1\145\1\154\1\145\2\uffff\1\162\1\156\1\162\1\147\1\145\2\44\1\147\1\162\1\uffff\1\156\1\44\1\uffff\1\44\1\154\1\163\1\156\1\uffff\1\151\1\uffff\1\146\1\uffff\1\44\1\162\1\154\1\155\1\171\1\uffff\1\144\1\44\1\145\1\162\1\163\1\uffff\1\164\1\156\1\150\1\143\1\44\1\162\1\44\1\154\1\44\1\156\1\147\1\151\1\145\1\141\1\uffff\1\164\1\145\1\141\1\165\1\151\1\145\1\141\1\145\1\uffff\1\145\1\164\1\75\2\uffff\1\164\1\151\1\143\1\155\1\44\1\uffff\1\143\1\44\1\142\1\44\1\163\1\151\1\171\1\uffff\1\115\1\145\1\151\1\44\1\143\2\44\1\uffff\1\157\1\uffff\1\171\1\uffff\2\44\1\143\1\162\1\156\2\141\1\154\1\165\1\141\2\156\1\145\1\171\1\143\1\44\1\171\1\uffff\1\44\1\157\1\164\1\145\1\uffff\1\150\1\uffff\1\145\1\uffff\1\44\1\157\1\160\1\145\1\44\1\142\1\uffff\1\145\2\uffff\1\156\1\44\2\uffff\3\44\1\155\1\162\1\146\2\162\1\164\1\165\1\153\1\163\1\157\1\uffff\1\44\1\145\1\uffff\1\156\1\55\1\44\1\171\1\162\1\uffff\1\156\1\145\1\155\1\uffff\1\154\1\157\1\151\4\uffff\1\160\1\163\1\131\1\163\1\164\1\150\1\164\1\163\1\44\1\156\1\uffff\1\141\1\44\2\uffff\1\44\1\116\1\44\1\75\1\142\1\145\1\146\1\172\2\44\1\145\1\44\1\145\1\163\1\145\1\44\1\uffff\1\144\1\163\1\142\1\163\2\uffff\1\141\2\uffff\1\145\2\44\1\145\2\uffff\1\141\1\uffff\1\162\1\44\1\163\1\uffff\1\163\1\165\1\145\1\141\1\155\1\162\2\uffff\1\144\1\162\1\163\1\uffff\2\44\2\162\1\147\1\145\1\163\1\44\1\163\1\44\2\uffff\1\145\1\75\1\145\1\75\1\44\1\uffff\1\44\1\uffff\1\44\1\uffff\1\44\5\uffff";
+        "\1\0\1\141\2\uffff\1\141\1\145\1\166\1\150\1\141\2\154\2\145\1\156\1\141\1\145\1\56\1\146\1\164\1\52\5\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\72\1\141\1\150\1\141\1\145\1\164\1\165\1\156\1\157\1\141\1\151\2\60\1\44\5\uffff\1\143\1\157\3\uffff\1\142\1\154\1\163\1\146\1\155\1\44\1\145\1\160\1\165\1\162\1\145\1\163\1\154\1\44\1\147\2\164\1\163\1\171\1\166\1\151\1\141\1\156\1\170\1\164\1\44\1\167\1\154\1\74\1\uffff\1\160\1\163\1\44\1\141\1\151\1\155\1\156\10\uffff\1\75\32\uffff\1\75\6\uffff\1\162\1\154\1\156\1\151\1\154\1\164\1\162\1\155\1\164\1\157\1\164\1\155\1\uffff\1\60\4\uffff\1\153\1\160\1\145\1\165\1\156\1\145\1\143\1\141\1\145\1\164\1\uffff\1\162\2\145\1\44\1\157\1\162\1\101\1\115\1\uffff\1\44\1\151\2\145\1\44\1\145\1\161\1\163\2\44\1\126\1\uffff\1\44\1\154\2\uffff\1\157\1\164\1\uffff\2\164\1\145\1\44\1\143\4\uffff\1\44\1\163\1\141\1\154\2\44\1\165\1\151\2\145\1\154\2\145\1\141\1\145\1\44\1\155\1\164\1\44\1\150\1\165\1\156\1\151\3\44\1\uffff\1\167\1\141\1\154\1\145\1\uffff\1\164\1\156\1\44\1\uffff\1\154\2\165\2\uffff\1\151\1\uffff\1\44\1\162\1\141\1\151\1\143\1\162\1\uffff\1\150\1\uffff\1\145\1\154\1\145\2\uffff\1\162\1\156\1\162\1\147\1\145\2\44\1\147\1\162\1\uffff\1\156\1\44\1\uffff\1\44\1\154\1\163\1\156\1\uffff\1\151\1\146\2\uffff\1\44\1\162\1\154\1\155\1\171\1\144\1\uffff\1\44\1\145\1\162\1\163\1\uffff\1\164\1\156\1\143\1\150\1\44\1\162\1\44\1\154\1\44\1\156\1\147\1\151\1\145\1\141\1\uffff\1\164\1\145\1\141\1\165\1\151\1\145\1\141\1\145\1\uffff\1\145\1\164\1\44\2\uffff\1\164\1\151\1\143\1\155\1\44\1\uffff\1\143\1\44\1\142\1\44\1\151\1\163\1\171\1\uffff\1\115\1\145\1\151\1\44\1\143\2\44\1\uffff\1\157\1\uffff\1\171\1\uffff\2\44\1\143\1\162\1\156\2\141\1\154\1\165\1\141\2\156\1\145\1\171\1\143\1\44\1\171\1\uffff\1\44\1\157\1\164\1\145\1\uffff\1\150\1\uffff\1\145\1\uffff\1\157\1\44\1\160\1\145\1\44\1\142\1\uffff\1\145\2\uffff\1\156\1\44\2\uffff\3\44\1\155\1\162\1\146\2\162\1\164\1\165\1\153\1\163\1\157\1\uffff\1\44\1\145\1\uffff\1\156\1\55\1\44\1\171\1\162\1\156\1\uffff\1\145\1\155\1\uffff\1\154\1\157\1\151\4\uffff\1\160\1\163\1\131\1\163\1\164\1\150\1\164\1\163\1\44\1\156\1\uffff\1\141\1\44\2\uffff\1\44\1\116\2\44\1\142\1\145\1\146\1\172\2\44\1\145\1\44\1\145\1\163\1\145\1\44\1\uffff\1\144\1\163\1\142\1\163\2\uffff\1\141\2\uffff\1\145\2\44\1\145\2\uffff\1\141\1\uffff\1\162\1\44\1\163\1\uffff\1\163\1\165\1\145\1\141\1\155\1\162\2\uffff\1\144\1\162\1\163\1\uffff\2\44\2\162\1\147\1\145\1\163\1\44\1\163\1\44\2\uffff\1\145\1\44\1\145\2\44\1\uffff\1\44\1\uffff\1\44\1\uffff\1\44\5\uffff";
     static final String DFA21_maxS =
-        "\1\uffff\1\162\2\uffff\1\165\1\157\1\166\1\uffff\1\171\1\151\1\166\1\170\2\145\1\156\1\151\1\165\1\156\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\2\72\1\171\1\157\1\150\1\141\1\145\1\164\1\165\1\156\1\157\1\141\1\151\1\170\1\154\1\172\5\uffff\1\143\1\157\3\uffff\1\142\1\165\1\164\1\146\1\163\1\172\1\145\1\uffff\1\160\1\171\1\162\1\145\1\163\1\154\1\172\1\147\1\164\1\163\1\164\1\171\1\166\1\151\1\141\1\156\1\170\1\164\1\167\1\154\1\160\1\163\1\172\1\74\10\uffff\1\75\32\uffff\1\75\6\uffff\1\151\1\141\1\160\1\156\1\162\1\154\1\156\1\151\1\162\1\164\1\162\1\155\1\164\1\157\1\164\1\155\1\uffff\1\154\4\uffff\1\153\1\160\1\145\1\165\1\156\1\145\1\143\1\141\1\145\1\164\1\uffff\1\162\2\145\1\172\1\157\1\162\1\101\1\115\1\uffff\1\172\1\151\2\145\1\75\1\145\1\161\1\163\2\172\1\126\1\172\1\154\1\157\1\164\7\uffff\2\164\1\145\1\172\1\143\1\172\1\163\1\141\1\154\2\172\1\165\1\151\2\145\1\154\2\145\1\141\1\145\1\172\1\155\1\164\1\172\1\150\1\165\1\156\1\151\1\172\1\157\1\172\1\uffff\1\167\1\141\1\154\1\145\1\uffff\1\164\1\172\1\156\1\uffff\1\154\2\165\2\uffff\1\151\1\uffff\1\172\1\162\1\141\1\143\1\151\1\162\1\uffff\1\150\1\uffff\1\145\1\154\1\145\2\uffff\1\162\1\156\1\162\1\147\1\145\2\172\1\147\1\162\1\uffff\1\156\1\172\1\uffff\1\172\1\154\1\163\1\156\1\uffff\1\151\1\uffff\1\146\1\uffff\1\172\1\162\1\154\1\155\1\171\1\uffff\1\163\1\172\1\145\1\162\1\163\1\uffff\1\164\1\156\1\150\1\143\1\172\1\162\1\172\1\154\1\172\1\156\1\147\1\151\1\145\1\141\1\uffff\1\164\1\145\1\157\1\165\1\157\1\145\1\141\1\145\1\uffff\1\145\1\164\1\75\2\uffff\1\164\1\151\1\143\1\155\1\172\1\uffff\1\143\1\172\1\142\1\172\1\163\1\151\1\171\1\uffff\1\115\1\145\1\151\1\172\1\143\2\172\1\uffff\1\157\1\uffff\1\171\1\uffff\2\172\1\143\1\162\1\156\2\141\1\154\1\165\1\141\2\156\1\145\1\171\1\143\1\172\1\171\1\uffff\1\172\1\157\1\164\1\145\1\uffff\1\150\1\uffff\1\145\1\uffff\1\172\1\157\1\160\1\145\1\172\1\142\1\uffff\1\145\2\uffff\1\156\1\172\2\uffff\3\172\1\155\1\162\1\146\2\162\1\164\1\165\1\153\1\163\1\157\1\uffff\1\172\1\145\1\uffff\1\156\1\55\1\172\1\171\1\162\1\uffff\1\156\1\145\1\155\1\uffff\1\154\1\157\1\151\4\uffff\1\160\1\163\1\131\1\163\1\164\1\150\1\164\1\163\1\172\1\156\1\uffff\1\155\1\172\2\uffff\1\172\1\116\1\172\1\75\1\142\1\145\1\146\3\172\1\145\1\172\1\145\1\163\1\145\1\172\1\uffff\1\144\1\163\1\142\1\163\2\uffff\1\141\2\uffff\1\145\2\172\1\145\2\uffff\1\141\1\uffff\1\162\1\172\1\163\1\uffff\1\163\1\165\1\145\1\141\1\155\1\162\2\uffff\1\144\1\162\1\163\1\uffff\2\172\2\162\1\147\1\145\1\163\1\172\1\163\1\172\2\uffff\1\145\1\75\1\145\1\75\1\172\1\uffff\1\172\1\uffff\1\172\1\uffff\1\172\5\uffff";
+        "\1\uffff\1\162\2\uffff\1\165\1\157\1\166\1\171\1\151\1\166\1\170\2\145\1\156\1\151\1\165\1\56\1\156\1\171\1\75\5\uffff\1\76\3\uffff\1\75\1\76\2\75\1\76\1\75\1\174\1\46\1\75\2\72\1\157\1\150\1\141\1\145\1\164\1\165\1\156\1\157\1\141\1\151\1\170\1\154\1\172\5\uffff\1\143\1\157\3\uffff\1\142\1\165\1\164\1\146\1\163\1\172\1\145\1\160\1\171\1\162\1\145\1\163\1\154\1\172\1\147\2\164\1\163\1\171\1\166\1\151\1\141\1\156\1\170\1\164\1\172\1\167\1\154\1\74\1\uffff\1\160\1\163\1\172\1\141\1\151\1\160\1\156\10\uffff\1\75\32\uffff\1\75\6\uffff\1\162\1\154\1\156\1\151\1\162\1\164\1\162\1\155\1\164\1\157\1\164\1\155\1\uffff\1\154\4\uffff\1\153\1\160\1\145\1\165\1\156\1\145\1\143\1\141\1\145\1\164\1\uffff\1\162\2\145\1\172\1\157\1\162\1\101\1\115\1\uffff\1\172\1\151\2\145\1\172\1\145\1\161\1\163\2\172\1\126\1\uffff\1\172\1\154\2\uffff\1\157\1\164\1\uffff\2\164\1\145\1\172\1\143\4\uffff\1\172\1\163\1\141\1\154\2\172\1\165\1\151\2\145\1\154\2\145\1\141\1\145\1\172\1\155\1\164\1\172\1\150\1\165\1\156\1\151\3\172\1\uffff\1\167\1\141\1\154\1\145\1\uffff\1\164\1\156\1\172\1\uffff\1\154\2\165\2\uffff\1\151\1\uffff\1\172\1\162\1\141\1\151\1\143\1\162\1\uffff\1\150\1\uffff\1\145\1\154\1\145\2\uffff\1\162\1\156\1\162\1\147\1\145\2\172\1\147\1\162\1\uffff\1\156\1\172\1\uffff\1\172\1\154\1\163\1\156\1\uffff\1\151\1\146\2\uffff\1\172\1\162\1\154\1\155\1\171\1\163\1\uffff\1\172\1\145\1\162\1\163\1\uffff\1\164\1\156\1\143\1\150\1\172\1\162\1\172\1\154\1\172\1\156\1\147\1\151\1\145\1\141\1\uffff\1\164\1\145\1\157\1\165\1\157\1\145\1\141\1\145\1\uffff\1\145\1\164\1\172\2\uffff\1\164\1\151\1\143\1\155\1\172\1\uffff\1\143\1\172\1\142\1\172\1\151\1\163\1\171\1\uffff\1\115\1\145\1\151\1\172\1\143\2\172\1\uffff\1\157\1\uffff\1\171\1\uffff\2\172\1\143\1\162\1\156\2\141\1\154\1\165\1\141\2\156\1\145\1\171\1\143\1\172\1\171\1\uffff\1\172\1\157\1\164\1\145\1\uffff\1\150\1\uffff\1\145\1\uffff\1\157\1\172\1\160\1\145\1\172\1\142\1\uffff\1\145\2\uffff\1\156\1\172\2\uffff\3\172\1\155\1\162\1\146\2\162\1\164\1\165\1\153\1\163\1\157\1\uffff\1\172\1\145\1\uffff\1\156\1\55\1\172\1\171\1\162\1\156\1\uffff\1\145\1\155\1\uffff\1\154\1\157\1\151\4\uffff\1\160\1\163\1\131\1\163\1\164\1\150\1\164\1\163\1\172\1\156\1\uffff\1\155\1\172\2\uffff\1\172\1\116\2\172\1\142\1\145\1\146\3\172\1\145\1\172\1\145\1\163\1\145\1\172\1\uffff\1\144\1\163\1\142\1\163\2\uffff\1\141\2\uffff\1\145\2\172\1\145\2\uffff\1\141\1\uffff\1\162\1\172\1\163\1\uffff\1\163\1\165\1\145\1\141\1\155\1\162\2\uffff\1\144\1\162\1\163\1\uffff\2\172\2\162\1\147\1\145\1\163\1\172\1\163\1\172\2\uffff\1\145\1\172\1\145\2\172\1\uffff\1\172\1\uffff\1\172\1\uffff\1\172\5\uffff";
     static final String DFA21_acceptS =
-        "\2\uffff\1\2\1\3\3\uffff\1\10\14\uffff\1\34\1\35\1\36\1\37\1\uffff\1\41\1\42\1\43\31\uffff\1\172\2\173\1\176\1\177\2\uffff\1\172\1\2\1\3\7\uffff\1\10\30\uffff\1\32\1\46\1\73\1\33\1\34\1\35\1\36\1\37\1\uffff\1\66\1\40\1\41\1\42\1\43\1\44\1\100\1\71\1\45\1\63\1\101\1\72\1\47\1\174\1\175\1\74\1\50\1\75\1\67\1\51\1\53\1\52\1\54\1\104\1\55\1\140\1\uffff\1\76\1\70\1\103\1\137\1\102\1\110\20\uffff\1\167\1\uffff\1\170\1\171\1\173\1\176\12\uffff\1\115\10\uffff\1\77\17\uffff\1\105\1\64\1\65\1\60\1\56\1\61\1\57\37\uffff\1\133\4\uffff\1\145\3\uffff\1\20\3\uffff\1\143\1\144\1\uffff\1\124\6\uffff\1\141\1\uffff\1\113\3\uffff\1\116\1\117\11\uffff\1\4\2\uffff\1\112\4\uffff\1\7\1\uffff\1\26\1\uffff\1\126\5\uffff\1\106\5\uffff\1\127\16\uffff\1\153\10\uffff\1\154\3\uffff\1\142\1\136\5\uffff\1\131\7\uffff\1\21\7\uffff\1\123\1\uffff\1\125\1\uffff\1\114\21\uffff\1\22\4\uffff\1\130\1\uffff\1\14\1\uffff\1\17\6\uffff\1\31\1\uffff\1\107\1\121\2\uffff\1\132\1\147\15\uffff\1\1\2\uffff\1\111\5\uffff\1\120\3\uffff\1\27\3\uffff\1\134\1\150\1\151\1\152\12\uffff\1\25\2\uffff\1\146\1\12\20\uffff\1\163\4\uffff\1\11\1\13\1\uffff\1\122\1\24\4\uffff\1\155\1\156\1\uffff\1\164\3\uffff\1\162\6\uffff\1\30\1\62\3\uffff\1\161\12\uffff\1\165\1\166\5\uffff\1\135\1\uffff\1\160\1\uffff\1\16\1\uffff\1\15\1\23\1\157\1\5\1\6";
+        "\2\uffff\1\2\1\3\20\uffff\1\36\1\37\1\40\1\41\1\42\1\uffff\1\44\1\45\1\46\30\uffff\1\173\2\174\1\177\1\u0080\2\uffff\1\173\1\2\1\3\35\uffff\1\30\7\uffff\1\51\1\76\1\34\1\36\1\37\1\40\1\41\1\42\1\uffff\1\71\1\43\1\44\1\45\1\46\1\47\1\103\1\74\1\50\1\66\1\104\1\75\1\52\1\175\1\176\1\77\1\53\1\100\1\72\1\54\1\56\1\55\1\57\1\107\1\60\1\141\1\uffff\1\101\1\73\1\106\1\140\1\105\1\113\14\uffff\1\170\1\uffff\1\171\1\172\1\174\1\177\12\uffff\1\120\10\uffff\1\102\13\uffff\1\35\2\uffff\1\67\1\70\2\uffff\1\110\5\uffff\1\63\1\61\1\64\1\62\32\uffff\1\134\4\uffff\1\146\3\uffff\1\17\3\uffff\1\144\1\145\1\uffff\1\125\6\uffff\1\142\1\uffff\1\116\3\uffff\1\121\1\122\11\uffff\1\4\2\uffff\1\115\4\uffff\1\7\2\uffff\1\25\1\127\6\uffff\1\111\4\uffff\1\130\16\uffff\1\154\10\uffff\1\155\3\uffff\1\143\1\137\5\uffff\1\132\7\uffff\1\20\7\uffff\1\124\1\uffff\1\126\1\uffff\1\117\21\uffff\1\21\4\uffff\1\131\1\uffff\1\13\1\uffff\1\16\6\uffff\1\31\1\uffff\1\32\1\112\2\uffff\1\133\1\150\15\uffff\1\1\2\uffff\1\114\6\uffff\1\123\2\uffff\1\26\3\uffff\1\135\1\151\1\152\1\153\12\uffff\1\24\2\uffff\1\147\1\11\20\uffff\1\164\4\uffff\1\10\1\12\1\uffff\1\33\1\23\4\uffff\1\156\1\157\1\uffff\1\165\3\uffff\1\163\6\uffff\1\27\1\65\3\uffff\1\162\12\uffff\1\166\1\167\5\uffff\1\136\1\uffff\1\161\1\uffff\1\15\1\uffff\1\14\1\22\1\160\1\5\1\6";
     static final String DFA21_specialS =
-        "\1\0\u0207\uffff}>";
+        "\1\0\u0209\uffff}>";
     static final String[] DFA21_transitionS = {
-            "\11\71\2\70\2\71\1\70\22\71\1\70\1\44\1\66\1\31\1\65\1\37\1\43\1\67\1\25\1\27\1\23\1\34\1\26\1\35\1\22\1\36\1\62\11\63\1\46\1\7\1\40\1\30\1\41\1\45\1\24\1\65\1\57\1\65\1\60\4\65\1\56\4\65\1\55\4\65\1\54\1\61\6\65\1\32\1\71\1\33\1\64\1\65\1\71\1\12\1\65\1\4\1\5\1\13\1\50\1\65\1\11\1\21\1\65\1\14\1\15\1\17\1\20\1\6\1\1\1\65\1\53\1\47\1\10\1\16\1\52\1\51\3\65\1\2\1\42\1\3\uff82\71",
+            "\11\71\2\70\2\71\1\70\22\71\1\70\1\45\1\66\1\32\1\65\1\40\1\44\1\67\1\26\1\30\1\23\1\35\1\27\1\36\1\20\1\37\1\62\11\63\1\47\1\24\1\41\1\31\1\42\1\46\1\25\1\65\1\57\1\65\1\60\4\65\1\56\4\65\1\55\4\65\1\54\1\61\6\65\1\33\1\71\1\34\1\64\1\65\1\71\1\11\1\65\1\4\1\5\1\12\1\50\1\65\1\10\1\21\1\65\1\13\1\14\1\16\1\17\1\6\1\1\1\65\1\53\1\22\1\7\1\15\1\52\1\51\3\65\1\2\1\43\1\3\uff82\71",
             "\1\72\20\uffff\1\73",
             "",
             "",
             "\1\101\15\uffff\1\100\5\uffff\1\77",
             "\1\102\3\uffff\1\103\5\uffff\1\104",
             "\1\105",
-            "",
-            "\1\111\11\uffff\1\110\6\uffff\1\107",
-            "\1\113\7\uffff\1\112",
-            "\1\114\6\uffff\1\115\2\uffff\1\116",
-            "\1\120\1\uffff\1\117\11\uffff\1\121",
+            "\1\110\11\uffff\1\107\6\uffff\1\106",
+            "\1\112\7\uffff\1\111",
+            "\1\113\6\uffff\1\114\2\uffff\1\115",
+            "\1\120\1\uffff\1\116\11\uffff\1\117",
+            "\1\121",
             "\1\122",
             "\1\123",
-            "\1\124",
-            "\1\127\3\uffff\1\125\3\uffff\1\126",
-            "\1\131\11\uffff\1\130\5\uffff\1\132",
-            "\1\135\6\uffff\1\133\1\134",
-            "\1\136",
-            "\1\141\22\uffff\1\140",
+            "\1\126\3\uffff\1\124\3\uffff\1\125",
+            "\1\131\11\uffff\1\127\3\uffff\1\130\1\uffff\1\132",
+            "\1\133",
+            "\1\137\6\uffff\1\135\1\136",
+            "\1\140\1\142\1\uffff\1\141\1\uffff\1\143",
+            "\1\145\22\uffff\1\144",
             "",
             "",
             "",
             "",
-            "\1\147\1\150",
+            "",
+            "\1\154\1\155",
             "",
             "",
             "",
-            "\1\156\21\uffff\1\155",
-            "\1\162\17\uffff\1\160\1\161",
-            "\1\165\4\uffff\1\166\15\uffff\1\164",
-            "\1\170",
-            "\1\172",
-            "\1\174",
-            "\1\176",
-            "\1\u0080",
-            "\1\u0082",
-            "\1\u0085\13\uffff\1\u0084",
+            "\1\163\21\uffff\1\162",
+            "\1\167\17\uffff\1\165\1\166",
+            "\1\172\4\uffff\1\173\15\uffff\1\171",
+            "\1\175",
+            "\1\177",
+            "\1\u0081",
+            "\1\u0083",
+            "\1\u0085",
             "\1\u0087",
-            "\1\u008a\1\u008b\1\uffff\1\u0089\1\uffff\1\u008c",
-            "\1\u008e\7\uffff\1\u008f\5\uffff\1\u008d",
-            "\1\u0090",
+            "\1\u008a\13\uffff\1\u0089",
+            "\1\u008c",
+            "\1\u008f\7\uffff\1\u0090\5\uffff\1\u008e",
             "\1\u0091",
             "\1\u0092",
             "\1\u0093",
@@ -4428,35 +4456,34 @@
             "\1\u0096",
             "\1\u0097",
             "\1\u0098",
-            "\12\u009a\10\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\13\uffff\1\u0099\6\uffff\1\u009a\2\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\13\uffff\1\u0099",
-            "\12\u009a\10\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\22\uffff\1\u009a\2\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c",
+            "\1\u0099",
+            "\12\u009b\10\uffff\1\u009d\1\uffff\3\u009d\5\uffff\1\u009d\13\uffff\1\u009a\6\uffff\1\u009b\2\uffff\1\u009d\1\uffff\3\u009d\5\uffff\1\u009d\13\uffff\1\u009a",
+            "\12\u009b\10\uffff\1\u009d\1\uffff\3\u009d\5\uffff\1\u009d\22\uffff\1\u009b\2\uffff\1\u009d\1\uffff\3\u009d\5\uffff\1\u009d",
             "\1\74\34\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "",
             "",
             "",
             "",
             "",
-            "\1\u009f",
             "\1\u00a0",
-            "",
-            "",
-            "",
             "\1\u00a1",
-            "\1\u00a2\10\uffff\1\u00a3",
-            "\1\u00a4\1\u00a5",
-            "\1\u00a6",
-            "\1\u00a7\5\uffff\1\u00a8",
-            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
-            "\1\u00aa",
             "",
+            "",
+            "",
+            "\1\u00a2",
+            "\1\u00a3\10\uffff\1\u00a4",
+            "\1\u00a5\1\u00a6",
+            "\1\u00a7",
+            "\1\u00a8\5\uffff\1\u00a9",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u00ab",
-            "\1\u00ac\3\uffff\1\u00ad",
-            "\1\u00ae",
+            "\1\u00ac",
+            "\1\u00ad\3\uffff\1\u00ae",
             "\1\u00af",
             "\1\u00b0",
             "\1\u00b1",
+            "\1\u00b2",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
-            "\1\u00b3",
             "\1\u00b4",
             "\1\u00b5",
             "\1\u00b6",
@@ -4468,77 +4495,78 @@
             "\1\u00bc",
             "\1\u00bd",
             "\1\u00be",
-            "\1\u00bf",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u00c0",
             "\1\u00c1",
-            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
-            "\1\u00c3",
+            "\1\u00c2",
             "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
+            "\1\u00c4",
             "\1\u00c5",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u00c7",
+            "\1\u00c8",
+            "\1\u00ca\2\uffff\1\u00c9",
+            "\1\u00cb",
             "",
             "",
             "",
             "",
             "",
             "",
-            "\1\u00c9",
-            "\1\u00ca",
-            "\1\u00cc\2\uffff\1\u00cb",
-            "\1\u00cd",
+            "",
+            "",
+            "\1\u00cc",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\u00ce",
-            "\1\u00cf",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\u00d0",
             "\1\u00d1",
-            "\1\u00d3\5\uffff\1\u00d2",
-            "\1\u00d4",
-            "\1\u00d5",
+            "\1\u00d2",
+            "\1\u00d3",
+            "\1\u00d5\5\uffff\1\u00d4",
             "\1\u00d6",
             "\1\u00d7",
             "\1\u00d8",
             "\1\u00d9",
             "\1\u00da",
-            "",
-            "\12\u009a\10\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c\22\uffff\1\u009a\2\uffff\1\u009c\1\uffff\3\u009c\5\uffff\1\u009c",
-            "",
-            "",
-            "",
-            "",
             "\1\u00db",
             "\1\u00dc",
+            "",
+            "\12\u009b\10\uffff\1\u009d\1\uffff\3\u009d\5\uffff\1\u009d\22\uffff\1\u009b\2\uffff\1\u009d\1\uffff\3\u009d\5\uffff\1\u009d",
+            "",
+            "",
+            "",
+            "",
             "\1\u00dd",
             "\1\u00de",
             "\1\u00df",
@@ -4547,51 +4575,52 @@
             "\1\u00e2",
             "\1\u00e3",
             "\1\u00e4",
-            "",
             "\1\u00e5",
             "\1\u00e6",
+            "",
             "\1\u00e7",
-            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u00e8",
             "\1\u00e9",
-            "\1\u00ea",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u00eb",
             "\1\u00ec",
+            "\1\u00ed",
+            "\1\u00ee",
             "",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
-            "\1\u00ee",
-            "\1\u00ef",
             "\1\u00f0",
             "\1\u00f1",
             "\1\u00f2",
-            "\1\u00f3",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u00f4",
+            "\1\u00f5",
+            "\1\u00f6",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
-            "\1\u00f7",
-            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u00f9",
-            "\1\u00fa",
+            "",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u00fb",
             "",
             "",
-            "",
-            "",
-            "",
-            "",
-            "",
             "\1\u00fc",
             "\1\u00fd",
+            "",
             "\1\u00fe",
-            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u00ff",
             "\1\u0100",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u0102",
-            "\1\u0103",
+            "",
+            "",
+            "",
+            "",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u0104",
+            "\1\u0105",
+            "\1\u0106",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
-            "\1\u0107",
-            "\1\u0108",
             "\1\u0109",
             "\1\u010a",
             "\1\u010b",
@@ -4599,141 +4628,141 @@
             "\1\u010d",
             "\1\u010e",
             "\1\u010f",
-            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0110",
             "\1\u0111",
-            "\1\u0112",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0113",
             "\1\u0114",
-            "\1\u0115",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u0116",
             "\1\u0117",
+            "\1\u0118",
+            "\1\u0119",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
-            "\1\u011a\26\uffff\1\u0119\32\uffff\1\u011b",
+            "\1\74\13\uffff\12\74\7\uffff\23\74\1\u011b\6\74\4\uffff\1\74\1\uffff\16\74\1\u011c\13\74",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "",
-            "\1\u011d",
-            "\1\u011e",
             "\1\u011f",
             "\1\u0120",
-            "",
             "\1\u0121",
-            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0122",
+            "",
             "\1\u0123",
-            "",
             "\1\u0124",
-            "\1\u0125",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "",
             "\1\u0126",
-            "",
-            "",
             "\1\u0127",
+            "\1\u0128",
+            "",
+            "",
+            "\1\u0129",
             "",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
-            "\1\u0129",
-            "\1\u012a",
             "\1\u012b",
             "\1\u012c",
             "\1\u012d",
-            "",
             "\1\u012e",
-            "",
             "\1\u012f",
+            "",
             "\1\u0130",
+            "",
             "\1\u0131",
-            "",
-            "",
             "\1\u0132",
             "\1\u0133",
+            "",
+            "",
             "\1\u0134",
             "\1\u0135",
             "\1\u0136",
+            "\1\u0137",
+            "\1\u0138",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
-            "\1\74\13\uffff\12\74\7\uffff\3\74\1\u013e\3\74\1\u013a\4\74\1\u013c\3\74\1\u013b\1\74\1\u013f\3\74\1\u013d\1\74\1\u0139\1\74\4\uffff\1\74\1\uffff\22\74\1\u0138\7\74",
-            "\1\u0141",
-            "\1\u0142",
-            "",
+            "\1\74\13\uffff\12\74\7\uffff\3\74\1\u0140\3\74\1\u013c\4\74\1\u013e\3\74\1\u013d\1\74\1\u0141\3\74\1\u013f\1\74\1\u013b\1\74\4\uffff\1\74\1\uffff\22\74\1\u013a\7\74",
             "\1\u0143",
+            "\1\u0144",
+            "",
+            "\1\u0145",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
-            "\1\u0146",
-            "\1\u0147",
             "\1\u0148",
-            "",
             "\1\u0149",
-            "",
             "\1\u014a",
             "",
-            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u014b",
             "\1\u014c",
-            "\1\u014d",
+            "",
+            "",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u014e",
             "\1\u014f",
+            "\1\u0150",
+            "\1\u0151",
+            "\1\u0153\16\uffff\1\u0152",
             "",
-            "\1\u0150\16\uffff\1\u0151",
-            "\1\74\13\uffff\12\74\7\uffff\23\74\1\u0152\6\74\4\uffff\1\74\1\uffff\32\74",
-            "\1\u0154",
-            "\1\u0155",
+            "\1\74\13\uffff\12\74\7\uffff\23\74\1\u0154\6\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u0156",
-            "",
             "\1\u0157",
             "\1\u0158",
+            "",
             "\1\u0159",
             "\1\u015a",
-            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u015b",
             "\1\u015c",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u015e",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u0160",
-            "\1\u0161",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u0162",
             "\1\u0163",
             "\1\u0164",
-            "",
             "\1\u0165",
             "\1\u0166",
-            "\1\u0167\15\uffff\1\u0168",
-            "\1\u0169",
-            "\1\u016b\5\uffff\1\u016a",
-            "\1\u016c",
-            "\1\u016d",
-            "\1\u016e",
             "",
+            "\1\u0167",
+            "\1\u0168",
+            "\1\u0169\15\uffff\1\u016a",
+            "\1\u016b",
+            "\1\u016d\5\uffff\1\u016c",
+            "\1\u016e",
             "\1\u016f",
             "\1\u0170",
+            "",
             "\1\u0171",
-            "",
-            "",
             "\1\u0172",
-            "\1\u0173",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "",
+            "",
             "\1\u0174",
             "\1\u0175",
-            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
-            "",
+            "\1\u0176",
             "\1\u0177",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "",
             "\1\u0179",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u017b",
-            "\1\u017c",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u017d",
-            "",
             "\1\u017e",
             "\1\u017f",
+            "",
             "\1\u0180",
-            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0181",
             "\1\u0182",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0184",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "",
-            "\1\u0185",
+            "\1\u0187",
             "",
-            "\1\u0186",
+            "\1\u0188",
             "",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
-            "\1\u0189",
-            "\1\u018a",
             "\1\u018b",
             "\1\u018c",
             "\1\u018d",
@@ -4745,37 +4774,37 @@
             "\1\u0193",
             "\1\u0194",
             "\1\u0195",
-            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0196",
             "\1\u0197",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0199",
             "",
-            "\1\74\13\uffff\12\74\7\uffff\14\74\1\u0198\15\74\4\uffff\1\74\1\uffff\32\74",
-            "\1\u019a",
-            "\1\u019b",
+            "\1\74\13\uffff\12\74\7\uffff\14\74\1\u019a\15\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u019c",
-            "",
             "\1\u019d",
-            "",
             "\1\u019e",
             "",
-            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u019f",
+            "",
             "\1\u01a0",
+            "",
             "\1\u01a1",
-            "\1\u01a2",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u01a3",
             "\1\u01a4",
-            "",
-            "\1\u01a5",
-            "",
-            "",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u01a6",
+            "",
+            "\1\u01a7",
+            "",
+            "",
+            "\1\u01a8",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "",
             "",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
-            "\1\u01ab",
-            "\1\u01ac",
             "\1\u01ad",
             "\1\u01ae",
             "\1\u01af",
@@ -4784,108 +4813,110 @@
             "\1\u01b2",
             "\1\u01b3",
             "\1\u01b4",
-            "",
-            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u01b5",
             "\1\u01b6",
             "",
-            "\1\u01b7",
-            "\1\u01b8",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
-            "\1\u01ba",
-            "\1\u01bb",
+            "\1\u01b8",
             "",
+            "\1\u01b9",
+            "\1\u01ba",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u01bc",
             "\1\u01bd",
             "\1\u01be",
             "",
             "\1\u01bf",
             "\1\u01c0",
+            "",
             "\1\u01c1",
-            "",
-            "",
-            "",
-            "",
             "\1\u01c2",
             "\1\u01c3",
+            "",
+            "",
+            "",
+            "",
             "\1\u01c4",
             "\1\u01c5",
             "\1\u01c6",
             "\1\u01c7",
             "\1\u01c8",
             "\1\u01c9",
-            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u01ca",
             "\1\u01cb",
-            "",
-            "\1\u01cc\13\uffff\1\u01cd",
-            "\1\74\13\uffff\12\74\7\uffff\24\74\1\u01ce\5\74\4\uffff\1\74\1\uffff\32\74",
-            "",
-            "",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
-            "\1\u01d1",
+            "\1\u01cd",
+            "",
+            "\1\u01ce\13\uffff\1\u01cf",
+            "\1\74\13\uffff\12\74\7\uffff\24\74\1\u01d0\5\74\4\uffff\1\74\1\uffff\32\74",
+            "",
+            "",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u01d3",
-            "\1\u01d4",
-            "\1\u01d5",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u01d6",
             "\1\u01d7",
+            "\1\u01d8",
+            "\1\u01d9",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
-            "\1\u01da",
-            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u01dc",
-            "\1\u01dd",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u01de",
+            "\1\u01df",
+            "\1\u01e0",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "",
-            "\1\u01e0",
-            "\1\u01e1",
             "\1\u01e2",
             "\1\u01e3",
-            "",
-            "",
             "\1\u01e4",
-            "",
-            "",
             "\1\u01e5",
+            "",
+            "",
+            "\1\u01e6",
+            "",
+            "",
+            "\1\u01e7",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
-            "\1\u01e8",
-            "",
-            "",
-            "\1\u01e9",
-            "",
             "\1\u01ea",
-            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
-            "\1\u01ec",
             "",
-            "\1\u01ed",
+            "",
+            "\1\u01eb",
+            "",
+            "\1\u01ec",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\u01ee",
+            "",
             "\1\u01ef",
             "\1\u01f0",
             "\1\u01f1",
             "\1\u01f2",
-            "",
-            "",
             "\1\u01f3",
             "\1\u01f4",
+            "",
+            "",
             "\1\u01f5",
+            "\1\u01f6",
+            "\1\u01f7",
             "",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
-            "\1\u01f8",
-            "\1\u01f9",
             "\1\u01fa",
             "\1\u01fb",
             "\1\u01fc",
-            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u01fd",
             "\1\u01fe",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
-            "",
-            "",
             "\1\u0200",
-            "\1\u0201",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "",
+            "",
             "\1\u0202",
-            "\1\u0203",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
+            "\1\u0204",
+            "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
             "",
             "\1\74\13\uffff\12\74\7\uffff\32\74\4\uffff\1\74\1\uffff\32\74",
@@ -4930,7 +4961,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 | 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;
@@ -4952,71 +4983,71 @@
 
                         else if ( (LA21_0=='o') ) {s = 6;}
 
-                        else if ( (LA21_0==';') ) {s = 7;}
+                        else if ( (LA21_0=='t') ) {s = 7;}
 
-                        else if ( (LA21_0=='t') ) {s = 8;}
+                        else if ( (LA21_0=='h') ) {s = 8;}
 
-                        else if ( (LA21_0=='h') ) {s = 9;}
+                        else if ( (LA21_0=='a') ) {s = 9;}
 
-                        else if ( (LA21_0=='a') ) {s = 10;}
+                        else if ( (LA21_0=='e') ) {s = 10;}
 
-                        else if ( (LA21_0=='e') ) {s = 11;}
+                        else if ( (LA21_0=='k') ) {s = 11;}
 
-                        else if ( (LA21_0=='k') ) {s = 12;}
+                        else if ( (LA21_0=='l') ) {s = 12;}
 
-                        else if ( (LA21_0=='l') ) {s = 13;}
+                        else if ( (LA21_0=='u') ) {s = 13;}
 
-                        else if ( (LA21_0=='u') ) {s = 14;}
+                        else if ( (LA21_0=='m') ) {s = 14;}
 
-                        else if ( (LA21_0=='m') ) {s = 15;}
+                        else if ( (LA21_0=='n') ) {s = 15;}
 
-                        else if ( (LA21_0=='n') ) {s = 16;}
+                        else if ( (LA21_0=='.') ) {s = 16;}
 
                         else if ( (LA21_0=='i') ) {s = 17;}
 
-                        else if ( (LA21_0=='.') ) {s = 18;}
+                        else if ( (LA21_0=='s') ) {s = 18;}
 
                         else if ( (LA21_0=='*') ) {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=='|') ) {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=='?') ) {s = 37;}
+                        else if ( (LA21_0=='!') ) {s = 37;}
 
-                        else if ( (LA21_0==':') ) {s = 38;}
+                        else if ( (LA21_0=='?') ) {s = 38;}
 
-                        else if ( (LA21_0=='s') ) {s = 39;}
+                        else if ( (LA21_0==':') ) {s = 39;}
 
                         else if ( (LA21_0=='f') ) {s = 40;}
 
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSLParser.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSLParser.java
index 39332ff..213067a 100644
--- a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSLParser.java
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSLParser.java
@@ -1,18 +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.cubedsl.parser.antlr.internal; 
+package org.eclipse.osbp.xtext.cubedsl.parser.antlr.internal;
 
 import org.eclipse.xtext.*;
 import org.eclipse.xtext.parser.*;
@@ -34,10 +20,25 @@
 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 InternalCubeDSLParser 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'", "'{'", "'}'", "'cube'", "'defaultMeasure'", "'dimensionUsage'", "'over'", "';'", "'dimension'", "'typeTime'", "'hierarchy'", "'hasAll'", "'allMemberName='", "'defaultMember='", "'entity'", "'key='", "'level'", "'column='", "'uniqueMembers'", "'levelType='", "'property'", "'type='", "'measure'", "'notVisible'", "'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'", "'?'", "'&'", "'sum'", "'count'", "'min'", "'max'", "'avg'", "'distinct-count'", "'String'", "'Numeric'", "'Integer'", "'Boolean'", "'Date'", "'Time'", "'Timestamp'", "'TimeYears'", "'TimeHalfYears'", "'TimeQuarters'", "'TimeMonths'", "'TimeWeeks'", "'TimeDays'", "'TimeHours'", "'TimeMinutes'", "'TimeSeconds'"
+        "<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'", "'{'", "'}'", "'cube'", "'defaultMeasure'", "'dimensionUsage'", "'over'", "'dimension'", "'typeTime'", "'hierarchy'", "'hasAll'", "'allMemberName'", "'defaultMember'", "'entity'", "'key'", "'level'", "'column'", "'uniqueMembers'", "'levelType'", "'property'", "'type'", "'measure'", "'notVisible'", "'.'", "'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'", "'?'", "'&'", "'sum'", "'count'", "'min'", "'max'", "'avg'", "'distinct-count'", "'String'", "'Numeric'", "'Integer'", "'Boolean'", "'Date'", "'Time'", "'Timestamp'", "'TimeYears'", "'TimeHalfYears'", "'TimeQuarters'", "'TimeMonths'", "'TimeWeeks'", "'TimeDays'", "'TimeHours'", "'TimeMinutes'", "'TimeSeconds'"
     };
     public static final int RULE_HEX=6;
     public static final int T__50=50;
@@ -53,6 +54,7 @@
     public static final int T__60=60;
     public static final int T__61=61;
     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;
@@ -182,23 +184,23 @@
         
 
     public String[] getTokenNames() { return InternalCubeDSLParser.tokenNames; }
-    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g"; }
+    public String getGrammarFileName() { return "InternalCubeDSL.g"; }
 
 
 
      	private CubeDSLGrammarAccess grammarAccess;
-     	
+
         public InternalCubeDSLParser(TokenStream input, CubeDSLGrammarAccess grammarAccess) {
             this(input);
             this.grammarAccess = grammarAccess;
             registerRules(grammarAccess.getGrammar());
         }
-        
+
         @Override
         protected String getFirstRuleName() {
-        	return "CubeModel";	
+        	return "CubeModel";
        	}
-       	
+
        	@Override
        	protected CubeDSLGrammarAccess getGrammarAccess() {
        		return grammarAccess;
@@ -206,8 +208,9 @@
 
 
 
+
     // $ANTLR start "entryRuleCubeModel"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:68:1: entryRuleCubeModel returns [EObject current=null] : iv_ruleCubeModel= ruleCubeModel EOF ;
+    // InternalCubeDSL.g:78:1: entryRuleCubeModel returns [EObject current=null] : iv_ruleCubeModel= ruleCubeModel EOF ;
     public final EObject entryRuleCubeModel() throws RecognitionException {
         EObject current = null;
 
@@ -215,13 +218,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:69:2: (iv_ruleCubeModel= ruleCubeModel EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:70:2: iv_ruleCubeModel= ruleCubeModel EOF
+            // InternalCubeDSL.g:78:50: (iv_ruleCubeModel= ruleCubeModel EOF )
+            // InternalCubeDSL.g:79:2: iv_ruleCubeModel= ruleCubeModel EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getCubeModelRule()); 
             }
-            pushFollow(FOLLOW_ruleCubeModel_in_entryRuleCubeModel75);
+            pushFollow(FOLLOW_1);
             iv_ruleCubeModel=ruleCubeModel();
 
             state._fsp--;
@@ -229,16 +232,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleCubeModel; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeModel85); 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;
@@ -247,63 +250,112 @@
 
 
     // $ANTLR start "ruleCubeModel"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:77:1: ruleCubeModel returns [EObject current=null] : ( () ( (lv_pckg_1_0= ruleCubePackage ) ) ) ;
+    // InternalCubeDSL.g:85:1: ruleCubeModel returns [EObject current=null] : ( () ( (lv_importSection_1_0= ruleXImportSection ) )? ( (lv_pckg_2_0= ruleCubePackage ) ) ) ;
     public final EObject ruleCubeModel() throws RecognitionException {
         EObject current = null;
 
-        EObject lv_pckg_1_0 = null;
+        EObject lv_importSection_1_0 = null;
+
+        EObject lv_pckg_2_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:80:28: ( ( () ( (lv_pckg_1_0= ruleCubePackage ) ) ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:81:1: ( () ( (lv_pckg_1_0= ruleCubePackage ) ) )
+            // InternalCubeDSL.g:91:2: ( ( () ( (lv_importSection_1_0= ruleXImportSection ) )? ( (lv_pckg_2_0= ruleCubePackage ) ) ) )
+            // InternalCubeDSL.g:92:2: ( () ( (lv_importSection_1_0= ruleXImportSection ) )? ( (lv_pckg_2_0= ruleCubePackage ) ) )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:81:1: ( () ( (lv_pckg_1_0= ruleCubePackage ) ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:81:2: () ( (lv_pckg_1_0= ruleCubePackage ) )
+            // InternalCubeDSL.g:92:2: ( () ( (lv_importSection_1_0= ruleXImportSection ) )? ( (lv_pckg_2_0= ruleCubePackage ) ) )
+            // InternalCubeDSL.g:93:3: () ( (lv_importSection_1_0= ruleXImportSection ) )? ( (lv_pckg_2_0= ruleCubePackage ) )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:81:2: ()
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:82:5: 
+            // InternalCubeDSL.g:93:3: ()
+            // InternalCubeDSL.g:94:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getCubeModelAccess().getCubeModelAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getCubeModelAccess().getCubeModelAction_0(),
+              					current);
+              			
             }
 
             }
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:87:2: ( (lv_pckg_1_0= ruleCubePackage ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:88:1: (lv_pckg_1_0= ruleCubePackage )
+            // InternalCubeDSL.g:100:3: ( (lv_importSection_1_0= ruleXImportSection ) )?
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0==37) ) {
+                alt1=1;
+            }
+            switch (alt1) {
+                case 1 :
+                    // InternalCubeDSL.g:101:4: (lv_importSection_1_0= ruleXImportSection )
+                    {
+                    // InternalCubeDSL.g:101:4: (lv_importSection_1_0= ruleXImportSection )
+                    // InternalCubeDSL.g:102:5: lv_importSection_1_0= ruleXImportSection
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      					newCompositeNode(grammarAccess.getCubeModelAccess().getImportSectionXImportSectionParserRuleCall_1_0());
+                      				
+                    }
+                    pushFollow(FOLLOW_3);
+                    lv_importSection_1_0=ruleXImportSection();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					if (current==null) {
+                      						current = createModelElementForParent(grammarAccess.getCubeModelRule());
+                      					}
+                      					set(
+                      						current,
+                      						"importSection",
+                      						lv_importSection_1_0,
+                      						"org.eclipse.xtext.xbase.Xtype.XImportSection");
+                      					afterParserOrEnumRuleCall();
+                      				
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalCubeDSL.g:119:3: ( (lv_pckg_2_0= ruleCubePackage ) )
+            // InternalCubeDSL.g:120:4: (lv_pckg_2_0= ruleCubePackage )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:88:1: (lv_pckg_1_0= ruleCubePackage )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:89:3: lv_pckg_1_0= ruleCubePackage
+            // InternalCubeDSL.g:120:4: (lv_pckg_2_0= ruleCubePackage )
+            // InternalCubeDSL.g:121:5: lv_pckg_2_0= ruleCubePackage
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getCubeModelAccess().getPckgCubePackageParserRuleCall_1_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getCubeModelAccess().getPckgCubePackageParserRuleCall_2_0());
+              				
             }
-            pushFollow(FOLLOW_ruleCubePackage_in_ruleCubeModel140);
-            lv_pckg_1_0=ruleCubePackage();
+            pushFollow(FOLLOW_2);
+            lv_pckg_2_0=ruleCubePackage();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getCubeModelRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"pckg",
-                      		lv_pckg_1_0, 
-                      		"CubePackage");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getCubeModelRule());
+              					}
+              					set(
+              						current,
+              						"pckg",
+              						lv_pckg_2_0,
+              						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubePackage");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -318,14 +370,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -334,7 +388,7 @@
 
 
     // $ANTLR start "entryRuleCubePackage"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:113:1: entryRuleCubePackage returns [EObject current=null] : iv_ruleCubePackage= ruleCubePackage EOF ;
+    // InternalCubeDSL.g:142:1: entryRuleCubePackage returns [EObject current=null] : iv_ruleCubePackage= ruleCubePackage EOF ;
     public final EObject entryRuleCubePackage() throws RecognitionException {
         EObject current = null;
 
@@ -342,13 +396,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:114:2: (iv_ruleCubePackage= ruleCubePackage EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:115:2: iv_ruleCubePackage= ruleCubePackage EOF
+            // InternalCubeDSL.g:142:52: (iv_ruleCubePackage= ruleCubePackage EOF )
+            // InternalCubeDSL.g:143:2: iv_ruleCubePackage= ruleCubePackage EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getCubePackageRule()); 
             }
-            pushFollow(FOLLOW_ruleCubePackage_in_entryRuleCubePackage176);
+            pushFollow(FOLLOW_1);
             iv_ruleCubePackage=ruleCubePackage();
 
             state._fsp--;
@@ -356,16 +410,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleCubePackage; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleCubePackage186); 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;
@@ -374,65 +428,64 @@
 
 
     // $ANTLR start "ruleCubePackage"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:122:1: ruleCubePackage returns [EObject current=null] : (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) (otherlv_2= '{' ( (lv_imports_3_0= ruleImport ) )* ( (lv_dimensions_4_0= ruleCubeDimension ) )* ( (lv_cubes_5_0= ruleCubeType ) )* otherlv_6= '}' )? ) ;
+    // InternalCubeDSL.g:149:1: ruleCubePackage returns [EObject current=null] : (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) (otherlv_2= '{' ( (lv_dimensions_3_0= ruleCubeDimension ) )* ( (lv_cubes_4_0= ruleCubeType ) )* otherlv_5= '}' )? ) ;
     public final EObject ruleCubePackage() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_0=null;
         Token otherlv_2=null;
-        Token otherlv_6=null;
+        Token otherlv_5=null;
         AntlrDatatypeRuleToken lv_name_1_0 = null;
 
-        EObject lv_imports_3_0 = null;
+        EObject lv_dimensions_3_0 = null;
 
-        EObject lv_dimensions_4_0 = null;
-
-        EObject lv_cubes_5_0 = null;
+        EObject lv_cubes_4_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:125:28: ( (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) (otherlv_2= '{' ( (lv_imports_3_0= ruleImport ) )* ( (lv_dimensions_4_0= ruleCubeDimension ) )* ( (lv_cubes_5_0= ruleCubeType ) )* otherlv_6= '}' )? ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:126:1: (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) (otherlv_2= '{' ( (lv_imports_3_0= ruleImport ) )* ( (lv_dimensions_4_0= ruleCubeDimension ) )* ( (lv_cubes_5_0= ruleCubeType ) )* otherlv_6= '}' )? )
+            // InternalCubeDSL.g:155:2: ( (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) (otherlv_2= '{' ( (lv_dimensions_3_0= ruleCubeDimension ) )* ( (lv_cubes_4_0= ruleCubeType ) )* otherlv_5= '}' )? ) )
+            // InternalCubeDSL.g:156:2: (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) (otherlv_2= '{' ( (lv_dimensions_3_0= ruleCubeDimension ) )* ( (lv_cubes_4_0= ruleCubeType ) )* otherlv_5= '}' )? )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:126:1: (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) (otherlv_2= '{' ( (lv_imports_3_0= ruleImport ) )* ( (lv_dimensions_4_0= ruleCubeDimension ) )* ( (lv_cubes_5_0= ruleCubeType ) )* otherlv_6= '}' )? )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:126:3: otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) (otherlv_2= '{' ( (lv_imports_3_0= ruleImport ) )* ( (lv_dimensions_4_0= ruleCubeDimension ) )* ( (lv_cubes_5_0= ruleCubeType ) )* otherlv_6= '}' )?
+            // InternalCubeDSL.g:156:2: (otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) (otherlv_2= '{' ( (lv_dimensions_3_0= ruleCubeDimension ) )* ( (lv_cubes_4_0= ruleCubeType ) )* otherlv_5= '}' )? )
+            // InternalCubeDSL.g:157:3: otherlv_0= 'package' ( (lv_name_1_0= ruleQualifiedName ) ) (otherlv_2= '{' ( (lv_dimensions_3_0= ruleCubeDimension ) )* ( (lv_cubes_4_0= ruleCubeType ) )* otherlv_5= '}' )?
             {
-            otherlv_0=(Token)match(input,13,FOLLOW_13_in_ruleCubePackage223); if (state.failed) return current;
+            otherlv_0=(Token)match(input,13,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getCubePackageAccess().getPackageKeyword_0());
-                  
+              			newLeafNode(otherlv_0, grammarAccess.getCubePackageAccess().getPackageKeyword_0());
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:130:1: ( (lv_name_1_0= ruleQualifiedName ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:131:1: (lv_name_1_0= ruleQualifiedName )
+            // InternalCubeDSL.g:161:3: ( (lv_name_1_0= ruleQualifiedName ) )
+            // InternalCubeDSL.g:162:4: (lv_name_1_0= ruleQualifiedName )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:131:1: (lv_name_1_0= ruleQualifiedName )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:132:3: lv_name_1_0= ruleQualifiedName
+            // InternalCubeDSL.g:162:4: (lv_name_1_0= ruleQualifiedName )
+            // InternalCubeDSL.g:163:5: lv_name_1_0= ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getCubePackageAccess().getNameQualifiedNameParserRuleCall_1_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getCubePackageAccess().getNameQualifiedNameParserRuleCall_1_0());
+              				
             }
-            pushFollow(FOLLOW_ruleQualifiedName_in_ruleCubePackage244);
+            pushFollow(FOLLOW_5);
             lv_name_1_0=ruleQualifiedName();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getCubePackageRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"name",
-                      		lv_name_1_0, 
-                      		"QualifiedName");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getCubePackageRule());
+              					}
+              					set(
+              						current,
+              						"name",
+              						lv_name_1_0,
+              						"org.eclipse.xtext.xbase.Xbase.QualifiedName");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -440,7 +493,7 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:148:2: (otherlv_2= '{' ( (lv_imports_3_0= ruleImport ) )* ( (lv_dimensions_4_0= ruleCubeDimension ) )* ( (lv_cubes_5_0= ruleCubeType ) )* otherlv_6= '}' )?
+            // InternalCubeDSL.g:180:3: (otherlv_2= '{' ( (lv_dimensions_3_0= ruleCubeDimension ) )* ( (lv_cubes_4_0= ruleCubeType ) )* otherlv_5= '}' )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -449,107 +502,54 @@
             }
             switch (alt4) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:148:4: otherlv_2= '{' ( (lv_imports_3_0= ruleImport ) )* ( (lv_dimensions_4_0= ruleCubeDimension ) )* ( (lv_cubes_5_0= ruleCubeType ) )* otherlv_6= '}'
+                    // InternalCubeDSL.g:181:4: otherlv_2= '{' ( (lv_dimensions_3_0= ruleCubeDimension ) )* ( (lv_cubes_4_0= ruleCubeType ) )* otherlv_5= '}'
                     {
-                    otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleCubePackage257); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,14,FOLLOW_6); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_2, grammarAccess.getCubePackageAccess().getLeftCurlyBracketKeyword_2_0());
-                          
+                      				newLeafNode(otherlv_2, grammarAccess.getCubePackageAccess().getLeftCurlyBracketKeyword_2_0());
+                      			
                     }
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:152:1: ( (lv_imports_3_0= ruleImport ) )*
-                    loop1:
-                    do {
-                        int alt1=2;
-                        int LA1_0 = input.LA(1);
-
-                        if ( (LA1_0==37) ) {
-                            alt1=1;
-                        }
-
-
-                        switch (alt1) {
-                    	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:153:1: (lv_imports_3_0= ruleImport )
-                    	    {
-                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:153:1: (lv_imports_3_0= ruleImport )
-                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:154:3: lv_imports_3_0= ruleImport
-                    	    {
-                    	    if ( state.backtracking==0 ) {
-                    	       
-                    	      	        newCompositeNode(grammarAccess.getCubePackageAccess().getImportsImportParserRuleCall_2_1_0()); 
-                    	      	    
-                    	    }
-                    	    pushFollow(FOLLOW_ruleImport_in_ruleCubePackage278);
-                    	    lv_imports_3_0=ruleImport();
-
-                    	    state._fsp--;
-                    	    if (state.failed) return current;
-                    	    if ( state.backtracking==0 ) {
-
-                    	      	        if (current==null) {
-                    	      	            current = createModelElementForParent(grammarAccess.getCubePackageRule());
-                    	      	        }
-                    	             		add(
-                    	             			current, 
-                    	             			"imports",
-                    	              		lv_imports_3_0, 
-                    	              		"Import");
-                    	      	        afterParserOrEnumRuleCall();
-                    	      	    
-                    	    }
-
-                    	    }
-
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop1;
-                        }
-                    } while (true);
-
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:170:3: ( (lv_dimensions_4_0= ruleCubeDimension ) )*
+                    // InternalCubeDSL.g:185:4: ( (lv_dimensions_3_0= ruleCubeDimension ) )*
                     loop2:
                     do {
                         int alt2=2;
                         int LA2_0 = input.LA(1);
 
-                        if ( (LA2_0==21) ) {
+                        if ( (LA2_0==20) ) {
                             alt2=1;
                         }
 
 
                         switch (alt2) {
                     	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:171:1: (lv_dimensions_4_0= ruleCubeDimension )
+                    	    // InternalCubeDSL.g:186:5: (lv_dimensions_3_0= ruleCubeDimension )
                     	    {
-                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:171:1: (lv_dimensions_4_0= ruleCubeDimension )
-                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:172:3: lv_dimensions_4_0= ruleCubeDimension
+                    	    // InternalCubeDSL.g:186:5: (lv_dimensions_3_0= ruleCubeDimension )
+                    	    // InternalCubeDSL.g:187:6: lv_dimensions_3_0= ruleCubeDimension
                     	    {
                     	    if ( state.backtracking==0 ) {
-                    	       
-                    	      	        newCompositeNode(grammarAccess.getCubePackageAccess().getDimensionsCubeDimensionParserRuleCall_2_2_0()); 
-                    	      	    
+
+                    	      						newCompositeNode(grammarAccess.getCubePackageAccess().getDimensionsCubeDimensionParserRuleCall_2_1_0());
+                    	      					
                     	    }
-                    	    pushFollow(FOLLOW_ruleCubeDimension_in_ruleCubePackage300);
-                    	    lv_dimensions_4_0=ruleCubeDimension();
+                    	    pushFollow(FOLLOW_6);
+                    	    lv_dimensions_3_0=ruleCubeDimension();
 
                     	    state._fsp--;
                     	    if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
-                    	      	        if (current==null) {
-                    	      	            current = createModelElementForParent(grammarAccess.getCubePackageRule());
-                    	      	        }
-                    	             		add(
-                    	             			current, 
-                    	             			"dimensions",
-                    	              		lv_dimensions_4_0, 
-                    	              		"CubeDimension");
-                    	      	        afterParserOrEnumRuleCall();
-                    	      	    
+                    	      						if (current==null) {
+                    	      							current = createModelElementForParent(grammarAccess.getCubePackageRule());
+                    	      						}
+                    	      						add(
+                    	      							current,
+                    	      							"dimensions",
+                    	      							lv_dimensions_3_0,
+                    	      							"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeDimension");
+                    	      						afterParserOrEnumRuleCall();
+                    	      					
                     	    }
 
                     	    }
@@ -563,7 +563,7 @@
                         }
                     } while (true);
 
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:188:3: ( (lv_cubes_5_0= ruleCubeType ) )*
+                    // InternalCubeDSL.g:204:4: ( (lv_cubes_4_0= ruleCubeType ) )*
                     loop3:
                     do {
                         int alt3=2;
@@ -576,33 +576,33 @@
 
                         switch (alt3) {
                     	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:189:1: (lv_cubes_5_0= ruleCubeType )
+                    	    // InternalCubeDSL.g:205:5: (lv_cubes_4_0= ruleCubeType )
                     	    {
-                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:189:1: (lv_cubes_5_0= ruleCubeType )
-                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:190:3: lv_cubes_5_0= ruleCubeType
+                    	    // InternalCubeDSL.g:205:5: (lv_cubes_4_0= ruleCubeType )
+                    	    // InternalCubeDSL.g:206:6: lv_cubes_4_0= ruleCubeType
                     	    {
                     	    if ( state.backtracking==0 ) {
-                    	       
-                    	      	        newCompositeNode(grammarAccess.getCubePackageAccess().getCubesCubeTypeParserRuleCall_2_3_0()); 
-                    	      	    
+
+                    	      						newCompositeNode(grammarAccess.getCubePackageAccess().getCubesCubeTypeParserRuleCall_2_2_0());
+                    	      					
                     	    }
-                    	    pushFollow(FOLLOW_ruleCubeType_in_ruleCubePackage322);
-                    	    lv_cubes_5_0=ruleCubeType();
+                    	    pushFollow(FOLLOW_7);
+                    	    lv_cubes_4_0=ruleCubeType();
 
                     	    state._fsp--;
                     	    if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
-                    	      	        if (current==null) {
-                    	      	            current = createModelElementForParent(grammarAccess.getCubePackageRule());
-                    	      	        }
-                    	             		add(
-                    	             			current, 
-                    	             			"cubes",
-                    	              		lv_cubes_5_0, 
-                    	              		"CubeType");
-                    	      	        afterParserOrEnumRuleCall();
-                    	      	    
+                    	      						if (current==null) {
+                    	      							current = createModelElementForParent(grammarAccess.getCubePackageRule());
+                    	      						}
+                    	      						add(
+                    	      							current,
+                    	      							"cubes",
+                    	      							lv_cubes_4_0,
+                    	      							"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeType");
+                    	      						afterParserOrEnumRuleCall();
+                    	      					
                     	    }
 
                     	    }
@@ -616,11 +616,11 @@
                         }
                     } while (true);
 
-                    otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleCubePackage335); if (state.failed) return current;
+                    otherlv_5=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_6, grammarAccess.getCubePackageAccess().getRightCurlyBracketKeyword_2_4());
-                          
+                      				newLeafNode(otherlv_5, grammarAccess.getCubePackageAccess().getRightCurlyBracketKeyword_2_3());
+                      			
                     }
 
                     }
@@ -635,14 +635,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -651,7 +653,7 @@
 
 
     // $ANTLR start "entryRuleCubeType"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:218:1: entryRuleCubeType returns [EObject current=null] : iv_ruleCubeType= ruleCubeType EOF ;
+    // InternalCubeDSL.g:232:1: entryRuleCubeType returns [EObject current=null] : iv_ruleCubeType= ruleCubeType EOF ;
     public final EObject entryRuleCubeType() throws RecognitionException {
         EObject current = null;
 
@@ -659,13 +661,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:219:2: (iv_ruleCubeType= ruleCubeType EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:220:2: iv_ruleCubeType= ruleCubeType EOF
+            // InternalCubeDSL.g:232:49: (iv_ruleCubeType= ruleCubeType EOF )
+            // InternalCubeDSL.g:233:2: iv_ruleCubeType= ruleCubeType EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getCubeTypeRule()); 
             }
-            pushFollow(FOLLOW_ruleCubeType_in_entryRuleCubeType373);
+            pushFollow(FOLLOW_1);
             iv_ruleCubeType=ruleCubeType();
 
             state._fsp--;
@@ -673,16 +675,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleCubeType; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeType383); 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;
@@ -691,7 +693,7 @@
 
 
     // $ANTLR start "ruleCubeType"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:227:1: ruleCubeType returns [EObject current=null] : (otherlv_0= 'cube' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) ) )? otherlv_4= '{' ( (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity ) ) otherlv_6= '}' ) ;
+    // InternalCubeDSL.g:239:1: ruleCubeType returns [EObject current=null] : (otherlv_0= 'cube' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) ) )? otherlv_4= '{' ( (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity ) ) otherlv_6= '}' ) ;
     public final EObject ruleCubeType() throws RecognitionException {
         EObject current = null;
 
@@ -704,44 +706,45 @@
         EObject lv_cubeTypeEntity_5_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:230:28: ( (otherlv_0= 'cube' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) ) )? otherlv_4= '{' ( (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity ) ) otherlv_6= '}' ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:231:1: (otherlv_0= 'cube' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) ) )? otherlv_4= '{' ( (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity ) ) otherlv_6= '}' )
+            // InternalCubeDSL.g:245:2: ( (otherlv_0= 'cube' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) ) )? otherlv_4= '{' ( (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity ) ) otherlv_6= '}' ) )
+            // InternalCubeDSL.g:246:2: (otherlv_0= 'cube' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) ) )? otherlv_4= '{' ( (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity ) ) otherlv_6= '}' )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:231:1: (otherlv_0= 'cube' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) ) )? otherlv_4= '{' ( (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity ) ) otherlv_6= '}' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:231:3: otherlv_0= 'cube' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) ) )? otherlv_4= '{' ( (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity ) ) otherlv_6= '}'
+            // InternalCubeDSL.g:246:2: (otherlv_0= 'cube' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) ) )? otherlv_4= '{' ( (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity ) ) otherlv_6= '}' )
+            // InternalCubeDSL.g:247:3: otherlv_0= 'cube' ( (lv_name_1_0= RULE_ID ) ) ( ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) ) )? otherlv_4= '{' ( (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity ) ) otherlv_6= '}'
             {
-            otherlv_0=(Token)match(input,16,FOLLOW_16_in_ruleCubeType420); if (state.failed) return current;
+            otherlv_0=(Token)match(input,16,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getCubeTypeAccess().getCubeKeyword_0());
-                  
-            }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:235:1: ( (lv_name_1_0= RULE_ID ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:236:1: (lv_name_1_0= RULE_ID )
-            {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:236:1: (lv_name_1_0= RULE_ID )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:237:3: lv_name_1_0= RULE_ID
-            {
-            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleCubeType437); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              			newLeafNode(lv_name_1_0, grammarAccess.getCubeTypeAccess().getNameIDTerminalRuleCall_1_0()); 
+              			newLeafNode(otherlv_0, grammarAccess.getCubeTypeAccess().getCubeKeyword_0());
               		
             }
+            // InternalCubeDSL.g:251:3: ( (lv_name_1_0= RULE_ID ) )
+            // InternalCubeDSL.g:252:4: (lv_name_1_0= RULE_ID )
+            {
+            // InternalCubeDSL.g:252:4: (lv_name_1_0= RULE_ID )
+            // InternalCubeDSL.g:253:5: lv_name_1_0= RULE_ID
+            {
+            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_8); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElement(grammarAccess.getCubeTypeRule());
-              	        }
-                     		setWithLastConsumed(
-                     			current, 
-                     			"name",
-                      		lv_name_1_0, 
-                      		"ID");
-              	    
+              					newLeafNode(lv_name_1_0, grammarAccess.getCubeTypeAccess().getNameIDTerminalRuleCall_1_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getCubeTypeRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"name",
+              						lv_name_1_0,
+              						"org.eclipse.xtext.xbase.Xtype.ID");
+              				
             }
 
             }
@@ -749,7 +752,7 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:253:2: ( ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) ) )?
+            // InternalCubeDSL.g:269:3: ( ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) ) )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
@@ -758,27 +761,27 @@
             }
             switch (alt5) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:253:3: ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) )
+                    // InternalCubeDSL.g:270:4: ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) ) ( (lv_defaultMeasureValue_3_0= RULE_STRING ) )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:253:3: ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:254:1: (lv_defaultMeasure_2_0= 'defaultMeasure' )
+                    // InternalCubeDSL.g:270:4: ( (lv_defaultMeasure_2_0= 'defaultMeasure' ) )
+                    // InternalCubeDSL.g:271:5: (lv_defaultMeasure_2_0= 'defaultMeasure' )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:254:1: (lv_defaultMeasure_2_0= 'defaultMeasure' )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:255:3: lv_defaultMeasure_2_0= 'defaultMeasure'
+                    // InternalCubeDSL.g:271:5: (lv_defaultMeasure_2_0= 'defaultMeasure' )
+                    // InternalCubeDSL.g:272:6: lv_defaultMeasure_2_0= 'defaultMeasure'
                     {
-                    lv_defaultMeasure_2_0=(Token)match(input,17,FOLLOW_17_in_ruleCubeType461); if (state.failed) return current;
+                    lv_defaultMeasure_2_0=(Token)match(input,17,FOLLOW_9); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              newLeafNode(lv_defaultMeasure_2_0, grammarAccess.getCubeTypeAccess().getDefaultMeasureDefaultMeasureKeyword_2_0_0());
-                          
+                      						newLeafNode(lv_defaultMeasure_2_0, grammarAccess.getCubeTypeAccess().getDefaultMeasureDefaultMeasureKeyword_2_0_0());
+                      					
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getCubeTypeRule());
-                      	        }
-                             		setWithLastConsumed(current, "defaultMeasure", true, "defaultMeasure");
-                      	    
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getCubeTypeRule());
+                      						}
+                      						setWithLastConsumed(current, "defaultMeasure", true, "defaultMeasure");
+                      					
                     }
 
                     }
@@ -786,29 +789,29 @@
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:268:2: ( (lv_defaultMeasureValue_3_0= RULE_STRING ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:269:1: (lv_defaultMeasureValue_3_0= RULE_STRING )
+                    // InternalCubeDSL.g:284:4: ( (lv_defaultMeasureValue_3_0= RULE_STRING ) )
+                    // InternalCubeDSL.g:285:5: (lv_defaultMeasureValue_3_0= RULE_STRING )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:269:1: (lv_defaultMeasureValue_3_0= RULE_STRING )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:270:3: lv_defaultMeasureValue_3_0= RULE_STRING
+                    // InternalCubeDSL.g:285:5: (lv_defaultMeasureValue_3_0= RULE_STRING )
+                    // InternalCubeDSL.g:286:6: lv_defaultMeasureValue_3_0= RULE_STRING
                     {
-                    lv_defaultMeasureValue_3_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleCubeType491); if (state.failed) return current;
+                    lv_defaultMeasureValue_3_0=(Token)match(input,RULE_STRING,FOLLOW_10); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      			newLeafNode(lv_defaultMeasureValue_3_0, grammarAccess.getCubeTypeAccess().getDefaultMeasureValueSTRINGTerminalRuleCall_2_1_0()); 
-                      		
+                      						newLeafNode(lv_defaultMeasureValue_3_0, grammarAccess.getCubeTypeAccess().getDefaultMeasureValueSTRINGTerminalRuleCall_2_1_0());
+                      					
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getCubeTypeRule());
-                      	        }
-                             		setWithLastConsumed(
-                             			current, 
-                             			"defaultMeasureValue",
-                              		lv_defaultMeasureValue_3_0, 
-                              		"STRING");
-                      	    
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getCubeTypeRule());
+                      						}
+                      						setWithLastConsumed(
+                      							current,
+                      							"defaultMeasureValue",
+                      							lv_defaultMeasureValue_3_0,
+                      							"org.eclipse.xtext.xbase.Xtype.STRING");
+                      					
                     }
 
                     }
@@ -822,40 +825,40 @@
 
             }
 
-            otherlv_4=(Token)match(input,14,FOLLOW_14_in_ruleCubeType510); if (state.failed) return current;
+            otherlv_4=(Token)match(input,14,FOLLOW_11); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_4, grammarAccess.getCubeTypeAccess().getLeftCurlyBracketKeyword_3());
-                  
+              			newLeafNode(otherlv_4, grammarAccess.getCubeTypeAccess().getLeftCurlyBracketKeyword_3());
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:290:1: ( (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:291:1: (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity )
+            // InternalCubeDSL.g:307:3: ( (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity ) )
+            // InternalCubeDSL.g:308:4: (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:291:1: (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:292:3: lv_cubeTypeEntity_5_0= ruleCubeTypeEntity
+            // InternalCubeDSL.g:308:4: (lv_cubeTypeEntity_5_0= ruleCubeTypeEntity )
+            // InternalCubeDSL.g:309:5: lv_cubeTypeEntity_5_0= ruleCubeTypeEntity
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getCubeTypeAccess().getCubeTypeEntityCubeTypeEntityParserRuleCall_4_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getCubeTypeAccess().getCubeTypeEntityCubeTypeEntityParserRuleCall_4_0());
+              				
             }
-            pushFollow(FOLLOW_ruleCubeTypeEntity_in_ruleCubeType531);
+            pushFollow(FOLLOW_12);
             lv_cubeTypeEntity_5_0=ruleCubeTypeEntity();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getCubeTypeRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"cubeTypeEntity",
-                      		lv_cubeTypeEntity_5_0, 
-                      		"CubeTypeEntity");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getCubeTypeRule());
+              					}
+              					set(
+              						current,
+              						"cubeTypeEntity",
+              						lv_cubeTypeEntity_5_0,
+              						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeTypeEntity");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -863,11 +866,11 @@
 
             }
 
-            otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleCubeType543); if (state.failed) return current;
+            otherlv_6=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_6, grammarAccess.getCubeTypeAccess().getRightCurlyBracketKeyword_5());
-                  
+              			newLeafNode(otherlv_6, grammarAccess.getCubeTypeAccess().getRightCurlyBracketKeyword_5());
+              		
             }
 
             }
@@ -876,14 +879,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -892,7 +897,7 @@
 
 
     // $ANTLR start "entryRuleCubeDimensionUsage"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:320:1: entryRuleCubeDimensionUsage returns [EObject current=null] : iv_ruleCubeDimensionUsage= ruleCubeDimensionUsage EOF ;
+    // InternalCubeDSL.g:334:1: entryRuleCubeDimensionUsage returns [EObject current=null] : iv_ruleCubeDimensionUsage= ruleCubeDimensionUsage EOF ;
     public final EObject entryRuleCubeDimensionUsage() throws RecognitionException {
         EObject current = null;
 
@@ -900,13 +905,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:321:2: (iv_ruleCubeDimensionUsage= ruleCubeDimensionUsage EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:322:2: iv_ruleCubeDimensionUsage= ruleCubeDimensionUsage EOF
+            // InternalCubeDSL.g:334:59: (iv_ruleCubeDimensionUsage= ruleCubeDimensionUsage EOF )
+            // InternalCubeDSL.g:335:2: iv_ruleCubeDimensionUsage= ruleCubeDimensionUsage EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getCubeDimensionUsageRule()); 
             }
-            pushFollow(FOLLOW_ruleCubeDimensionUsage_in_entryRuleCubeDimensionUsage579);
+            pushFollow(FOLLOW_1);
             iv_ruleCubeDimensionUsage=ruleCubeDimensionUsage();
 
             state._fsp--;
@@ -914,16 +919,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleCubeDimensionUsage; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeDimensionUsage589); 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;
@@ -932,48 +937,48 @@
 
 
     // $ANTLR start "ruleCubeDimensionUsage"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:329:1: ruleCubeDimensionUsage returns [EObject current=null] : (otherlv_0= 'dimensionUsage' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'over' ( ( ruleLFQN ) ) otherlv_4= ';' ) ;
+    // InternalCubeDSL.g:341:1: ruleCubeDimensionUsage returns [EObject current=null] : (otherlv_0= 'dimensionUsage' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'over' ( ( ruleLFQN ) ) ) ;
     public final EObject ruleCubeDimensionUsage() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_0=null;
         Token otherlv_1=null;
         Token otherlv_2=null;
-        Token otherlv_4=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:332:28: ( (otherlv_0= 'dimensionUsage' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'over' ( ( ruleLFQN ) ) otherlv_4= ';' ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:333:1: (otherlv_0= 'dimensionUsage' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'over' ( ( ruleLFQN ) ) otherlv_4= ';' )
+            // InternalCubeDSL.g:347:2: ( (otherlv_0= 'dimensionUsage' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'over' ( ( ruleLFQN ) ) ) )
+            // InternalCubeDSL.g:348:2: (otherlv_0= 'dimensionUsage' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'over' ( ( ruleLFQN ) ) )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:333:1: (otherlv_0= 'dimensionUsage' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'over' ( ( ruleLFQN ) ) otherlv_4= ';' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:333:3: otherlv_0= 'dimensionUsage' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'over' ( ( ruleLFQN ) ) otherlv_4= ';'
+            // InternalCubeDSL.g:348:2: (otherlv_0= 'dimensionUsage' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'over' ( ( ruleLFQN ) ) )
+            // InternalCubeDSL.g:349:3: otherlv_0= 'dimensionUsage' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'over' ( ( ruleLFQN ) )
             {
-            otherlv_0=(Token)match(input,18,FOLLOW_18_in_ruleCubeDimensionUsage626); if (state.failed) return current;
+            otherlv_0=(Token)match(input,18,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getCubeDimensionUsageAccess().getDimensionUsageKeyword_0());
-                  
+              			newLeafNode(otherlv_0, grammarAccess.getCubeDimensionUsageAccess().getDimensionUsageKeyword_0());
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:337:1: ( (otherlv_1= RULE_ID ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:338:1: (otherlv_1= RULE_ID )
+            // InternalCubeDSL.g:353:3: ( (otherlv_1= RULE_ID ) )
+            // InternalCubeDSL.g:354:4: (otherlv_1= RULE_ID )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:338:1: (otherlv_1= RULE_ID )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:339:3: otherlv_1= RULE_ID
+            // InternalCubeDSL.g:354:4: (otherlv_1= RULE_ID )
+            // InternalCubeDSL.g:355:5: otherlv_1= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getCubeDimensionUsageRule());
-              	        }
-                      
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getCubeDimensionUsageRule());
+              					}
+              				
             }
-            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleCubeDimensionUsage646); if (state.failed) return current;
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_13); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              		newLeafNode(otherlv_1, grammarAccess.getCubeDimensionUsageAccess().getSourceValueCubeDimensionCrossReference_1_0()); 
-              	
+              					newLeafNode(otherlv_1, grammarAccess.getCubeDimensionUsageAccess().getSourceValueCubeDimensionCrossReference_1_0());
+              				
             }
 
             }
@@ -981,39 +986,39 @@
 
             }
 
-            otherlv_2=(Token)match(input,19,FOLLOW_19_in_ruleCubeDimensionUsage658); if (state.failed) return current;
+            otherlv_2=(Token)match(input,19,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_2, grammarAccess.getCubeDimensionUsageAccess().getOverKeyword_2());
-                  
+              			newLeafNode(otherlv_2, grammarAccess.getCubeDimensionUsageAccess().getOverKeyword_2());
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:354:1: ( ( ruleLFQN ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:355:1: ( ruleLFQN )
+            // InternalCubeDSL.g:370:3: ( ( ruleLFQN ) )
+            // InternalCubeDSL.g:371:4: ( ruleLFQN )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:355:1: ( ruleLFQN )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:356:3: ruleLFQN
+            // InternalCubeDSL.g:371:4: ( ruleLFQN )
+            // InternalCubeDSL.g:372:5: ruleLFQN
             {
             if ( state.backtracking==0 ) {
 
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getCubeDimensionUsageRule());
-              	        }
-                      
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getCubeDimensionUsageRule());
+              					}
+              				
             }
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getCubeDimensionUsageAccess().getOverValueLEntityFeatureCrossReference_3_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getCubeDimensionUsageAccess().getOverValueLEntityFeatureCrossReference_3_0());
+              				
             }
-            pushFollow(FOLLOW_ruleLFQN_in_ruleCubeDimensionUsage681);
+            pushFollow(FOLLOW_2);
             ruleLFQN();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-              	        afterParserOrEnumRuleCall();
-              	    
+
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -1021,12 +1026,6 @@
 
             }
 
-            otherlv_4=(Token)match(input,20,FOLLOW_20_in_ruleCubeDimensionUsage693); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-                  	newLeafNode(otherlv_4, grammarAccess.getCubeDimensionUsageAccess().getSemicolonKeyword_4());
-                  
-            }
 
             }
 
@@ -1034,14 +1033,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -1050,7 +1051,7 @@
 
 
     // $ANTLR start "entryRuleCubeDimension"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:381:1: entryRuleCubeDimension returns [EObject current=null] : iv_ruleCubeDimension= ruleCubeDimension EOF ;
+    // InternalCubeDSL.g:390:1: entryRuleCubeDimension returns [EObject current=null] : iv_ruleCubeDimension= ruleCubeDimension EOF ;
     public final EObject entryRuleCubeDimension() throws RecognitionException {
         EObject current = null;
 
@@ -1058,13 +1059,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:382:2: (iv_ruleCubeDimension= ruleCubeDimension EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:383:2: iv_ruleCubeDimension= ruleCubeDimension EOF
+            // InternalCubeDSL.g:390:54: (iv_ruleCubeDimension= ruleCubeDimension EOF )
+            // InternalCubeDSL.g:391:2: iv_ruleCubeDimension= ruleCubeDimension EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getCubeDimensionRule()); 
             }
-            pushFollow(FOLLOW_ruleCubeDimension_in_entryRuleCubeDimension729);
+            pushFollow(FOLLOW_1);
             iv_ruleCubeDimension=ruleCubeDimension();
 
             state._fsp--;
@@ -1072,16 +1073,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleCubeDimension; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeDimension739); 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;
@@ -1090,7 +1091,7 @@
 
 
     // $ANTLR start "ruleCubeDimension"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:390:1: ruleCubeDimension returns [EObject current=null] : (otherlv_0= 'dimension' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_typeTime_2_0= 'typeTime' ) )? otherlv_3= '{' ( (lv_hierarchies_4_0= ruleCubeHierarchy ) )* otherlv_5= '}' ) ;
+    // InternalCubeDSL.g:397:1: ruleCubeDimension returns [EObject current=null] : (otherlv_0= 'dimension' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_typeTime_2_0= 'typeTime' ) )? otherlv_3= '{' ( (lv_hierarchies_4_0= ruleCubeHierarchy ) )* otherlv_5= '}' ) ;
     public final EObject ruleCubeDimension() throws RecognitionException {
         EObject current = null;
 
@@ -1103,49 +1104,50 @@
         EObject lv_hierarchies_4_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:393:28: ( (otherlv_0= 'dimension' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_typeTime_2_0= 'typeTime' ) )? otherlv_3= '{' ( (lv_hierarchies_4_0= ruleCubeHierarchy ) )* otherlv_5= '}' ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:394:1: (otherlv_0= 'dimension' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_typeTime_2_0= 'typeTime' ) )? otherlv_3= '{' ( (lv_hierarchies_4_0= ruleCubeHierarchy ) )* otherlv_5= '}' )
+            // InternalCubeDSL.g:403:2: ( (otherlv_0= 'dimension' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_typeTime_2_0= 'typeTime' ) )? otherlv_3= '{' ( (lv_hierarchies_4_0= ruleCubeHierarchy ) )* otherlv_5= '}' ) )
+            // InternalCubeDSL.g:404:2: (otherlv_0= 'dimension' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_typeTime_2_0= 'typeTime' ) )? otherlv_3= '{' ( (lv_hierarchies_4_0= ruleCubeHierarchy ) )* otherlv_5= '}' )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:394:1: (otherlv_0= 'dimension' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_typeTime_2_0= 'typeTime' ) )? otherlv_3= '{' ( (lv_hierarchies_4_0= ruleCubeHierarchy ) )* otherlv_5= '}' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:394:3: otherlv_0= 'dimension' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_typeTime_2_0= 'typeTime' ) )? otherlv_3= '{' ( (lv_hierarchies_4_0= ruleCubeHierarchy ) )* otherlv_5= '}'
+            // InternalCubeDSL.g:404:2: (otherlv_0= 'dimension' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_typeTime_2_0= 'typeTime' ) )? otherlv_3= '{' ( (lv_hierarchies_4_0= ruleCubeHierarchy ) )* otherlv_5= '}' )
+            // InternalCubeDSL.g:405:3: otherlv_0= 'dimension' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_typeTime_2_0= 'typeTime' ) )? otherlv_3= '{' ( (lv_hierarchies_4_0= ruleCubeHierarchy ) )* otherlv_5= '}'
             {
-            otherlv_0=(Token)match(input,21,FOLLOW_21_in_ruleCubeDimension776); if (state.failed) return current;
+            otherlv_0=(Token)match(input,20,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getCubeDimensionAccess().getDimensionKeyword_0());
-                  
+              			newLeafNode(otherlv_0, grammarAccess.getCubeDimensionAccess().getDimensionKeyword_0());
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:398:1: ( (lv_name_1_0= ruleTRANSLATABLEID ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:399:1: (lv_name_1_0= ruleTRANSLATABLEID )
+            // InternalCubeDSL.g:409:3: ( (lv_name_1_0= ruleTRANSLATABLEID ) )
+            // InternalCubeDSL.g:410:4: (lv_name_1_0= ruleTRANSLATABLEID )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:399:1: (lv_name_1_0= ruleTRANSLATABLEID )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:400:3: lv_name_1_0= ruleTRANSLATABLEID
+            // InternalCubeDSL.g:410:4: (lv_name_1_0= ruleTRANSLATABLEID )
+            // InternalCubeDSL.g:411:5: lv_name_1_0= ruleTRANSLATABLEID
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getCubeDimensionAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getCubeDimensionAccess().getNameTRANSLATABLEIDParserRuleCall_1_0());
+              				
             }
-            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_ruleCubeDimension797);
+            pushFollow(FOLLOW_14);
             lv_name_1_0=ruleTRANSLATABLEID();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getCubeDimensionRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"name",
-                      		lv_name_1_0, 
-                      		"TRANSLATABLEID");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getCubeDimensionRule());
+              					}
+              					set(
+              						current,
+              						"name",
+              						lv_name_1_0,
+              						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.TRANSLATABLEID");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -1153,33 +1155,33 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:416:2: ( (lv_typeTime_2_0= 'typeTime' ) )?
+            // InternalCubeDSL.g:428:3: ( (lv_typeTime_2_0= 'typeTime' ) )?
             int alt6=2;
             int LA6_0 = input.LA(1);
 
-            if ( (LA6_0==22) ) {
+            if ( (LA6_0==21) ) {
                 alt6=1;
             }
             switch (alt6) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:417:1: (lv_typeTime_2_0= 'typeTime' )
+                    // InternalCubeDSL.g:429:4: (lv_typeTime_2_0= 'typeTime' )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:417:1: (lv_typeTime_2_0= 'typeTime' )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:418:3: lv_typeTime_2_0= 'typeTime'
+                    // InternalCubeDSL.g:429:4: (lv_typeTime_2_0= 'typeTime' )
+                    // InternalCubeDSL.g:430:5: lv_typeTime_2_0= 'typeTime'
                     {
-                    lv_typeTime_2_0=(Token)match(input,22,FOLLOW_22_in_ruleCubeDimension815); if (state.failed) return current;
+                    lv_typeTime_2_0=(Token)match(input,21,FOLLOW_10); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              newLeafNode(lv_typeTime_2_0, grammarAccess.getCubeDimensionAccess().getTypeTimeTypeTimeKeyword_2_0());
-                          
+                      					newLeafNode(lv_typeTime_2_0, grammarAccess.getCubeDimensionAccess().getTypeTimeTypeTimeKeyword_2_0());
+                      				
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getCubeDimensionRule());
-                      	        }
-                             		setWithLastConsumed(current, "typeTime", true, "typeTime");
-                      	    
+                      					if (current==null) {
+                      						current = createModelElement(grammarAccess.getCubeDimensionRule());
+                      					}
+                      					setWithLastConsumed(current, "typeTime", true, "typeTime");
+                      				
                     }
 
                     }
@@ -1190,52 +1192,52 @@
 
             }
 
-            otherlv_3=(Token)match(input,14,FOLLOW_14_in_ruleCubeDimension841); if (state.failed) return current;
+            otherlv_3=(Token)match(input,14,FOLLOW_15); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_3, grammarAccess.getCubeDimensionAccess().getLeftCurlyBracketKeyword_3());
-                  
+              			newLeafNode(otherlv_3, grammarAccess.getCubeDimensionAccess().getLeftCurlyBracketKeyword_3());
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:435:1: ( (lv_hierarchies_4_0= ruleCubeHierarchy ) )*
+            // InternalCubeDSL.g:446:3: ( (lv_hierarchies_4_0= ruleCubeHierarchy ) )*
             loop7:
             do {
                 int alt7=2;
                 int LA7_0 = input.LA(1);
 
-                if ( (LA7_0==23) ) {
+                if ( (LA7_0==22) ) {
                     alt7=1;
                 }
 
 
                 switch (alt7) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:436:1: (lv_hierarchies_4_0= ruleCubeHierarchy )
+            	    // InternalCubeDSL.g:447:4: (lv_hierarchies_4_0= ruleCubeHierarchy )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:436:1: (lv_hierarchies_4_0= ruleCubeHierarchy )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:437:3: lv_hierarchies_4_0= ruleCubeHierarchy
+            	    // InternalCubeDSL.g:447:4: (lv_hierarchies_4_0= ruleCubeHierarchy )
+            	    // InternalCubeDSL.g:448:5: lv_hierarchies_4_0= ruleCubeHierarchy
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getCubeDimensionAccess().getHierarchiesCubeHierarchyParserRuleCall_4_0()); 
-            	      	    
+
+            	      					newCompositeNode(grammarAccess.getCubeDimensionAccess().getHierarchiesCubeHierarchyParserRuleCall_4_0());
+            	      				
             	    }
-            	    pushFollow(FOLLOW_ruleCubeHierarchy_in_ruleCubeDimension862);
+            	    pushFollow(FOLLOW_15);
             	    lv_hierarchies_4_0=ruleCubeHierarchy();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getCubeDimensionRule());
-            	      	        }
-            	             		add(
-            	             			current, 
-            	             			"hierarchies",
-            	              		lv_hierarchies_4_0, 
-            	              		"CubeHierarchy");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      					if (current==null) {
+            	      						current = createModelElementForParent(grammarAccess.getCubeDimensionRule());
+            	      					}
+            	      					add(
+            	      						current,
+            	      						"hierarchies",
+            	      						lv_hierarchies_4_0,
+            	      						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeHierarchy");
+            	      					afterParserOrEnumRuleCall();
+            	      				
             	    }
 
             	    }
@@ -1249,11 +1251,11 @@
                 }
             } while (true);
 
-            otherlv_5=(Token)match(input,15,FOLLOW_15_in_ruleCubeDimension875); if (state.failed) return current;
+            otherlv_5=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_5, grammarAccess.getCubeDimensionAccess().getRightCurlyBracketKeyword_5());
-                  
+              			newLeafNode(otherlv_5, grammarAccess.getCubeDimensionAccess().getRightCurlyBracketKeyword_5());
+              		
             }
 
             }
@@ -1262,14 +1264,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -1278,7 +1282,7 @@
 
 
     // $ANTLR start "entryRuleCubeHierarchy"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:465:1: entryRuleCubeHierarchy returns [EObject current=null] : iv_ruleCubeHierarchy= ruleCubeHierarchy EOF ;
+    // InternalCubeDSL.g:473:1: entryRuleCubeHierarchy returns [EObject current=null] : iv_ruleCubeHierarchy= ruleCubeHierarchy EOF ;
     public final EObject entryRuleCubeHierarchy() throws RecognitionException {
         EObject current = null;
 
@@ -1286,13 +1290,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:466:2: (iv_ruleCubeHierarchy= ruleCubeHierarchy EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:467:2: iv_ruleCubeHierarchy= ruleCubeHierarchy EOF
+            // InternalCubeDSL.g:473:54: (iv_ruleCubeHierarchy= ruleCubeHierarchy EOF )
+            // InternalCubeDSL.g:474:2: iv_ruleCubeHierarchy= ruleCubeHierarchy EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getCubeHierarchyRule()); 
             }
-            pushFollow(FOLLOW_ruleCubeHierarchy_in_entryRuleCubeHierarchy911);
+            pushFollow(FOLLOW_1);
             iv_ruleCubeHierarchy=ruleCubeHierarchy();
 
             state._fsp--;
@@ -1300,16 +1304,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleCubeHierarchy; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeHierarchy921); 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;
@@ -1318,7 +1322,7 @@
 
 
     // $ANTLR start "ruleCubeHierarchy"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:474:1: ruleCubeHierarchy returns [EObject current=null] : ( () otherlv_1= 'hierarchy' ( (lv_name_2_0= ruleTRANSLATABLEID ) )? ( (lv_hasAll_3_0= 'hasAll' ) )? ( ( (lv_allMemberName_4_0= 'allMemberName=' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) ) )? ( ( (lv_defaultMember_6_0= 'defaultMember=' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) ) )? otherlv_8= '{' ( (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity ) ) otherlv_10= '}' ) ;
+    // InternalCubeDSL.g:480:1: ruleCubeHierarchy returns [EObject current=null] : ( () otherlv_1= 'hierarchy' ( (lv_name_2_0= ruleTRANSLATABLEID ) )? ( (lv_hasAll_3_0= 'hasAll' ) )? ( ( (lv_allMemberName_4_0= 'allMemberName' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) ) )? ( ( (lv_defaultMember_6_0= 'defaultMember' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) ) )? otherlv_8= '{' ( (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity ) ) otherlv_10= '}' ) ;
     public final EObject ruleCubeHierarchy() throws RecognitionException {
         EObject current = null;
 
@@ -1337,35 +1341,36 @@
         EObject lv_cubeDimEntity_9_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:477:28: ( ( () otherlv_1= 'hierarchy' ( (lv_name_2_0= ruleTRANSLATABLEID ) )? ( (lv_hasAll_3_0= 'hasAll' ) )? ( ( (lv_allMemberName_4_0= 'allMemberName=' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) ) )? ( ( (lv_defaultMember_6_0= 'defaultMember=' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) ) )? otherlv_8= '{' ( (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity ) ) otherlv_10= '}' ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:478:1: ( () otherlv_1= 'hierarchy' ( (lv_name_2_0= ruleTRANSLATABLEID ) )? ( (lv_hasAll_3_0= 'hasAll' ) )? ( ( (lv_allMemberName_4_0= 'allMemberName=' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) ) )? ( ( (lv_defaultMember_6_0= 'defaultMember=' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) ) )? otherlv_8= '{' ( (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity ) ) otherlv_10= '}' )
+            // InternalCubeDSL.g:486:2: ( ( () otherlv_1= 'hierarchy' ( (lv_name_2_0= ruleTRANSLATABLEID ) )? ( (lv_hasAll_3_0= 'hasAll' ) )? ( ( (lv_allMemberName_4_0= 'allMemberName' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) ) )? ( ( (lv_defaultMember_6_0= 'defaultMember' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) ) )? otherlv_8= '{' ( (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity ) ) otherlv_10= '}' ) )
+            // InternalCubeDSL.g:487:2: ( () otherlv_1= 'hierarchy' ( (lv_name_2_0= ruleTRANSLATABLEID ) )? ( (lv_hasAll_3_0= 'hasAll' ) )? ( ( (lv_allMemberName_4_0= 'allMemberName' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) ) )? ( ( (lv_defaultMember_6_0= 'defaultMember' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) ) )? otherlv_8= '{' ( (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity ) ) otherlv_10= '}' )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:478:1: ( () otherlv_1= 'hierarchy' ( (lv_name_2_0= ruleTRANSLATABLEID ) )? ( (lv_hasAll_3_0= 'hasAll' ) )? ( ( (lv_allMemberName_4_0= 'allMemberName=' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) ) )? ( ( (lv_defaultMember_6_0= 'defaultMember=' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) ) )? otherlv_8= '{' ( (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity ) ) otherlv_10= '}' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:478:2: () otherlv_1= 'hierarchy' ( (lv_name_2_0= ruleTRANSLATABLEID ) )? ( (lv_hasAll_3_0= 'hasAll' ) )? ( ( (lv_allMemberName_4_0= 'allMemberName=' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) ) )? ( ( (lv_defaultMember_6_0= 'defaultMember=' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) ) )? otherlv_8= '{' ( (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity ) ) otherlv_10= '}'
+            // InternalCubeDSL.g:487:2: ( () otherlv_1= 'hierarchy' ( (lv_name_2_0= ruleTRANSLATABLEID ) )? ( (lv_hasAll_3_0= 'hasAll' ) )? ( ( (lv_allMemberName_4_0= 'allMemberName' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) ) )? ( ( (lv_defaultMember_6_0= 'defaultMember' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) ) )? otherlv_8= '{' ( (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity ) ) otherlv_10= '}' )
+            // InternalCubeDSL.g:488:3: () otherlv_1= 'hierarchy' ( (lv_name_2_0= ruleTRANSLATABLEID ) )? ( (lv_hasAll_3_0= 'hasAll' ) )? ( ( (lv_allMemberName_4_0= 'allMemberName' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) ) )? ( ( (lv_defaultMember_6_0= 'defaultMember' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) ) )? otherlv_8= '{' ( (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity ) ) otherlv_10= '}'
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:478:2: ()
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:479:5: 
+            // InternalCubeDSL.g:488:3: ()
+            // InternalCubeDSL.g:489:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getCubeHierarchyAccess().getCubeHierarchyAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getCubeHierarchyAccess().getCubeHierarchyAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,23,FOLLOW_23_in_ruleCubeHierarchy967); if (state.failed) return current;
+            otherlv_1=(Token)match(input,22,FOLLOW_16); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getCubeHierarchyAccess().getHierarchyKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getCubeHierarchyAccess().getHierarchyKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:488:1: ( (lv_name_2_0= ruleTRANSLATABLEID ) )?
+            // InternalCubeDSL.g:499:3: ( (lv_name_2_0= ruleTRANSLATABLEID ) )?
             int alt8=2;
             int LA8_0 = input.LA(1);
 
@@ -1374,33 +1379,33 @@
             }
             switch (alt8) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:489:1: (lv_name_2_0= ruleTRANSLATABLEID )
+                    // InternalCubeDSL.g:500:4: (lv_name_2_0= ruleTRANSLATABLEID )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:489:1: (lv_name_2_0= ruleTRANSLATABLEID )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:490:3: lv_name_2_0= ruleTRANSLATABLEID
+                    // InternalCubeDSL.g:500:4: (lv_name_2_0= ruleTRANSLATABLEID )
+                    // InternalCubeDSL.g:501:5: lv_name_2_0= ruleTRANSLATABLEID
                     {
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getCubeHierarchyAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
-                      	    
+
+                      					newCompositeNode(grammarAccess.getCubeHierarchyAccess().getNameTRANSLATABLEIDParserRuleCall_2_0());
+                      				
                     }
-                    pushFollow(FOLLOW_ruleTRANSLATABLEID_in_ruleCubeHierarchy988);
+                    pushFollow(FOLLOW_17);
                     lv_name_2_0=ruleTRANSLATABLEID();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
-                      	        }
-                             		set(
-                             			current, 
-                             			"name",
-                              		lv_name_2_0, 
-                              		"TRANSLATABLEID");
-                      	        afterParserOrEnumRuleCall();
-                      	    
+                      					if (current==null) {
+                      						current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
+                      					}
+                      					set(
+                      						current,
+                      						"name",
+                      						lv_name_2_0,
+                      						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.TRANSLATABLEID");
+                      					afterParserOrEnumRuleCall();
+                      				
                     }
 
                     }
@@ -1411,33 +1416,33 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:506:3: ( (lv_hasAll_3_0= 'hasAll' ) )?
+            // InternalCubeDSL.g:518:3: ( (lv_hasAll_3_0= 'hasAll' ) )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
-            if ( (LA9_0==24) ) {
+            if ( (LA9_0==23) ) {
                 alt9=1;
             }
             switch (alt9) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:507:1: (lv_hasAll_3_0= 'hasAll' )
+                    // InternalCubeDSL.g:519:4: (lv_hasAll_3_0= 'hasAll' )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:507:1: (lv_hasAll_3_0= 'hasAll' )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:508:3: lv_hasAll_3_0= 'hasAll'
+                    // InternalCubeDSL.g:519:4: (lv_hasAll_3_0= 'hasAll' )
+                    // InternalCubeDSL.g:520:5: lv_hasAll_3_0= 'hasAll'
                     {
-                    lv_hasAll_3_0=(Token)match(input,24,FOLLOW_24_in_ruleCubeHierarchy1007); if (state.failed) return current;
+                    lv_hasAll_3_0=(Token)match(input,23,FOLLOW_18); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              newLeafNode(lv_hasAll_3_0, grammarAccess.getCubeHierarchyAccess().getHasAllHasAllKeyword_3_0());
-                          
+                      					newLeafNode(lv_hasAll_3_0, grammarAccess.getCubeHierarchyAccess().getHasAllHasAllKeyword_3_0());
+                      				
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getCubeHierarchyRule());
-                      	        }
-                             		setWithLastConsumed(current, "hasAll", true, "hasAll");
-                      	    
+                      					if (current==null) {
+                      						current = createModelElement(grammarAccess.getCubeHierarchyRule());
+                      					}
+                      					setWithLastConsumed(current, "hasAll", true, "hasAll");
+                      				
                     }
 
                     }
@@ -1448,36 +1453,36 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:521:3: ( ( (lv_allMemberName_4_0= 'allMemberName=' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) ) )?
+            // InternalCubeDSL.g:532:3: ( ( (lv_allMemberName_4_0= 'allMemberName' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) ) )?
             int alt10=2;
             int LA10_0 = input.LA(1);
 
-            if ( (LA10_0==25) ) {
+            if ( (LA10_0==24) ) {
                 alt10=1;
             }
             switch (alt10) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:521:4: ( (lv_allMemberName_4_0= 'allMemberName=' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) )
+                    // InternalCubeDSL.g:533:4: ( (lv_allMemberName_4_0= 'allMemberName' ) ) ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:521:4: ( (lv_allMemberName_4_0= 'allMemberName=' ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:522:1: (lv_allMemberName_4_0= 'allMemberName=' )
+                    // InternalCubeDSL.g:533:4: ( (lv_allMemberName_4_0= 'allMemberName' ) )
+                    // InternalCubeDSL.g:534:5: (lv_allMemberName_4_0= 'allMemberName' )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:522:1: (lv_allMemberName_4_0= 'allMemberName=' )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:523:3: lv_allMemberName_4_0= 'allMemberName='
+                    // InternalCubeDSL.g:534:5: (lv_allMemberName_4_0= 'allMemberName' )
+                    // InternalCubeDSL.g:535:6: lv_allMemberName_4_0= 'allMemberName'
                     {
-                    lv_allMemberName_4_0=(Token)match(input,25,FOLLOW_25_in_ruleCubeHierarchy1040); if (state.failed) return current;
+                    lv_allMemberName_4_0=(Token)match(input,24,FOLLOW_9); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              newLeafNode(lv_allMemberName_4_0, grammarAccess.getCubeHierarchyAccess().getAllMemberNameAllMemberNameKeyword_4_0_0());
-                          
+                      						newLeafNode(lv_allMemberName_4_0, grammarAccess.getCubeHierarchyAccess().getAllMemberNameAllMemberNameKeyword_4_0_0());
+                      					
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getCubeHierarchyRule());
-                      	        }
-                             		setWithLastConsumed(current, "allMemberName", true, "allMemberName=");
-                      	    
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getCubeHierarchyRule());
+                      						}
+                      						setWithLastConsumed(current, "allMemberName", true, "allMemberName");
+                      					
                     }
 
                     }
@@ -1485,34 +1490,34 @@
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:536:2: ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:537:1: (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING )
+                    // InternalCubeDSL.g:547:4: ( (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING ) )
+                    // InternalCubeDSL.g:548:5: (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:537:1: (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:538:3: lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING
+                    // InternalCubeDSL.g:548:5: (lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING )
+                    // InternalCubeDSL.g:549:6: lv_allMemberNameValue_5_0= ruleTRANSLATABLESTRING
                     {
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getCubeHierarchyAccess().getAllMemberNameValueTRANSLATABLESTRINGParserRuleCall_4_1_0()); 
-                      	    
+
+                      						newCompositeNode(grammarAccess.getCubeHierarchyAccess().getAllMemberNameValueTRANSLATABLESTRINGParserRuleCall_4_1_0());
+                      					
                     }
-                    pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_ruleCubeHierarchy1074);
+                    pushFollow(FOLLOW_19);
                     lv_allMemberNameValue_5_0=ruleTRANSLATABLESTRING();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
-                      	        }
-                             		set(
-                             			current, 
-                             			"allMemberNameValue",
-                              		lv_allMemberNameValue_5_0, 
-                              		"TRANSLATABLESTRING");
-                      	        afterParserOrEnumRuleCall();
-                      	    
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
+                      						}
+                      						set(
+                      							current,
+                      							"allMemberNameValue",
+                      							lv_allMemberNameValue_5_0,
+                      							"org.eclipse.osbp.xtext.cubedsl.CubeDSL.TRANSLATABLESTRING");
+                      						afterParserOrEnumRuleCall();
+                      					
                     }
 
                     }
@@ -1526,36 +1531,36 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:554:4: ( ( (lv_defaultMember_6_0= 'defaultMember=' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) ) )?
+            // InternalCubeDSL.g:567:3: ( ( (lv_defaultMember_6_0= 'defaultMember' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) ) )?
             int alt11=2;
             int LA11_0 = input.LA(1);
 
-            if ( (LA11_0==26) ) {
+            if ( (LA11_0==25) ) {
                 alt11=1;
             }
             switch (alt11) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:554:5: ( (lv_defaultMember_6_0= 'defaultMember=' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) )
+                    // InternalCubeDSL.g:568:4: ( (lv_defaultMember_6_0= 'defaultMember' ) ) ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:554:5: ( (lv_defaultMember_6_0= 'defaultMember=' ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:555:1: (lv_defaultMember_6_0= 'defaultMember=' )
+                    // InternalCubeDSL.g:568:4: ( (lv_defaultMember_6_0= 'defaultMember' ) )
+                    // InternalCubeDSL.g:569:5: (lv_defaultMember_6_0= 'defaultMember' )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:555:1: (lv_defaultMember_6_0= 'defaultMember=' )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:556:3: lv_defaultMember_6_0= 'defaultMember='
+                    // InternalCubeDSL.g:569:5: (lv_defaultMember_6_0= 'defaultMember' )
+                    // InternalCubeDSL.g:570:6: lv_defaultMember_6_0= 'defaultMember'
                     {
-                    lv_defaultMember_6_0=(Token)match(input,26,FOLLOW_26_in_ruleCubeHierarchy1095); if (state.failed) return current;
+                    lv_defaultMember_6_0=(Token)match(input,25,FOLLOW_9); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              newLeafNode(lv_defaultMember_6_0, grammarAccess.getCubeHierarchyAccess().getDefaultMemberDefaultMemberKeyword_5_0_0());
-                          
+                      						newLeafNode(lv_defaultMember_6_0, grammarAccess.getCubeHierarchyAccess().getDefaultMemberDefaultMemberKeyword_5_0_0());
+                      					
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getCubeHierarchyRule());
-                      	        }
-                             		setWithLastConsumed(current, "defaultMember", true, "defaultMember=");
-                      	    
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getCubeHierarchyRule());
+                      						}
+                      						setWithLastConsumed(current, "defaultMember", true, "defaultMember");
+                      					
                     }
 
                     }
@@ -1563,34 +1568,34 @@
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:569:2: ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:570:1: (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING )
+                    // InternalCubeDSL.g:582:4: ( (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING ) )
+                    // InternalCubeDSL.g:583:5: (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:570:1: (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:571:3: lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING
+                    // InternalCubeDSL.g:583:5: (lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING )
+                    // InternalCubeDSL.g:584:6: lv_defaultMemberValue_7_0= ruleTRANSLATABLESTRING
                     {
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getCubeHierarchyAccess().getDefaultMemberValueTRANSLATABLESTRINGParserRuleCall_5_1_0()); 
-                      	    
+
+                      						newCompositeNode(grammarAccess.getCubeHierarchyAccess().getDefaultMemberValueTRANSLATABLESTRINGParserRuleCall_5_1_0());
+                      					
                     }
-                    pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_ruleCubeHierarchy1129);
+                    pushFollow(FOLLOW_10);
                     lv_defaultMemberValue_7_0=ruleTRANSLATABLESTRING();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
-                      	        }
-                             		set(
-                             			current, 
-                             			"defaultMemberValue",
-                              		lv_defaultMemberValue_7_0, 
-                              		"TRANSLATABLESTRING");
-                      	        afterParserOrEnumRuleCall();
-                      	    
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
+                      						}
+                      						set(
+                      							current,
+                      							"defaultMemberValue",
+                      							lv_defaultMemberValue_7_0,
+                      							"org.eclipse.osbp.xtext.cubedsl.CubeDSL.TRANSLATABLESTRING");
+                      						afterParserOrEnumRuleCall();
+                      					
                     }
 
                     }
@@ -1604,40 +1609,40 @@
 
             }
 
-            otherlv_8=(Token)match(input,14,FOLLOW_14_in_ruleCubeHierarchy1143); if (state.failed) return current;
+            otherlv_8=(Token)match(input,14,FOLLOW_11); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_8, grammarAccess.getCubeHierarchyAccess().getLeftCurlyBracketKeyword_6());
-                  
+              			newLeafNode(otherlv_8, grammarAccess.getCubeHierarchyAccess().getLeftCurlyBracketKeyword_6());
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:591:1: ( (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:592:1: (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity )
+            // InternalCubeDSL.g:606:3: ( (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity ) )
+            // InternalCubeDSL.g:607:4: (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:592:1: (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:593:3: lv_cubeDimEntity_9_0= ruleCubeDimensionEntity
+            // InternalCubeDSL.g:607:4: (lv_cubeDimEntity_9_0= ruleCubeDimensionEntity )
+            // InternalCubeDSL.g:608:5: lv_cubeDimEntity_9_0= ruleCubeDimensionEntity
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getCubeHierarchyAccess().getCubeDimEntityCubeDimensionEntityParserRuleCall_7_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getCubeHierarchyAccess().getCubeDimEntityCubeDimensionEntityParserRuleCall_7_0());
+              				
             }
-            pushFollow(FOLLOW_ruleCubeDimensionEntity_in_ruleCubeHierarchy1164);
+            pushFollow(FOLLOW_12);
             lv_cubeDimEntity_9_0=ruleCubeDimensionEntity();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"cubeDimEntity",
-                      		lv_cubeDimEntity_9_0, 
-                      		"CubeDimensionEntity");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getCubeHierarchyRule());
+              					}
+              					set(
+              						current,
+              						"cubeDimEntity",
+              						lv_cubeDimEntity_9_0,
+              						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeDimensionEntity");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -1645,11 +1650,11 @@
 
             }
 
-            otherlv_10=(Token)match(input,15,FOLLOW_15_in_ruleCubeHierarchy1176); if (state.failed) return current;
+            otherlv_10=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_10, grammarAccess.getCubeHierarchyAccess().getRightCurlyBracketKeyword_8());
-                  
+              			newLeafNode(otherlv_10, grammarAccess.getCubeHierarchyAccess().getRightCurlyBracketKeyword_8());
+              		
             }
 
             }
@@ -1658,14 +1663,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -1674,7 +1681,7 @@
 
 
     // $ANTLR start "entryRuleCubeEntity"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:621:1: entryRuleCubeEntity returns [EObject current=null] : iv_ruleCubeEntity= ruleCubeEntity EOF ;
+    // InternalCubeDSL.g:633:1: entryRuleCubeEntity returns [EObject current=null] : iv_ruleCubeEntity= ruleCubeEntity EOF ;
     public final EObject entryRuleCubeEntity() throws RecognitionException {
         EObject current = null;
 
@@ -1682,13 +1689,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:622:2: (iv_ruleCubeEntity= ruleCubeEntity EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:623:2: iv_ruleCubeEntity= ruleCubeEntity EOF
+            // InternalCubeDSL.g:633:51: (iv_ruleCubeEntity= ruleCubeEntity EOF )
+            // InternalCubeDSL.g:634:2: iv_ruleCubeEntity= ruleCubeEntity EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getCubeEntityRule()); 
             }
-            pushFollow(FOLLOW_ruleCubeEntity_in_entryRuleCubeEntity1212);
+            pushFollow(FOLLOW_1);
             iv_ruleCubeEntity=ruleCubeEntity();
 
             state._fsp--;
@@ -1696,16 +1703,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleCubeEntity; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeEntity1222); 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;
@@ -1714,55 +1721,56 @@
 
 
     // $ANTLR start "ruleCubeEntity"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:630:1: ruleCubeEntity returns [EObject current=null] : (otherlv_0= 'entity' ( ( ruleLFQN ) ) ( ( (lv_key_2_0= 'key=' ) ) ( ( ruleLFQN ) ) )? ) ;
+    // InternalCubeDSL.g:640:1: ruleCubeEntity returns [EObject current=null] : (otherlv_0= 'entity' ( ( ruleLFQN ) ) ( ( (lv_key_2_0= 'key' ) ) ( ( ruleLFQN ) ) )? ) ;
     public final EObject ruleCubeEntity() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_0=null;
         Token lv_key_2_0=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:633:28: ( (otherlv_0= 'entity' ( ( ruleLFQN ) ) ( ( (lv_key_2_0= 'key=' ) ) ( ( ruleLFQN ) ) )? ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:634:1: (otherlv_0= 'entity' ( ( ruleLFQN ) ) ( ( (lv_key_2_0= 'key=' ) ) ( ( ruleLFQN ) ) )? )
+            // InternalCubeDSL.g:646:2: ( (otherlv_0= 'entity' ( ( ruleLFQN ) ) ( ( (lv_key_2_0= 'key' ) ) ( ( ruleLFQN ) ) )? ) )
+            // InternalCubeDSL.g:647:2: (otherlv_0= 'entity' ( ( ruleLFQN ) ) ( ( (lv_key_2_0= 'key' ) ) ( ( ruleLFQN ) ) )? )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:634:1: (otherlv_0= 'entity' ( ( ruleLFQN ) ) ( ( (lv_key_2_0= 'key=' ) ) ( ( ruleLFQN ) ) )? )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:634:3: otherlv_0= 'entity' ( ( ruleLFQN ) ) ( ( (lv_key_2_0= 'key=' ) ) ( ( ruleLFQN ) ) )?
+            // InternalCubeDSL.g:647:2: (otherlv_0= 'entity' ( ( ruleLFQN ) ) ( ( (lv_key_2_0= 'key' ) ) ( ( ruleLFQN ) ) )? )
+            // InternalCubeDSL.g:648:3: otherlv_0= 'entity' ( ( ruleLFQN ) ) ( ( (lv_key_2_0= 'key' ) ) ( ( ruleLFQN ) ) )?
             {
-            otherlv_0=(Token)match(input,27,FOLLOW_27_in_ruleCubeEntity1259); if (state.failed) return current;
+            otherlv_0=(Token)match(input,26,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getCubeEntityAccess().getEntityKeyword_0());
-                  
+              			newLeafNode(otherlv_0, grammarAccess.getCubeEntityAccess().getEntityKeyword_0());
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:638:1: ( ( ruleLFQN ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:639:1: ( ruleLFQN )
+            // InternalCubeDSL.g:652:3: ( ( ruleLFQN ) )
+            // InternalCubeDSL.g:653:4: ( ruleLFQN )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:639:1: ( ruleLFQN )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:640:3: ruleLFQN
+            // InternalCubeDSL.g:653:4: ( ruleLFQN )
+            // InternalCubeDSL.g:654:5: ruleLFQN
             {
             if ( state.backtracking==0 ) {
 
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getCubeEntityRule());
-              	        }
-                      
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getCubeEntityRule());
+              					}
+              				
             }
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getCubeEntityAccess().getEntityValueLEntityCrossReference_1_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getCubeEntityAccess().getEntityValueLEntityCrossReference_1_0());
+              				
             }
-            pushFollow(FOLLOW_ruleLFQN_in_ruleCubeEntity1282);
+            pushFollow(FOLLOW_20);
             ruleLFQN();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-              	        afterParserOrEnumRuleCall();
-              	    
+
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -1770,36 +1778,36 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:653:2: ( ( (lv_key_2_0= 'key=' ) ) ( ( ruleLFQN ) ) )?
+            // InternalCubeDSL.g:668:3: ( ( (lv_key_2_0= 'key' ) ) ( ( ruleLFQN ) ) )?
             int alt12=2;
             int LA12_0 = input.LA(1);
 
-            if ( (LA12_0==28) ) {
+            if ( (LA12_0==27) ) {
                 alt12=1;
             }
             switch (alt12) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:653:3: ( (lv_key_2_0= 'key=' ) ) ( ( ruleLFQN ) )
+                    // InternalCubeDSL.g:669:4: ( (lv_key_2_0= 'key' ) ) ( ( ruleLFQN ) )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:653:3: ( (lv_key_2_0= 'key=' ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:654:1: (lv_key_2_0= 'key=' )
+                    // InternalCubeDSL.g:669:4: ( (lv_key_2_0= 'key' ) )
+                    // InternalCubeDSL.g:670:5: (lv_key_2_0= 'key' )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:654:1: (lv_key_2_0= 'key=' )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:655:3: lv_key_2_0= 'key='
+                    // InternalCubeDSL.g:670:5: (lv_key_2_0= 'key' )
+                    // InternalCubeDSL.g:671:6: lv_key_2_0= 'key'
                     {
-                    lv_key_2_0=(Token)match(input,28,FOLLOW_28_in_ruleCubeEntity1301); if (state.failed) return current;
+                    lv_key_2_0=(Token)match(input,27,FOLLOW_4); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              newLeafNode(lv_key_2_0, grammarAccess.getCubeEntityAccess().getKeyKeyKeyword_2_0_0());
-                          
+                      						newLeafNode(lv_key_2_0, grammarAccess.getCubeEntityAccess().getKeyKeyKeyword_2_0_0());
+                      					
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getCubeEntityRule());
-                      	        }
-                             		setWithLastConsumed(current, "key", true, "key=");
-                      	    
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getCubeEntityRule());
+                      						}
+                      						setWithLastConsumed(current, "key", true, "key");
+                      					
                     }
 
                     }
@@ -1807,33 +1815,33 @@
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:668:2: ( ( ruleLFQN ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:669:1: ( ruleLFQN )
+                    // InternalCubeDSL.g:683:4: ( ( ruleLFQN ) )
+                    // InternalCubeDSL.g:684:5: ( ruleLFQN )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:669:1: ( ruleLFQN )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:670:3: ruleLFQN
+                    // InternalCubeDSL.g:684:5: ( ruleLFQN )
+                    // InternalCubeDSL.g:685:6: ruleLFQN
                     {
                     if ( state.backtracking==0 ) {
 
-                      			if (current==null) {
-                      	            current = createModelElement(grammarAccess.getCubeEntityRule());
-                      	        }
-                              
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getCubeEntityRule());
+                      						}
+                      					
                     }
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getCubeEntityAccess().getKeyValueLEntityFeatureCrossReference_2_1_0()); 
-                      	    
+
+                      						newCompositeNode(grammarAccess.getCubeEntityAccess().getKeyValueLEntityFeatureCrossReference_2_1_0());
+                      					
                     }
-                    pushFollow(FOLLOW_ruleLFQN_in_ruleCubeEntity1337);
+                    pushFollow(FOLLOW_2);
                     ruleLFQN();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                      	        afterParserOrEnumRuleCall();
-                      	    
+
+                      						afterParserOrEnumRuleCall();
+                      					
                     }
 
                     }
@@ -1854,14 +1862,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -1870,7 +1880,7 @@
 
 
     // $ANTLR start "entryRuleCubeTypeEntity"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:691:1: entryRuleCubeTypeEntity returns [EObject current=null] : iv_ruleCubeTypeEntity= ruleCubeTypeEntity EOF ;
+    // InternalCubeDSL.g:704:1: entryRuleCubeTypeEntity returns [EObject current=null] : iv_ruleCubeTypeEntity= ruleCubeTypeEntity EOF ;
     public final EObject entryRuleCubeTypeEntity() throws RecognitionException {
         EObject current = null;
 
@@ -1878,13 +1888,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:692:2: (iv_ruleCubeTypeEntity= ruleCubeTypeEntity EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:693:2: iv_ruleCubeTypeEntity= ruleCubeTypeEntity EOF
+            // InternalCubeDSL.g:704:55: (iv_ruleCubeTypeEntity= ruleCubeTypeEntity EOF )
+            // InternalCubeDSL.g:705:2: iv_ruleCubeTypeEntity= ruleCubeTypeEntity EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getCubeTypeEntityRule()); 
             }
-            pushFollow(FOLLOW_ruleCubeTypeEntity_in_entryRuleCubeTypeEntity1375);
+            pushFollow(FOLLOW_1);
             iv_ruleCubeTypeEntity=ruleCubeTypeEntity();
 
             state._fsp--;
@@ -1892,16 +1902,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleCubeTypeEntity; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeTypeEntity1385); 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;
@@ -1910,7 +1920,7 @@
 
 
     // $ANTLR start "ruleCubeTypeEntity"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:700:1: ruleCubeTypeEntity returns [EObject current=null] : ( ( (lv_entityRef_0_0= ruleCubeEntity ) ) otherlv_1= '{' ( (lv_dimensionUsages_2_0= ruleCubeDimensionUsage ) )* ( (lv_measures_3_0= ruleCubeMeasure ) )* otherlv_4= '}' ) ;
+    // InternalCubeDSL.g:711:1: ruleCubeTypeEntity returns [EObject current=null] : ( ( (lv_entityRef_0_0= ruleCubeEntity ) ) otherlv_1= '{' ( (lv_dimensionUsages_2_0= ruleCubeDimensionUsage ) )* ( (lv_measures_3_0= ruleCubeMeasure ) )* otherlv_4= '}' ) ;
     public final EObject ruleCubeTypeEntity() throws RecognitionException {
         EObject current = null;
 
@@ -1923,43 +1933,44 @@
         EObject lv_measures_3_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:703:28: ( ( ( (lv_entityRef_0_0= ruleCubeEntity ) ) otherlv_1= '{' ( (lv_dimensionUsages_2_0= ruleCubeDimensionUsage ) )* ( (lv_measures_3_0= ruleCubeMeasure ) )* otherlv_4= '}' ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:704:1: ( ( (lv_entityRef_0_0= ruleCubeEntity ) ) otherlv_1= '{' ( (lv_dimensionUsages_2_0= ruleCubeDimensionUsage ) )* ( (lv_measures_3_0= ruleCubeMeasure ) )* otherlv_4= '}' )
+            // InternalCubeDSL.g:717:2: ( ( ( (lv_entityRef_0_0= ruleCubeEntity ) ) otherlv_1= '{' ( (lv_dimensionUsages_2_0= ruleCubeDimensionUsage ) )* ( (lv_measures_3_0= ruleCubeMeasure ) )* otherlv_4= '}' ) )
+            // InternalCubeDSL.g:718:2: ( ( (lv_entityRef_0_0= ruleCubeEntity ) ) otherlv_1= '{' ( (lv_dimensionUsages_2_0= ruleCubeDimensionUsage ) )* ( (lv_measures_3_0= ruleCubeMeasure ) )* otherlv_4= '}' )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:704:1: ( ( (lv_entityRef_0_0= ruleCubeEntity ) ) otherlv_1= '{' ( (lv_dimensionUsages_2_0= ruleCubeDimensionUsage ) )* ( (lv_measures_3_0= ruleCubeMeasure ) )* otherlv_4= '}' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:704:2: ( (lv_entityRef_0_0= ruleCubeEntity ) ) otherlv_1= '{' ( (lv_dimensionUsages_2_0= ruleCubeDimensionUsage ) )* ( (lv_measures_3_0= ruleCubeMeasure ) )* otherlv_4= '}'
+            // InternalCubeDSL.g:718:2: ( ( (lv_entityRef_0_0= ruleCubeEntity ) ) otherlv_1= '{' ( (lv_dimensionUsages_2_0= ruleCubeDimensionUsage ) )* ( (lv_measures_3_0= ruleCubeMeasure ) )* otherlv_4= '}' )
+            // InternalCubeDSL.g:719:3: ( (lv_entityRef_0_0= ruleCubeEntity ) ) otherlv_1= '{' ( (lv_dimensionUsages_2_0= ruleCubeDimensionUsage ) )* ( (lv_measures_3_0= ruleCubeMeasure ) )* otherlv_4= '}'
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:704:2: ( (lv_entityRef_0_0= ruleCubeEntity ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:705:1: (lv_entityRef_0_0= ruleCubeEntity )
+            // InternalCubeDSL.g:719:3: ( (lv_entityRef_0_0= ruleCubeEntity ) )
+            // InternalCubeDSL.g:720:4: (lv_entityRef_0_0= ruleCubeEntity )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:705:1: (lv_entityRef_0_0= ruleCubeEntity )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:706:3: lv_entityRef_0_0= ruleCubeEntity
+            // InternalCubeDSL.g:720:4: (lv_entityRef_0_0= ruleCubeEntity )
+            // InternalCubeDSL.g:721:5: lv_entityRef_0_0= ruleCubeEntity
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getCubeTypeEntityAccess().getEntityRefCubeEntityParserRuleCall_0_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getCubeTypeEntityAccess().getEntityRefCubeEntityParserRuleCall_0_0());
+              				
             }
-            pushFollow(FOLLOW_ruleCubeEntity_in_ruleCubeTypeEntity1431);
+            pushFollow(FOLLOW_10);
             lv_entityRef_0_0=ruleCubeEntity();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getCubeTypeEntityRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"entityRef",
-                      		lv_entityRef_0_0, 
-                      		"CubeEntity");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getCubeTypeEntityRule());
+              					}
+              					set(
+              						current,
+              						"entityRef",
+              						lv_entityRef_0_0,
+              						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeEntity");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -1967,13 +1978,13 @@
 
             }
 
-            otherlv_1=(Token)match(input,14,FOLLOW_14_in_ruleCubeTypeEntity1443); if (state.failed) return current;
+            otherlv_1=(Token)match(input,14,FOLLOW_21); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getCubeTypeEntityAccess().getLeftCurlyBracketKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getCubeTypeEntityAccess().getLeftCurlyBracketKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:726:1: ( (lv_dimensionUsages_2_0= ruleCubeDimensionUsage ) )*
+            // InternalCubeDSL.g:742:3: ( (lv_dimensionUsages_2_0= ruleCubeDimensionUsage ) )*
             loop13:
             do {
                 int alt13=2;
@@ -1986,33 +1997,33 @@
 
                 switch (alt13) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:727:1: (lv_dimensionUsages_2_0= ruleCubeDimensionUsage )
+            	    // InternalCubeDSL.g:743:4: (lv_dimensionUsages_2_0= ruleCubeDimensionUsage )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:727:1: (lv_dimensionUsages_2_0= ruleCubeDimensionUsage )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:728:3: lv_dimensionUsages_2_0= ruleCubeDimensionUsage
+            	    // InternalCubeDSL.g:743:4: (lv_dimensionUsages_2_0= ruleCubeDimensionUsage )
+            	    // InternalCubeDSL.g:744:5: lv_dimensionUsages_2_0= ruleCubeDimensionUsage
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getCubeTypeEntityAccess().getDimensionUsagesCubeDimensionUsageParserRuleCall_2_0()); 
-            	      	    
+
+            	      					newCompositeNode(grammarAccess.getCubeTypeEntityAccess().getDimensionUsagesCubeDimensionUsageParserRuleCall_2_0());
+            	      				
             	    }
-            	    pushFollow(FOLLOW_ruleCubeDimensionUsage_in_ruleCubeTypeEntity1464);
+            	    pushFollow(FOLLOW_21);
             	    lv_dimensionUsages_2_0=ruleCubeDimensionUsage();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getCubeTypeEntityRule());
-            	      	        }
-            	             		add(
-            	             			current, 
-            	             			"dimensionUsages",
-            	              		lv_dimensionUsages_2_0, 
-            	              		"CubeDimensionUsage");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      					if (current==null) {
+            	      						current = createModelElementForParent(grammarAccess.getCubeTypeEntityRule());
+            	      					}
+            	      					add(
+            	      						current,
+            	      						"dimensionUsages",
+            	      						lv_dimensionUsages_2_0,
+            	      						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeDimensionUsage");
+            	      					afterParserOrEnumRuleCall();
+            	      				
             	    }
 
             	    }
@@ -2026,46 +2037,46 @@
                 }
             } while (true);
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:744:3: ( (lv_measures_3_0= ruleCubeMeasure ) )*
+            // InternalCubeDSL.g:761:3: ( (lv_measures_3_0= ruleCubeMeasure ) )*
             loop14:
             do {
                 int alt14=2;
                 int LA14_0 = input.LA(1);
 
-                if ( (LA14_0==35) ) {
+                if ( (LA14_0==34) ) {
                     alt14=1;
                 }
 
 
                 switch (alt14) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:745:1: (lv_measures_3_0= ruleCubeMeasure )
+            	    // InternalCubeDSL.g:762:4: (lv_measures_3_0= ruleCubeMeasure )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:745:1: (lv_measures_3_0= ruleCubeMeasure )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:746:3: lv_measures_3_0= ruleCubeMeasure
+            	    // InternalCubeDSL.g:762:4: (lv_measures_3_0= ruleCubeMeasure )
+            	    // InternalCubeDSL.g:763:5: lv_measures_3_0= ruleCubeMeasure
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getCubeTypeEntityAccess().getMeasuresCubeMeasureParserRuleCall_3_0()); 
-            	      	    
+
+            	      					newCompositeNode(grammarAccess.getCubeTypeEntityAccess().getMeasuresCubeMeasureParserRuleCall_3_0());
+            	      				
             	    }
-            	    pushFollow(FOLLOW_ruleCubeMeasure_in_ruleCubeTypeEntity1486);
+            	    pushFollow(FOLLOW_22);
             	    lv_measures_3_0=ruleCubeMeasure();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getCubeTypeEntityRule());
-            	      	        }
-            	             		add(
-            	             			current, 
-            	             			"measures",
-            	              		lv_measures_3_0, 
-            	              		"CubeMeasure");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      					if (current==null) {
+            	      						current = createModelElementForParent(grammarAccess.getCubeTypeEntityRule());
+            	      					}
+            	      					add(
+            	      						current,
+            	      						"measures",
+            	      						lv_measures_3_0,
+            	      						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeMeasure");
+            	      					afterParserOrEnumRuleCall();
+            	      				
             	    }
 
             	    }
@@ -2079,11 +2090,11 @@
                 }
             } while (true);
 
-            otherlv_4=(Token)match(input,15,FOLLOW_15_in_ruleCubeTypeEntity1499); if (state.failed) return current;
+            otherlv_4=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_4, grammarAccess.getCubeTypeEntityAccess().getRightCurlyBracketKeyword_4());
-                  
+              			newLeafNode(otherlv_4, grammarAccess.getCubeTypeEntityAccess().getRightCurlyBracketKeyword_4());
+              		
             }
 
             }
@@ -2092,14 +2103,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2108,7 +2121,7 @@
 
 
     // $ANTLR start "entryRuleCubeDimensionEntity"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:774:1: entryRuleCubeDimensionEntity returns [EObject current=null] : iv_ruleCubeDimensionEntity= ruleCubeDimensionEntity EOF ;
+    // InternalCubeDSL.g:788:1: entryRuleCubeDimensionEntity returns [EObject current=null] : iv_ruleCubeDimensionEntity= ruleCubeDimensionEntity EOF ;
     public final EObject entryRuleCubeDimensionEntity() throws RecognitionException {
         EObject current = null;
 
@@ -2116,13 +2129,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:775:2: (iv_ruleCubeDimensionEntity= ruleCubeDimensionEntity EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:776:2: iv_ruleCubeDimensionEntity= ruleCubeDimensionEntity EOF
+            // InternalCubeDSL.g:788:60: (iv_ruleCubeDimensionEntity= ruleCubeDimensionEntity EOF )
+            // InternalCubeDSL.g:789:2: iv_ruleCubeDimensionEntity= ruleCubeDimensionEntity EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getCubeDimensionEntityRule()); 
             }
-            pushFollow(FOLLOW_ruleCubeDimensionEntity_in_entryRuleCubeDimensionEntity1535);
+            pushFollow(FOLLOW_1);
             iv_ruleCubeDimensionEntity=ruleCubeDimensionEntity();
 
             state._fsp--;
@@ -2130,16 +2143,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleCubeDimensionEntity; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeDimensionEntity1545); 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;
@@ -2148,7 +2161,7 @@
 
 
     // $ANTLR start "ruleCubeDimensionEntity"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:783:1: ruleCubeDimensionEntity returns [EObject current=null] : ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' ( (lv_hierarchLevels_3_0= ruleCubeLevel ) )* ( (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity ) )? otherlv_5= '}' ) ;
+    // InternalCubeDSL.g:795:1: ruleCubeDimensionEntity returns [EObject current=null] : ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' ( (lv_hierarchLevels_3_0= ruleCubeLevel ) )* ( (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity ) )? otherlv_5= '}' ) ;
     public final EObject ruleCubeDimensionEntity() throws RecognitionException {
         EObject current = null;
 
@@ -2161,56 +2174,57 @@
         EObject lv_dimEntity_4_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:786:28: ( ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' ( (lv_hierarchLevels_3_0= ruleCubeLevel ) )* ( (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity ) )? otherlv_5= '}' ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:787:1: ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' ( (lv_hierarchLevels_3_0= ruleCubeLevel ) )* ( (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity ) )? otherlv_5= '}' )
+            // InternalCubeDSL.g:801:2: ( ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' ( (lv_hierarchLevels_3_0= ruleCubeLevel ) )* ( (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity ) )? otherlv_5= '}' ) )
+            // InternalCubeDSL.g:802:2: ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' ( (lv_hierarchLevels_3_0= ruleCubeLevel ) )* ( (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity ) )? otherlv_5= '}' )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:787:1: ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' ( (lv_hierarchLevels_3_0= ruleCubeLevel ) )* ( (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity ) )? otherlv_5= '}' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:787:2: () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' ( (lv_hierarchLevels_3_0= ruleCubeLevel ) )* ( (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity ) )? otherlv_5= '}'
+            // InternalCubeDSL.g:802:2: ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' ( (lv_hierarchLevels_3_0= ruleCubeLevel ) )* ( (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity ) )? otherlv_5= '}' )
+            // InternalCubeDSL.g:803:3: () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' ( (lv_hierarchLevels_3_0= ruleCubeLevel ) )* ( (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity ) )? otherlv_5= '}'
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:787:2: ()
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:788:5: 
+            // InternalCubeDSL.g:803:3: ()
+            // InternalCubeDSL.g:804:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getCubeDimensionEntityAccess().getCubeDimensionEntityAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getCubeDimensionEntityAccess().getCubeDimensionEntityAction_0(),
+              					current);
+              			
             }
 
             }
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:793:2: ( (lv_entityRef_1_0= ruleCubeEntity ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:794:1: (lv_entityRef_1_0= ruleCubeEntity )
+            // InternalCubeDSL.g:810:3: ( (lv_entityRef_1_0= ruleCubeEntity ) )
+            // InternalCubeDSL.g:811:4: (lv_entityRef_1_0= ruleCubeEntity )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:794:1: (lv_entityRef_1_0= ruleCubeEntity )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:795:3: lv_entityRef_1_0= ruleCubeEntity
+            // InternalCubeDSL.g:811:4: (lv_entityRef_1_0= ruleCubeEntity )
+            // InternalCubeDSL.g:812:5: lv_entityRef_1_0= ruleCubeEntity
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getCubeDimensionEntityAccess().getEntityRefCubeEntityParserRuleCall_1_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getCubeDimensionEntityAccess().getEntityRefCubeEntityParserRuleCall_1_0());
+              				
             }
-            pushFollow(FOLLOW_ruleCubeEntity_in_ruleCubeDimensionEntity1600);
+            pushFollow(FOLLOW_10);
             lv_entityRef_1_0=ruleCubeEntity();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getCubeDimensionEntityRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"entityRef",
-                      		lv_entityRef_1_0, 
-                      		"CubeEntity");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getCubeDimensionEntityRule());
+              					}
+              					set(
+              						current,
+              						"entityRef",
+              						lv_entityRef_1_0,
+              						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeEntity");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -2218,52 +2232,52 @@
 
             }
 
-            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleCubeDimensionEntity1612); if (state.failed) return current;
+            otherlv_2=(Token)match(input,14,FOLLOW_23); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_2, grammarAccess.getCubeDimensionEntityAccess().getLeftCurlyBracketKeyword_2());
-                  
+              			newLeafNode(otherlv_2, grammarAccess.getCubeDimensionEntityAccess().getLeftCurlyBracketKeyword_2());
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:815:1: ( (lv_hierarchLevels_3_0= ruleCubeLevel ) )*
+            // InternalCubeDSL.g:833:3: ( (lv_hierarchLevels_3_0= ruleCubeLevel ) )*
             loop15:
             do {
                 int alt15=2;
                 int LA15_0 = input.LA(1);
 
-                if ( (LA15_0==29) ) {
+                if ( (LA15_0==28) ) {
                     alt15=1;
                 }
 
 
                 switch (alt15) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:816:1: (lv_hierarchLevels_3_0= ruleCubeLevel )
+            	    // InternalCubeDSL.g:834:4: (lv_hierarchLevels_3_0= ruleCubeLevel )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:816:1: (lv_hierarchLevels_3_0= ruleCubeLevel )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:817:3: lv_hierarchLevels_3_0= ruleCubeLevel
+            	    // InternalCubeDSL.g:834:4: (lv_hierarchLevels_3_0= ruleCubeLevel )
+            	    // InternalCubeDSL.g:835:5: lv_hierarchLevels_3_0= ruleCubeLevel
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getCubeDimensionEntityAccess().getHierarchLevelsCubeLevelParserRuleCall_3_0()); 
-            	      	    
+
+            	      					newCompositeNode(grammarAccess.getCubeDimensionEntityAccess().getHierarchLevelsCubeLevelParserRuleCall_3_0());
+            	      				
             	    }
-            	    pushFollow(FOLLOW_ruleCubeLevel_in_ruleCubeDimensionEntity1633);
+            	    pushFollow(FOLLOW_23);
             	    lv_hierarchLevels_3_0=ruleCubeLevel();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getCubeDimensionEntityRule());
-            	      	        }
-            	             		add(
-            	             			current, 
-            	             			"hierarchLevels",
-            	              		lv_hierarchLevels_3_0, 
-            	              		"CubeLevel");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      					if (current==null) {
+            	      						current = createModelElementForParent(grammarAccess.getCubeDimensionEntityRule());
+            	      					}
+            	      					add(
+            	      						current,
+            	      						"hierarchLevels",
+            	      						lv_hierarchLevels_3_0,
+            	      						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeLevel");
+            	      					afterParserOrEnumRuleCall();
+            	      				
             	    }
 
             	    }
@@ -2277,42 +2291,42 @@
                 }
             } while (true);
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:833:3: ( (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity ) )?
+            // InternalCubeDSL.g:852:3: ( (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity ) )?
             int alt16=2;
             int LA16_0 = input.LA(1);
 
-            if ( (LA16_0==27) ) {
+            if ( (LA16_0==26) ) {
                 alt16=1;
             }
             switch (alt16) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:834:1: (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity )
+                    // InternalCubeDSL.g:853:4: (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:834:1: (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:835:3: lv_dimEntity_4_0= ruleCubeDimensionEntityEntity
+                    // InternalCubeDSL.g:853:4: (lv_dimEntity_4_0= ruleCubeDimensionEntityEntity )
+                    // InternalCubeDSL.g:854:5: lv_dimEntity_4_0= ruleCubeDimensionEntityEntity
                     {
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getCubeDimensionEntityAccess().getDimEntityCubeDimensionEntityEntityParserRuleCall_4_0()); 
-                      	    
+
+                      					newCompositeNode(grammarAccess.getCubeDimensionEntityAccess().getDimEntityCubeDimensionEntityEntityParserRuleCall_4_0());
+                      				
                     }
-                    pushFollow(FOLLOW_ruleCubeDimensionEntityEntity_in_ruleCubeDimensionEntity1655);
+                    pushFollow(FOLLOW_12);
                     lv_dimEntity_4_0=ruleCubeDimensionEntityEntity();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElementForParent(grammarAccess.getCubeDimensionEntityRule());
-                      	        }
-                             		set(
-                             			current, 
-                             			"dimEntity",
-                              		lv_dimEntity_4_0, 
-                              		"CubeDimensionEntityEntity");
-                      	        afterParserOrEnumRuleCall();
-                      	    
+                      					if (current==null) {
+                      						current = createModelElementForParent(grammarAccess.getCubeDimensionEntityRule());
+                      					}
+                      					set(
+                      						current,
+                      						"dimEntity",
+                      						lv_dimEntity_4_0,
+                      						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeDimensionEntityEntity");
+                      					afterParserOrEnumRuleCall();
+                      				
                     }
 
                     }
@@ -2323,11 +2337,11 @@
 
             }
 
-            otherlv_5=(Token)match(input,15,FOLLOW_15_in_ruleCubeDimensionEntity1668); if (state.failed) return current;
+            otherlv_5=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_5, grammarAccess.getCubeDimensionEntityAccess().getRightCurlyBracketKeyword_5());
-                  
+              			newLeafNode(otherlv_5, grammarAccess.getCubeDimensionEntityAccess().getRightCurlyBracketKeyword_5());
+              		
             }
 
             }
@@ -2336,14 +2350,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2352,7 +2368,7 @@
 
 
     // $ANTLR start "entryRuleCubeDimensionEntityEntity"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:863:1: entryRuleCubeDimensionEntityEntity returns [EObject current=null] : iv_ruleCubeDimensionEntityEntity= ruleCubeDimensionEntityEntity EOF ;
+    // InternalCubeDSL.g:879:1: entryRuleCubeDimensionEntityEntity returns [EObject current=null] : iv_ruleCubeDimensionEntityEntity= ruleCubeDimensionEntityEntity EOF ;
     public final EObject entryRuleCubeDimensionEntityEntity() throws RecognitionException {
         EObject current = null;
 
@@ -2360,13 +2376,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:864:2: (iv_ruleCubeDimensionEntityEntity= ruleCubeDimensionEntityEntity EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:865:2: iv_ruleCubeDimensionEntityEntity= ruleCubeDimensionEntityEntity EOF
+            // InternalCubeDSL.g:879:66: (iv_ruleCubeDimensionEntityEntity= ruleCubeDimensionEntityEntity EOF )
+            // InternalCubeDSL.g:880:2: iv_ruleCubeDimensionEntityEntity= ruleCubeDimensionEntityEntity EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getCubeDimensionEntityEntityRule()); 
             }
-            pushFollow(FOLLOW_ruleCubeDimensionEntityEntity_in_entryRuleCubeDimensionEntityEntity1704);
+            pushFollow(FOLLOW_1);
             iv_ruleCubeDimensionEntityEntity=ruleCubeDimensionEntityEntity();
 
             state._fsp--;
@@ -2374,16 +2390,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleCubeDimensionEntityEntity; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeDimensionEntityEntity1714); 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;
@@ -2392,71 +2408,71 @@
 
 
     // $ANTLR start "ruleCubeDimensionEntityEntity"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:872:1: ruleCubeDimensionEntityEntity returns [EObject current=null] : ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' otherlv_3= 'over' ( ( ruleLFQN ) ) otherlv_5= ';' ( (lv_hierarchLevels_6_0= ruleCubeLevel ) )* ( (lv_dimEntity_7_0= ruleCubeDimensionEntityEntity ) )? otherlv_8= '}' ) ;
+    // InternalCubeDSL.g:886:1: ruleCubeDimensionEntityEntity returns [EObject current=null] : ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' otherlv_3= 'over' ( ( ruleLFQN ) ) ( (lv_hierarchLevels_5_0= ruleCubeLevel ) )* ( (lv_dimEntity_6_0= ruleCubeDimensionEntityEntity ) )? otherlv_7= '}' ) ;
     public final EObject ruleCubeDimensionEntityEntity() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_2=null;
         Token otherlv_3=null;
-        Token otherlv_5=null;
-        Token otherlv_8=null;
+        Token otherlv_7=null;
         EObject lv_entityRef_1_0 = null;
 
-        EObject lv_hierarchLevels_6_0 = null;
+        EObject lv_hierarchLevels_5_0 = null;
 
-        EObject lv_dimEntity_7_0 = null;
+        EObject lv_dimEntity_6_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:875:28: ( ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' otherlv_3= 'over' ( ( ruleLFQN ) ) otherlv_5= ';' ( (lv_hierarchLevels_6_0= ruleCubeLevel ) )* ( (lv_dimEntity_7_0= ruleCubeDimensionEntityEntity ) )? otherlv_8= '}' ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:876:1: ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' otherlv_3= 'over' ( ( ruleLFQN ) ) otherlv_5= ';' ( (lv_hierarchLevels_6_0= ruleCubeLevel ) )* ( (lv_dimEntity_7_0= ruleCubeDimensionEntityEntity ) )? otherlv_8= '}' )
+            // InternalCubeDSL.g:892:2: ( ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' otherlv_3= 'over' ( ( ruleLFQN ) ) ( (lv_hierarchLevels_5_0= ruleCubeLevel ) )* ( (lv_dimEntity_6_0= ruleCubeDimensionEntityEntity ) )? otherlv_7= '}' ) )
+            // InternalCubeDSL.g:893:2: ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' otherlv_3= 'over' ( ( ruleLFQN ) ) ( (lv_hierarchLevels_5_0= ruleCubeLevel ) )* ( (lv_dimEntity_6_0= ruleCubeDimensionEntityEntity ) )? otherlv_7= '}' )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:876:1: ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' otherlv_3= 'over' ( ( ruleLFQN ) ) otherlv_5= ';' ( (lv_hierarchLevels_6_0= ruleCubeLevel ) )* ( (lv_dimEntity_7_0= ruleCubeDimensionEntityEntity ) )? otherlv_8= '}' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:876:2: () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' otherlv_3= 'over' ( ( ruleLFQN ) ) otherlv_5= ';' ( (lv_hierarchLevels_6_0= ruleCubeLevel ) )* ( (lv_dimEntity_7_0= ruleCubeDimensionEntityEntity ) )? otherlv_8= '}'
+            // InternalCubeDSL.g:893:2: ( () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' otherlv_3= 'over' ( ( ruleLFQN ) ) ( (lv_hierarchLevels_5_0= ruleCubeLevel ) )* ( (lv_dimEntity_6_0= ruleCubeDimensionEntityEntity ) )? otherlv_7= '}' )
+            // InternalCubeDSL.g:894:3: () ( (lv_entityRef_1_0= ruleCubeEntity ) ) otherlv_2= '{' otherlv_3= 'over' ( ( ruleLFQN ) ) ( (lv_hierarchLevels_5_0= ruleCubeLevel ) )* ( (lv_dimEntity_6_0= ruleCubeDimensionEntityEntity ) )? otherlv_7= '}'
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:876:2: ()
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:877:5: 
+            // InternalCubeDSL.g:894:3: ()
+            // InternalCubeDSL.g:895:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getCubeDimensionEntityEntityAccess().getCubeDimensionEntityEntityAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getCubeDimensionEntityEntityAccess().getCubeDimensionEntityEntityAction_0(),
+              					current);
+              			
             }
 
             }
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:882:2: ( (lv_entityRef_1_0= ruleCubeEntity ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:883:1: (lv_entityRef_1_0= ruleCubeEntity )
+            // InternalCubeDSL.g:901:3: ( (lv_entityRef_1_0= ruleCubeEntity ) )
+            // InternalCubeDSL.g:902:4: (lv_entityRef_1_0= ruleCubeEntity )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:883:1: (lv_entityRef_1_0= ruleCubeEntity )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:884:3: lv_entityRef_1_0= ruleCubeEntity
+            // InternalCubeDSL.g:902:4: (lv_entityRef_1_0= ruleCubeEntity )
+            // InternalCubeDSL.g:903:5: lv_entityRef_1_0= ruleCubeEntity
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getEntityRefCubeEntityParserRuleCall_1_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getEntityRefCubeEntityParserRuleCall_1_0());
+              				
             }
-            pushFollow(FOLLOW_ruleCubeEntity_in_ruleCubeDimensionEntityEntity1769);
+            pushFollow(FOLLOW_10);
             lv_entityRef_1_0=ruleCubeEntity();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getCubeDimensionEntityEntityRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"entityRef",
-                      		lv_entityRef_1_0, 
-                      		"CubeEntity");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getCubeDimensionEntityEntityRule());
+              					}
+              					set(
+              						current,
+              						"entityRef",
+              						lv_entityRef_1_0,
+              						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeEntity");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -2464,45 +2480,45 @@
 
             }
 
-            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleCubeDimensionEntityEntity1781); if (state.failed) return current;
+            otherlv_2=(Token)match(input,14,FOLLOW_13); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_2, grammarAccess.getCubeDimensionEntityEntityAccess().getLeftCurlyBracketKeyword_2());
-                  
+              			newLeafNode(otherlv_2, grammarAccess.getCubeDimensionEntityEntityAccess().getLeftCurlyBracketKeyword_2());
+              		
             }
-            otherlv_3=(Token)match(input,19,FOLLOW_19_in_ruleCubeDimensionEntityEntity1793); if (state.failed) return current;
+            otherlv_3=(Token)match(input,19,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_3, grammarAccess.getCubeDimensionEntityEntityAccess().getOverKeyword_3());
-                  
+              			newLeafNode(otherlv_3, grammarAccess.getCubeDimensionEntityEntityAccess().getOverKeyword_3());
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:908:1: ( ( ruleLFQN ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:909:1: ( ruleLFQN )
+            // InternalCubeDSL.g:928:3: ( ( ruleLFQN ) )
+            // InternalCubeDSL.g:929:4: ( ruleLFQN )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:909:1: ( ruleLFQN )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:910:3: ruleLFQN
+            // InternalCubeDSL.g:929:4: ( ruleLFQN )
+            // InternalCubeDSL.g:930:5: ruleLFQN
             {
             if ( state.backtracking==0 ) {
 
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getCubeDimensionEntityEntityRule());
-              	        }
-                      
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getCubeDimensionEntityEntityRule());
+              					}
+              				
             }
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueLEntityFeatureCrossReference_4_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getOverValueLEntityFeatureCrossReference_4_0());
+              				
             }
-            pushFollow(FOLLOW_ruleLFQN_in_ruleCubeDimensionEntityEntity1816);
+            pushFollow(FOLLOW_23);
             ruleLFQN();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-              	        afterParserOrEnumRuleCall();
-              	    
+
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -2510,52 +2526,46 @@
 
             }
 
-            otherlv_5=(Token)match(input,20,FOLLOW_20_in_ruleCubeDimensionEntityEntity1828); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-                  	newLeafNode(otherlv_5, grammarAccess.getCubeDimensionEntityEntityAccess().getSemicolonKeyword_5());
-                  
-            }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:927:1: ( (lv_hierarchLevels_6_0= ruleCubeLevel ) )*
+            // InternalCubeDSL.g:944:3: ( (lv_hierarchLevels_5_0= ruleCubeLevel ) )*
             loop17:
             do {
                 int alt17=2;
                 int LA17_0 = input.LA(1);
 
-                if ( (LA17_0==29) ) {
+                if ( (LA17_0==28) ) {
                     alt17=1;
                 }
 
 
                 switch (alt17) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:928:1: (lv_hierarchLevels_6_0= ruleCubeLevel )
+            	    // InternalCubeDSL.g:945:4: (lv_hierarchLevels_5_0= ruleCubeLevel )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:928:1: (lv_hierarchLevels_6_0= ruleCubeLevel )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:929:3: lv_hierarchLevels_6_0= ruleCubeLevel
+            	    // InternalCubeDSL.g:945:4: (lv_hierarchLevels_5_0= ruleCubeLevel )
+            	    // InternalCubeDSL.g:946:5: lv_hierarchLevels_5_0= ruleCubeLevel
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getHierarchLevelsCubeLevelParserRuleCall_6_0()); 
-            	      	    
+
+            	      					newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getHierarchLevelsCubeLevelParserRuleCall_5_0());
+            	      				
             	    }
-            	    pushFollow(FOLLOW_ruleCubeLevel_in_ruleCubeDimensionEntityEntity1849);
-            	    lv_hierarchLevels_6_0=ruleCubeLevel();
+            	    pushFollow(FOLLOW_23);
+            	    lv_hierarchLevels_5_0=ruleCubeLevel();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getCubeDimensionEntityEntityRule());
-            	      	        }
-            	             		add(
-            	             			current, 
-            	             			"hierarchLevels",
-            	              		lv_hierarchLevels_6_0, 
-            	              		"CubeLevel");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      					if (current==null) {
+            	      						current = createModelElementForParent(grammarAccess.getCubeDimensionEntityEntityRule());
+            	      					}
+            	      					add(
+            	      						current,
+            	      						"hierarchLevels",
+            	      						lv_hierarchLevels_5_0,
+            	      						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeLevel");
+            	      					afterParserOrEnumRuleCall();
+            	      				
             	    }
 
             	    }
@@ -2569,42 +2579,42 @@
                 }
             } while (true);
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:945:3: ( (lv_dimEntity_7_0= ruleCubeDimensionEntityEntity ) )?
+            // InternalCubeDSL.g:963:3: ( (lv_dimEntity_6_0= ruleCubeDimensionEntityEntity ) )?
             int alt18=2;
             int LA18_0 = input.LA(1);
 
-            if ( (LA18_0==27) ) {
+            if ( (LA18_0==26) ) {
                 alt18=1;
             }
             switch (alt18) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:946:1: (lv_dimEntity_7_0= ruleCubeDimensionEntityEntity )
+                    // InternalCubeDSL.g:964:4: (lv_dimEntity_6_0= ruleCubeDimensionEntityEntity )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:946:1: (lv_dimEntity_7_0= ruleCubeDimensionEntityEntity )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:947:3: lv_dimEntity_7_0= ruleCubeDimensionEntityEntity
+                    // InternalCubeDSL.g:964:4: (lv_dimEntity_6_0= ruleCubeDimensionEntityEntity )
+                    // InternalCubeDSL.g:965:5: lv_dimEntity_6_0= ruleCubeDimensionEntityEntity
                     {
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getDimEntityCubeDimensionEntityEntityParserRuleCall_7_0()); 
-                      	    
+
+                      					newCompositeNode(grammarAccess.getCubeDimensionEntityEntityAccess().getDimEntityCubeDimensionEntityEntityParserRuleCall_6_0());
+                      				
                     }
-                    pushFollow(FOLLOW_ruleCubeDimensionEntityEntity_in_ruleCubeDimensionEntityEntity1871);
-                    lv_dimEntity_7_0=ruleCubeDimensionEntityEntity();
+                    pushFollow(FOLLOW_12);
+                    lv_dimEntity_6_0=ruleCubeDimensionEntityEntity();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElementForParent(grammarAccess.getCubeDimensionEntityEntityRule());
-                      	        }
-                             		set(
-                             			current, 
-                             			"dimEntity",
-                              		lv_dimEntity_7_0, 
-                              		"CubeDimensionEntityEntity");
-                      	        afterParserOrEnumRuleCall();
-                      	    
+                      					if (current==null) {
+                      						current = createModelElementForParent(grammarAccess.getCubeDimensionEntityEntityRule());
+                      					}
+                      					set(
+                      						current,
+                      						"dimEntity",
+                      						lv_dimEntity_6_0,
+                      						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeDimensionEntityEntity");
+                      					afterParserOrEnumRuleCall();
+                      				
                     }
 
                     }
@@ -2615,11 +2625,11 @@
 
             }
 
-            otherlv_8=(Token)match(input,15,FOLLOW_15_in_ruleCubeDimensionEntityEntity1884); if (state.failed) return current;
+            otherlv_7=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_8, grammarAccess.getCubeDimensionEntityEntityAccess().getRightCurlyBracketKeyword_8());
-                  
+              			newLeafNode(otherlv_7, grammarAccess.getCubeDimensionEntityEntityAccess().getRightCurlyBracketKeyword_7());
+              		
             }
 
             }
@@ -2628,14 +2638,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2644,7 +2656,7 @@
 
 
     // $ANTLR start "entryRuleCubeLevel"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:975:1: entryRuleCubeLevel returns [EObject current=null] : iv_ruleCubeLevel= ruleCubeLevel EOF ;
+    // InternalCubeDSL.g:990:1: entryRuleCubeLevel returns [EObject current=null] : iv_ruleCubeLevel= ruleCubeLevel EOF ;
     public final EObject entryRuleCubeLevel() throws RecognitionException {
         EObject current = null;
 
@@ -2652,13 +2664,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:976:2: (iv_ruleCubeLevel= ruleCubeLevel EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:977:2: iv_ruleCubeLevel= ruleCubeLevel EOF
+            // InternalCubeDSL.g:990:50: (iv_ruleCubeLevel= ruleCubeLevel EOF )
+            // InternalCubeDSL.g:991:2: iv_ruleCubeLevel= ruleCubeLevel EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getCubeLevelRule()); 
             }
-            pushFollow(FOLLOW_ruleCubeLevel_in_entryRuleCubeLevel1920);
+            pushFollow(FOLLOW_1);
             iv_ruleCubeLevel=ruleCubeLevel();
 
             state._fsp--;
@@ -2666,16 +2678,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleCubeLevel; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeLevel1930); 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;
@@ -2684,7 +2696,7 @@
 
 
     // $ANTLR start "ruleCubeLevel"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:984:1: ruleCubeLevel returns [EObject current=null] : (otherlv_0= 'level' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column=' ( ( ruleLFQN ) ) ( (lv_uniqueMembers_4_0= 'uniqueMembers' ) )? ( ( (lv_levelType_5_0= 'levelType=' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) ) )? (otherlv_7= ';' | (otherlv_8= '{' ( (lv_properties_9_0= ruleCubeLevelProp ) )* otherlv_10= '}' ) ) ) ;
+    // InternalCubeDSL.g:997:1: ruleCubeLevel returns [EObject current=null] : (otherlv_0= 'level' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column' ( ( ruleLFQN ) ) ( (lv_uniqueMembers_4_0= 'uniqueMembers' ) )? ( ( (lv_levelType_5_0= 'levelType' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) ) )? (otherlv_7= '{' ( (lv_properties_8_0= ruleCubeLevelProp ) )* otherlv_9= '}' )? ) ;
     public final EObject ruleCubeLevel() throws RecognitionException {
         EObject current = null;
 
@@ -2693,58 +2705,58 @@
         Token lv_uniqueMembers_4_0=null;
         Token lv_levelType_5_0=null;
         Token otherlv_7=null;
-        Token otherlv_8=null;
-        Token otherlv_10=null;
+        Token otherlv_9=null;
         AntlrDatatypeRuleToken lv_name_1_0 = null;
 
         Enumerator lv_levelTypeValue_6_0 = null;
 
-        EObject lv_properties_9_0 = null;
+        EObject lv_properties_8_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:987:28: ( (otherlv_0= 'level' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column=' ( ( ruleLFQN ) ) ( (lv_uniqueMembers_4_0= 'uniqueMembers' ) )? ( ( (lv_levelType_5_0= 'levelType=' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) ) )? (otherlv_7= ';' | (otherlv_8= '{' ( (lv_properties_9_0= ruleCubeLevelProp ) )* otherlv_10= '}' ) ) ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:988:1: (otherlv_0= 'level' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column=' ( ( ruleLFQN ) ) ( (lv_uniqueMembers_4_0= 'uniqueMembers' ) )? ( ( (lv_levelType_5_0= 'levelType=' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) ) )? (otherlv_7= ';' | (otherlv_8= '{' ( (lv_properties_9_0= ruleCubeLevelProp ) )* otherlv_10= '}' ) ) )
+            // InternalCubeDSL.g:1003:2: ( (otherlv_0= 'level' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column' ( ( ruleLFQN ) ) ( (lv_uniqueMembers_4_0= 'uniqueMembers' ) )? ( ( (lv_levelType_5_0= 'levelType' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) ) )? (otherlv_7= '{' ( (lv_properties_8_0= ruleCubeLevelProp ) )* otherlv_9= '}' )? ) )
+            // InternalCubeDSL.g:1004:2: (otherlv_0= 'level' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column' ( ( ruleLFQN ) ) ( (lv_uniqueMembers_4_0= 'uniqueMembers' ) )? ( ( (lv_levelType_5_0= 'levelType' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) ) )? (otherlv_7= '{' ( (lv_properties_8_0= ruleCubeLevelProp ) )* otherlv_9= '}' )? )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:988:1: (otherlv_0= 'level' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column=' ( ( ruleLFQN ) ) ( (lv_uniqueMembers_4_0= 'uniqueMembers' ) )? ( ( (lv_levelType_5_0= 'levelType=' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) ) )? (otherlv_7= ';' | (otherlv_8= '{' ( (lv_properties_9_0= ruleCubeLevelProp ) )* otherlv_10= '}' ) ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:988:3: otherlv_0= 'level' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column=' ( ( ruleLFQN ) ) ( (lv_uniqueMembers_4_0= 'uniqueMembers' ) )? ( ( (lv_levelType_5_0= 'levelType=' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) ) )? (otherlv_7= ';' | (otherlv_8= '{' ( (lv_properties_9_0= ruleCubeLevelProp ) )* otherlv_10= '}' ) )
+            // InternalCubeDSL.g:1004:2: (otherlv_0= 'level' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column' ( ( ruleLFQN ) ) ( (lv_uniqueMembers_4_0= 'uniqueMembers' ) )? ( ( (lv_levelType_5_0= 'levelType' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) ) )? (otherlv_7= '{' ( (lv_properties_8_0= ruleCubeLevelProp ) )* otherlv_9= '}' )? )
+            // InternalCubeDSL.g:1005:3: otherlv_0= 'level' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column' ( ( ruleLFQN ) ) ( (lv_uniqueMembers_4_0= 'uniqueMembers' ) )? ( ( (lv_levelType_5_0= 'levelType' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) ) )? (otherlv_7= '{' ( (lv_properties_8_0= ruleCubeLevelProp ) )* otherlv_9= '}' )?
             {
-            otherlv_0=(Token)match(input,29,FOLLOW_29_in_ruleCubeLevel1967); if (state.failed) return current;
+            otherlv_0=(Token)match(input,28,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getCubeLevelAccess().getLevelKeyword_0());
-                  
+              			newLeafNode(otherlv_0, grammarAccess.getCubeLevelAccess().getLevelKeyword_0());
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:992:1: ( (lv_name_1_0= ruleTRANSLATABLEID ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:993:1: (lv_name_1_0= ruleTRANSLATABLEID )
+            // InternalCubeDSL.g:1009:3: ( (lv_name_1_0= ruleTRANSLATABLEID ) )
+            // InternalCubeDSL.g:1010:4: (lv_name_1_0= ruleTRANSLATABLEID )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:993:1: (lv_name_1_0= ruleTRANSLATABLEID )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:994:3: lv_name_1_0= ruleTRANSLATABLEID
+            // InternalCubeDSL.g:1010:4: (lv_name_1_0= ruleTRANSLATABLEID )
+            // InternalCubeDSL.g:1011:5: lv_name_1_0= ruleTRANSLATABLEID
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getCubeLevelAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getCubeLevelAccess().getNameTRANSLATABLEIDParserRuleCall_1_0());
+              				
             }
-            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_ruleCubeLevel1988);
+            pushFollow(FOLLOW_24);
             lv_name_1_0=ruleTRANSLATABLEID();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getCubeLevelRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"name",
-                      		lv_name_1_0, 
-                      		"TRANSLATABLEID");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getCubeLevelRule());
+              					}
+              					set(
+              						current,
+              						"name",
+              						lv_name_1_0,
+              						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.TRANSLATABLEID");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -2752,39 +2764,39 @@
 
             }
 
-            otherlv_2=(Token)match(input,30,FOLLOW_30_in_ruleCubeLevel2000); if (state.failed) return current;
+            otherlv_2=(Token)match(input,29,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_2, grammarAccess.getCubeLevelAccess().getColumnKeyword_2());
-                  
+              			newLeafNode(otherlv_2, grammarAccess.getCubeLevelAccess().getColumnKeyword_2());
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1014:1: ( ( ruleLFQN ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1015:1: ( ruleLFQN )
+            // InternalCubeDSL.g:1032:3: ( ( ruleLFQN ) )
+            // InternalCubeDSL.g:1033:4: ( ruleLFQN )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1015:1: ( ruleLFQN )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1016:3: ruleLFQN
+            // InternalCubeDSL.g:1033:4: ( ruleLFQN )
+            // InternalCubeDSL.g:1034:5: ruleLFQN
             {
             if ( state.backtracking==0 ) {
 
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getCubeLevelRule());
-              	        }
-                      
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getCubeLevelRule());
+              					}
+              				
             }
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getCubeLevelAccess().getLevelColValueLEntityFeatureCrossReference_3_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getCubeLevelAccess().getLevelColValueLEntityFeatureCrossReference_3_0());
+              				
             }
-            pushFollow(FOLLOW_ruleLFQN_in_ruleCubeLevel2023);
+            pushFollow(FOLLOW_25);
             ruleLFQN();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-              	        afterParserOrEnumRuleCall();
-              	    
+
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -2792,33 +2804,33 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1029:2: ( (lv_uniqueMembers_4_0= 'uniqueMembers' ) )?
+            // InternalCubeDSL.g:1048:3: ( (lv_uniqueMembers_4_0= 'uniqueMembers' ) )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
-            if ( (LA19_0==31) ) {
+            if ( (LA19_0==30) ) {
                 alt19=1;
             }
             switch (alt19) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1030:1: (lv_uniqueMembers_4_0= 'uniqueMembers' )
+                    // InternalCubeDSL.g:1049:4: (lv_uniqueMembers_4_0= 'uniqueMembers' )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1030:1: (lv_uniqueMembers_4_0= 'uniqueMembers' )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1031:3: lv_uniqueMembers_4_0= 'uniqueMembers'
+                    // InternalCubeDSL.g:1049:4: (lv_uniqueMembers_4_0= 'uniqueMembers' )
+                    // InternalCubeDSL.g:1050:5: lv_uniqueMembers_4_0= 'uniqueMembers'
                     {
-                    lv_uniqueMembers_4_0=(Token)match(input,31,FOLLOW_31_in_ruleCubeLevel2041); if (state.failed) return current;
+                    lv_uniqueMembers_4_0=(Token)match(input,30,FOLLOW_26); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              newLeafNode(lv_uniqueMembers_4_0, grammarAccess.getCubeLevelAccess().getUniqueMembersUniqueMembersKeyword_4_0());
-                          
+                      					newLeafNode(lv_uniqueMembers_4_0, grammarAccess.getCubeLevelAccess().getUniqueMembersUniqueMembersKeyword_4_0());
+                      				
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getCubeLevelRule());
-                      	        }
-                             		setWithLastConsumed(current, "uniqueMembers", true, "uniqueMembers");
-                      	    
+                      					if (current==null) {
+                      						current = createModelElement(grammarAccess.getCubeLevelRule());
+                      					}
+                      					setWithLastConsumed(current, "uniqueMembers", true, "uniqueMembers");
+                      				
                     }
 
                     }
@@ -2829,36 +2841,36 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1044:3: ( ( (lv_levelType_5_0= 'levelType=' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) ) )?
+            // InternalCubeDSL.g:1062:3: ( ( (lv_levelType_5_0= 'levelType' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) ) )?
             int alt20=2;
             int LA20_0 = input.LA(1);
 
-            if ( (LA20_0==32) ) {
+            if ( (LA20_0==31) ) {
                 alt20=1;
             }
             switch (alt20) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1044:4: ( (lv_levelType_5_0= 'levelType=' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) )
+                    // InternalCubeDSL.g:1063:4: ( (lv_levelType_5_0= 'levelType' ) ) ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1044:4: ( (lv_levelType_5_0= 'levelType=' ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1045:1: (lv_levelType_5_0= 'levelType=' )
+                    // InternalCubeDSL.g:1063:4: ( (lv_levelType_5_0= 'levelType' ) )
+                    // InternalCubeDSL.g:1064:5: (lv_levelType_5_0= 'levelType' )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1045:1: (lv_levelType_5_0= 'levelType=' )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1046:3: lv_levelType_5_0= 'levelType='
+                    // InternalCubeDSL.g:1064:5: (lv_levelType_5_0= 'levelType' )
+                    // InternalCubeDSL.g:1065:6: lv_levelType_5_0= 'levelType'
                     {
-                    lv_levelType_5_0=(Token)match(input,32,FOLLOW_32_in_ruleCubeLevel2074); if (state.failed) return current;
+                    lv_levelType_5_0=(Token)match(input,31,FOLLOW_27); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              newLeafNode(lv_levelType_5_0, grammarAccess.getCubeLevelAccess().getLevelTypeLevelTypeKeyword_5_0_0());
-                          
+                      						newLeafNode(lv_levelType_5_0, grammarAccess.getCubeLevelAccess().getLevelTypeLevelTypeKeyword_5_0_0());
+                      					
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getCubeLevelRule());
-                      	        }
-                             		setWithLastConsumed(current, "levelType", true, "levelType=");
-                      	    
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getCubeLevelRule());
+                      						}
+                      						setWithLastConsumed(current, "levelType", true, "levelType");
+                      					
                     }
 
                     }
@@ -2866,34 +2878,34 @@
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1059:2: ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1060:1: (lv_levelTypeValue_6_0= ruleCubeLevelLevelType )
+                    // InternalCubeDSL.g:1077:4: ( (lv_levelTypeValue_6_0= ruleCubeLevelLevelType ) )
+                    // InternalCubeDSL.g:1078:5: (lv_levelTypeValue_6_0= ruleCubeLevelLevelType )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1060:1: (lv_levelTypeValue_6_0= ruleCubeLevelLevelType )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1061:3: lv_levelTypeValue_6_0= ruleCubeLevelLevelType
+                    // InternalCubeDSL.g:1078:5: (lv_levelTypeValue_6_0= ruleCubeLevelLevelType )
+                    // InternalCubeDSL.g:1079:6: lv_levelTypeValue_6_0= ruleCubeLevelLevelType
                     {
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getCubeLevelAccess().getLevelTypeValueCubeLevelLevelTypeEnumRuleCall_5_1_0()); 
-                      	    
+
+                      						newCompositeNode(grammarAccess.getCubeLevelAccess().getLevelTypeValueCubeLevelLevelTypeEnumRuleCall_5_1_0());
+                      					
                     }
-                    pushFollow(FOLLOW_ruleCubeLevelLevelType_in_ruleCubeLevel2108);
+                    pushFollow(FOLLOW_5);
                     lv_levelTypeValue_6_0=ruleCubeLevelLevelType();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElementForParent(grammarAccess.getCubeLevelRule());
-                      	        }
-                             		set(
-                             			current, 
-                             			"levelTypeValue",
-                              		lv_levelTypeValue_6_0, 
-                              		"CubeLevelLevelType");
-                      	        afterParserOrEnumRuleCall();
-                      	    
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getCubeLevelRule());
+                      						}
+                      						set(
+                      							current,
+                      							"levelTypeValue",
+                      							lv_levelTypeValue_6_0,
+                      							"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeLevelLevelType");
+                      						afterParserOrEnumRuleCall();
+                      					
                     }
 
                     }
@@ -2907,88 +2919,63 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1077:4: (otherlv_7= ';' | (otherlv_8= '{' ( (lv_properties_9_0= ruleCubeLevelProp ) )* otherlv_10= '}' ) )
+            // InternalCubeDSL.g:1097:3: (otherlv_7= '{' ( (lv_properties_8_0= ruleCubeLevelProp ) )* otherlv_9= '}' )?
             int alt22=2;
             int LA22_0 = input.LA(1);
 
-            if ( (LA22_0==20) ) {
+            if ( (LA22_0==14) ) {
                 alt22=1;
             }
-            else if ( (LA22_0==14) ) {
-                alt22=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return current;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 22, 0, input);
-
-                throw nvae;
-            }
             switch (alt22) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1077:6: otherlv_7= ';'
+                    // InternalCubeDSL.g:1098:4: otherlv_7= '{' ( (lv_properties_8_0= ruleCubeLevelProp ) )* otherlv_9= '}'
                     {
-                    otherlv_7=(Token)match(input,20,FOLLOW_20_in_ruleCubeLevel2123); if (state.failed) return current;
+                    otherlv_7=(Token)match(input,14,FOLLOW_28); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_7, grammarAccess.getCubeLevelAccess().getSemicolonKeyword_6_0());
-                          
+                      				newLeafNode(otherlv_7, grammarAccess.getCubeLevelAccess().getLeftCurlyBracketKeyword_6_0());
+                      			
                     }
-
-                    }
-                    break;
-                case 2 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1082:6: (otherlv_8= '{' ( (lv_properties_9_0= ruleCubeLevelProp ) )* otherlv_10= '}' )
-                    {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1082:6: (otherlv_8= '{' ( (lv_properties_9_0= ruleCubeLevelProp ) )* otherlv_10= '}' )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1082:8: otherlv_8= '{' ( (lv_properties_9_0= ruleCubeLevelProp ) )* otherlv_10= '}'
-                    {
-                    otherlv_8=(Token)match(input,14,FOLLOW_14_in_ruleCubeLevel2142); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                          	newLeafNode(otherlv_8, grammarAccess.getCubeLevelAccess().getLeftCurlyBracketKeyword_6_1_0());
-                          
-                    }
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1086:1: ( (lv_properties_9_0= ruleCubeLevelProp ) )*
+                    // InternalCubeDSL.g:1102:4: ( (lv_properties_8_0= ruleCubeLevelProp ) )*
                     loop21:
                     do {
                         int alt21=2;
                         int LA21_0 = input.LA(1);
 
-                        if ( (LA21_0==33) ) {
+                        if ( (LA21_0==32) ) {
                             alt21=1;
                         }
 
 
                         switch (alt21) {
                     	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1087:1: (lv_properties_9_0= ruleCubeLevelProp )
+                    	    // InternalCubeDSL.g:1103:5: (lv_properties_8_0= ruleCubeLevelProp )
                     	    {
-                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1087:1: (lv_properties_9_0= ruleCubeLevelProp )
-                    	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1088:3: lv_properties_9_0= ruleCubeLevelProp
+                    	    // InternalCubeDSL.g:1103:5: (lv_properties_8_0= ruleCubeLevelProp )
+                    	    // InternalCubeDSL.g:1104:6: lv_properties_8_0= ruleCubeLevelProp
                     	    {
                     	    if ( state.backtracking==0 ) {
-                    	       
-                    	      	        newCompositeNode(grammarAccess.getCubeLevelAccess().getPropertiesCubeLevelPropParserRuleCall_6_1_1_0()); 
-                    	      	    
+
+                    	      						newCompositeNode(grammarAccess.getCubeLevelAccess().getPropertiesCubeLevelPropParserRuleCall_6_1_0());
+                    	      					
                     	    }
-                    	    pushFollow(FOLLOW_ruleCubeLevelProp_in_ruleCubeLevel2163);
-                    	    lv_properties_9_0=ruleCubeLevelProp();
+                    	    pushFollow(FOLLOW_28);
+                    	    lv_properties_8_0=ruleCubeLevelProp();
 
                     	    state._fsp--;
                     	    if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
-                    	      	        if (current==null) {
-                    	      	            current = createModelElementForParent(grammarAccess.getCubeLevelRule());
-                    	      	        }
-                    	             		add(
-                    	             			current, 
-                    	             			"properties",
-                    	              		lv_properties_9_0, 
-                    	              		"CubeLevelProp");
-                    	      	        afterParserOrEnumRuleCall();
-                    	      	    
+                    	      						if (current==null) {
+                    	      							current = createModelElementForParent(grammarAccess.getCubeLevelRule());
+                    	      						}
+                    	      						add(
+                    	      							current,
+                    	      							"properties",
+                    	      							lv_properties_8_0,
+                    	      							"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeLevelProp");
+                    	      						afterParserOrEnumRuleCall();
+                    	      					
                     	    }
 
                     	    }
@@ -3002,17 +2989,14 @@
                         }
                     } while (true);
 
-                    otherlv_10=(Token)match(input,15,FOLLOW_15_in_ruleCubeLevel2176); if (state.failed) return current;
+                    otherlv_9=(Token)match(input,15,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_10, grammarAccess.getCubeLevelAccess().getRightCurlyBracketKeyword_6_1_2());
-                          
+                      				newLeafNode(otherlv_9, grammarAccess.getCubeLevelAccess().getRightCurlyBracketKeyword_6_2());
+                      			
                     }
 
                     }
-
-
-                    }
                     break;
 
             }
@@ -3024,14 +3008,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -3040,7 +3026,7 @@
 
 
     // $ANTLR start "entryRuleCubeLevelProp"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1116:1: entryRuleCubeLevelProp returns [EObject current=null] : iv_ruleCubeLevelProp= ruleCubeLevelProp EOF ;
+    // InternalCubeDSL.g:1130:1: entryRuleCubeLevelProp returns [EObject current=null] : iv_ruleCubeLevelProp= ruleCubeLevelProp EOF ;
     public final EObject entryRuleCubeLevelProp() throws RecognitionException {
         EObject current = null;
 
@@ -3048,13 +3034,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1117:2: (iv_ruleCubeLevelProp= ruleCubeLevelProp EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1118:2: iv_ruleCubeLevelProp= ruleCubeLevelProp EOF
+            // InternalCubeDSL.g:1130:54: (iv_ruleCubeLevelProp= ruleCubeLevelProp EOF )
+            // InternalCubeDSL.g:1131:2: iv_ruleCubeLevelProp= ruleCubeLevelProp EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getCubeLevelPropRule()); 
             }
-            pushFollow(FOLLOW_ruleCubeLevelProp_in_entryRuleCubeLevelProp2214);
+            pushFollow(FOLLOW_1);
             iv_ruleCubeLevelProp=ruleCubeLevelProp();
 
             state._fsp--;
@@ -3062,16 +3048,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleCubeLevelProp; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeLevelProp2224); 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;
@@ -3080,62 +3066,62 @@
 
 
     // $ANTLR start "ruleCubeLevelProp"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1125:1: ruleCubeLevelProp returns [EObject current=null] : (otherlv_0= 'property' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column=' ( ( ruleLFQN ) ) ( ( (lv_type_4_0= 'type=' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) ) )? otherlv_6= ';' ) ;
+    // InternalCubeDSL.g:1137:1: ruleCubeLevelProp returns [EObject current=null] : (otherlv_0= 'property' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column' ( ( ruleLFQN ) ) ( ( (lv_type_4_0= 'type' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) ) )? ) ;
     public final EObject ruleCubeLevelProp() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_0=null;
         Token otherlv_2=null;
         Token lv_type_4_0=null;
-        Token otherlv_6=null;
         AntlrDatatypeRuleToken lv_name_1_0 = null;
 
         Enumerator lv_typeValue_5_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1128:28: ( (otherlv_0= 'property' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column=' ( ( ruleLFQN ) ) ( ( (lv_type_4_0= 'type=' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) ) )? otherlv_6= ';' ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1129:1: (otherlv_0= 'property' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column=' ( ( ruleLFQN ) ) ( ( (lv_type_4_0= 'type=' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) ) )? otherlv_6= ';' )
+            // InternalCubeDSL.g:1143:2: ( (otherlv_0= 'property' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column' ( ( ruleLFQN ) ) ( ( (lv_type_4_0= 'type' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) ) )? ) )
+            // InternalCubeDSL.g:1144:2: (otherlv_0= 'property' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column' ( ( ruleLFQN ) ) ( ( (lv_type_4_0= 'type' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) ) )? )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1129:1: (otherlv_0= 'property' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column=' ( ( ruleLFQN ) ) ( ( (lv_type_4_0= 'type=' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) ) )? otherlv_6= ';' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1129:3: otherlv_0= 'property' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column=' ( ( ruleLFQN ) ) ( ( (lv_type_4_0= 'type=' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) ) )? otherlv_6= ';'
+            // InternalCubeDSL.g:1144:2: (otherlv_0= 'property' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column' ( ( ruleLFQN ) ) ( ( (lv_type_4_0= 'type' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) ) )? )
+            // InternalCubeDSL.g:1145:3: otherlv_0= 'property' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) otherlv_2= 'column' ( ( ruleLFQN ) ) ( ( (lv_type_4_0= 'type' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) ) )?
             {
-            otherlv_0=(Token)match(input,33,FOLLOW_33_in_ruleCubeLevelProp2261); if (state.failed) return current;
+            otherlv_0=(Token)match(input,32,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getCubeLevelPropAccess().getPropertyKeyword_0());
-                  
+              			newLeafNode(otherlv_0, grammarAccess.getCubeLevelPropAccess().getPropertyKeyword_0());
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1133:1: ( (lv_name_1_0= ruleTRANSLATABLEID ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1134:1: (lv_name_1_0= ruleTRANSLATABLEID )
+            // InternalCubeDSL.g:1149:3: ( (lv_name_1_0= ruleTRANSLATABLEID ) )
+            // InternalCubeDSL.g:1150:4: (lv_name_1_0= ruleTRANSLATABLEID )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1134:1: (lv_name_1_0= ruleTRANSLATABLEID )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1135:3: lv_name_1_0= ruleTRANSLATABLEID
+            // InternalCubeDSL.g:1150:4: (lv_name_1_0= ruleTRANSLATABLEID )
+            // InternalCubeDSL.g:1151:5: lv_name_1_0= ruleTRANSLATABLEID
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getCubeLevelPropAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getCubeLevelPropAccess().getNameTRANSLATABLEIDParserRuleCall_1_0());
+              				
             }
-            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_ruleCubeLevelProp2282);
+            pushFollow(FOLLOW_24);
             lv_name_1_0=ruleTRANSLATABLEID();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getCubeLevelPropRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"name",
-                      		lv_name_1_0, 
-                      		"TRANSLATABLEID");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getCubeLevelPropRule());
+              					}
+              					set(
+              						current,
+              						"name",
+              						lv_name_1_0,
+              						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.TRANSLATABLEID");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -3143,39 +3129,39 @@
 
             }
 
-            otherlv_2=(Token)match(input,30,FOLLOW_30_in_ruleCubeLevelProp2294); if (state.failed) return current;
+            otherlv_2=(Token)match(input,29,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_2, grammarAccess.getCubeLevelPropAccess().getColumnKeyword_2());
-                  
+              			newLeafNode(otherlv_2, grammarAccess.getCubeLevelPropAccess().getColumnKeyword_2());
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1155:1: ( ( ruleLFQN ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1156:1: ( ruleLFQN )
+            // InternalCubeDSL.g:1172:3: ( ( ruleLFQN ) )
+            // InternalCubeDSL.g:1173:4: ( ruleLFQN )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1156:1: ( ruleLFQN )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1157:3: ruleLFQN
+            // InternalCubeDSL.g:1173:4: ( ruleLFQN )
+            // InternalCubeDSL.g:1174:5: ruleLFQN
             {
             if ( state.backtracking==0 ) {
 
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getCubeLevelPropRule());
-              	        }
-                      
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getCubeLevelPropRule());
+              					}
+              				
             }
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueLEntityFeatureCrossReference_3_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getCubeLevelPropAccess().getLevelPropColValueLEntityFeatureCrossReference_3_0());
+              				
             }
-            pushFollow(FOLLOW_ruleLFQN_in_ruleCubeLevelProp2317);
+            pushFollow(FOLLOW_29);
             ruleLFQN();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-              	        afterParserOrEnumRuleCall();
-              	    
+
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -3183,36 +3169,36 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1170:2: ( ( (lv_type_4_0= 'type=' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) ) )?
+            // InternalCubeDSL.g:1188:3: ( ( (lv_type_4_0= 'type' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) ) )?
             int alt23=2;
             int LA23_0 = input.LA(1);
 
-            if ( (LA23_0==34) ) {
+            if ( (LA23_0==33) ) {
                 alt23=1;
             }
             switch (alt23) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1170:3: ( (lv_type_4_0= 'type=' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) )
+                    // InternalCubeDSL.g:1189:4: ( (lv_type_4_0= 'type' ) ) ( (lv_typeValue_5_0= ruleCubeLevelPropType ) )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1170:3: ( (lv_type_4_0= 'type=' ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1171:1: (lv_type_4_0= 'type=' )
+                    // InternalCubeDSL.g:1189:4: ( (lv_type_4_0= 'type' ) )
+                    // InternalCubeDSL.g:1190:5: (lv_type_4_0= 'type' )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1171:1: (lv_type_4_0= 'type=' )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1172:3: lv_type_4_0= 'type='
+                    // InternalCubeDSL.g:1190:5: (lv_type_4_0= 'type' )
+                    // InternalCubeDSL.g:1191:6: lv_type_4_0= 'type'
                     {
-                    lv_type_4_0=(Token)match(input,34,FOLLOW_34_in_ruleCubeLevelProp2336); if (state.failed) return current;
+                    lv_type_4_0=(Token)match(input,33,FOLLOW_30); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              newLeafNode(lv_type_4_0, grammarAccess.getCubeLevelPropAccess().getTypeTypeKeyword_4_0_0());
-                          
+                      						newLeafNode(lv_type_4_0, grammarAccess.getCubeLevelPropAccess().getTypeTypeKeyword_4_0_0());
+                      					
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getCubeLevelPropRule());
-                      	        }
-                             		setWithLastConsumed(current, "type", true, "type=");
-                      	    
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getCubeLevelPropRule());
+                      						}
+                      						setWithLastConsumed(current, "type", true, "type");
+                      					
                     }
 
                     }
@@ -3220,34 +3206,34 @@
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1185:2: ( (lv_typeValue_5_0= ruleCubeLevelPropType ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1186:1: (lv_typeValue_5_0= ruleCubeLevelPropType )
+                    // InternalCubeDSL.g:1203:4: ( (lv_typeValue_5_0= ruleCubeLevelPropType ) )
+                    // InternalCubeDSL.g:1204:5: (lv_typeValue_5_0= ruleCubeLevelPropType )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1186:1: (lv_typeValue_5_0= ruleCubeLevelPropType )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1187:3: lv_typeValue_5_0= ruleCubeLevelPropType
+                    // InternalCubeDSL.g:1204:5: (lv_typeValue_5_0= ruleCubeLevelPropType )
+                    // InternalCubeDSL.g:1205:6: lv_typeValue_5_0= ruleCubeLevelPropType
                     {
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getCubeLevelPropAccess().getTypeValueCubeLevelPropTypeEnumRuleCall_4_1_0()); 
-                      	    
+
+                      						newCompositeNode(grammarAccess.getCubeLevelPropAccess().getTypeValueCubeLevelPropTypeEnumRuleCall_4_1_0());
+                      					
                     }
-                    pushFollow(FOLLOW_ruleCubeLevelPropType_in_ruleCubeLevelProp2370);
+                    pushFollow(FOLLOW_2);
                     lv_typeValue_5_0=ruleCubeLevelPropType();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElementForParent(grammarAccess.getCubeLevelPropRule());
-                      	        }
-                             		set(
-                             			current, 
-                             			"typeValue",
-                              		lv_typeValue_5_0, 
-                              		"CubeLevelPropType");
-                      	        afterParserOrEnumRuleCall();
-                      	    
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getCubeLevelPropRule());
+                      						}
+                      						set(
+                      							current,
+                      							"typeValue",
+                      							lv_typeValue_5_0,
+                      							"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeLevelPropType");
+                      						afterParserOrEnumRuleCall();
+                      					
                     }
 
                     }
@@ -3261,12 +3247,6 @@
 
             }
 
-            otherlv_6=(Token)match(input,20,FOLLOW_20_in_ruleCubeLevelProp2384); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-                  	newLeafNode(otherlv_6, grammarAccess.getCubeLevelPropAccess().getSemicolonKeyword_5());
-                  
-            }
 
             }
 
@@ -3274,14 +3254,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -3290,7 +3272,7 @@
 
 
     // $ANTLR start "entryRuleCubeMeasure"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1215:1: entryRuleCubeMeasure returns [EObject current=null] : iv_ruleCubeMeasure= ruleCubeMeasure EOF ;
+    // InternalCubeDSL.g:1227:1: entryRuleCubeMeasure returns [EObject current=null] : iv_ruleCubeMeasure= ruleCubeMeasure EOF ;
     public final EObject entryRuleCubeMeasure() throws RecognitionException {
         EObject current = null;
 
@@ -3298,13 +3280,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1216:2: (iv_ruleCubeMeasure= ruleCubeMeasure EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1217:2: iv_ruleCubeMeasure= ruleCubeMeasure EOF
+            // InternalCubeDSL.g:1227:52: (iv_ruleCubeMeasure= ruleCubeMeasure EOF )
+            // InternalCubeDSL.g:1228:2: iv_ruleCubeMeasure= ruleCubeMeasure EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getCubeMeasureRule()); 
             }
-            pushFollow(FOLLOW_ruleCubeMeasure_in_entryRuleCubeMeasure2420);
+            pushFollow(FOLLOW_1);
             iv_ruleCubeMeasure=ruleCubeMeasure();
 
             state._fsp--;
@@ -3312,16 +3294,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleCubeMeasure; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeMeasure2430); 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;
@@ -3330,62 +3312,62 @@
 
 
     // $ANTLR start "ruleCubeMeasure"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1224:1: ruleCubeMeasure returns [EObject current=null] : (otherlv_0= 'measure' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_aggregator_2_0= ruleCubeAggregatorEnum ) ) otherlv_3= 'column=' ( ( ruleLFQN ) ) ( (lv_notVisible_5_0= 'notVisible' ) )? otherlv_6= ';' ) ;
+    // InternalCubeDSL.g:1234:1: ruleCubeMeasure returns [EObject current=null] : (otherlv_0= 'measure' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_aggregator_2_0= ruleCubeAggregatorEnum ) ) otherlv_3= 'column' ( ( ruleLFQN ) ) ( (lv_notVisible_5_0= 'notVisible' ) )? ) ;
     public final EObject ruleCubeMeasure() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_0=null;
         Token otherlv_3=null;
         Token lv_notVisible_5_0=null;
-        Token otherlv_6=null;
         AntlrDatatypeRuleToken lv_name_1_0 = null;
 
         Enumerator lv_aggregator_2_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1227:28: ( (otherlv_0= 'measure' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_aggregator_2_0= ruleCubeAggregatorEnum ) ) otherlv_3= 'column=' ( ( ruleLFQN ) ) ( (lv_notVisible_5_0= 'notVisible' ) )? otherlv_6= ';' ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1228:1: (otherlv_0= 'measure' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_aggregator_2_0= ruleCubeAggregatorEnum ) ) otherlv_3= 'column=' ( ( ruleLFQN ) ) ( (lv_notVisible_5_0= 'notVisible' ) )? otherlv_6= ';' )
+            // InternalCubeDSL.g:1240:2: ( (otherlv_0= 'measure' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_aggregator_2_0= ruleCubeAggregatorEnum ) ) otherlv_3= 'column' ( ( ruleLFQN ) ) ( (lv_notVisible_5_0= 'notVisible' ) )? ) )
+            // InternalCubeDSL.g:1241:2: (otherlv_0= 'measure' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_aggregator_2_0= ruleCubeAggregatorEnum ) ) otherlv_3= 'column' ( ( ruleLFQN ) ) ( (lv_notVisible_5_0= 'notVisible' ) )? )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1228:1: (otherlv_0= 'measure' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_aggregator_2_0= ruleCubeAggregatorEnum ) ) otherlv_3= 'column=' ( ( ruleLFQN ) ) ( (lv_notVisible_5_0= 'notVisible' ) )? otherlv_6= ';' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1228:3: otherlv_0= 'measure' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_aggregator_2_0= ruleCubeAggregatorEnum ) ) otherlv_3= 'column=' ( ( ruleLFQN ) ) ( (lv_notVisible_5_0= 'notVisible' ) )? otherlv_6= ';'
+            // InternalCubeDSL.g:1241:2: (otherlv_0= 'measure' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_aggregator_2_0= ruleCubeAggregatorEnum ) ) otherlv_3= 'column' ( ( ruleLFQN ) ) ( (lv_notVisible_5_0= 'notVisible' ) )? )
+            // InternalCubeDSL.g:1242:3: otherlv_0= 'measure' ( (lv_name_1_0= ruleTRANSLATABLEID ) ) ( (lv_aggregator_2_0= ruleCubeAggregatorEnum ) ) otherlv_3= 'column' ( ( ruleLFQN ) ) ( (lv_notVisible_5_0= 'notVisible' ) )?
             {
-            otherlv_0=(Token)match(input,35,FOLLOW_35_in_ruleCubeMeasure2467); if (state.failed) return current;
+            otherlv_0=(Token)match(input,34,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getCubeMeasureAccess().getMeasureKeyword_0());
-                  
+              			newLeafNode(otherlv_0, grammarAccess.getCubeMeasureAccess().getMeasureKeyword_0());
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1232:1: ( (lv_name_1_0= ruleTRANSLATABLEID ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1233:1: (lv_name_1_0= ruleTRANSLATABLEID )
+            // InternalCubeDSL.g:1246:3: ( (lv_name_1_0= ruleTRANSLATABLEID ) )
+            // InternalCubeDSL.g:1247:4: (lv_name_1_0= ruleTRANSLATABLEID )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1233:1: (lv_name_1_0= ruleTRANSLATABLEID )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1234:3: lv_name_1_0= ruleTRANSLATABLEID
+            // InternalCubeDSL.g:1247:4: (lv_name_1_0= ruleTRANSLATABLEID )
+            // InternalCubeDSL.g:1248:5: lv_name_1_0= ruleTRANSLATABLEID
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getCubeMeasureAccess().getNameTRANSLATABLEIDParserRuleCall_1_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getCubeMeasureAccess().getNameTRANSLATABLEIDParserRuleCall_1_0());
+              				
             }
-            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_ruleCubeMeasure2488);
+            pushFollow(FOLLOW_31);
             lv_name_1_0=ruleTRANSLATABLEID();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getCubeMeasureRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"name",
-                      		lv_name_1_0, 
-                      		"TRANSLATABLEID");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getCubeMeasureRule());
+              					}
+              					set(
+              						current,
+              						"name",
+              						lv_name_1_0,
+              						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.TRANSLATABLEID");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -3393,34 +3375,34 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1250:2: ( (lv_aggregator_2_0= ruleCubeAggregatorEnum ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1251:1: (lv_aggregator_2_0= ruleCubeAggregatorEnum )
+            // InternalCubeDSL.g:1265:3: ( (lv_aggregator_2_0= ruleCubeAggregatorEnum ) )
+            // InternalCubeDSL.g:1266:4: (lv_aggregator_2_0= ruleCubeAggregatorEnum )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1251:1: (lv_aggregator_2_0= ruleCubeAggregatorEnum )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1252:3: lv_aggregator_2_0= ruleCubeAggregatorEnum
+            // InternalCubeDSL.g:1266:4: (lv_aggregator_2_0= ruleCubeAggregatorEnum )
+            // InternalCubeDSL.g:1267:5: lv_aggregator_2_0= ruleCubeAggregatorEnum
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getCubeMeasureAccess().getAggregatorCubeAggregatorEnumEnumRuleCall_2_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getCubeMeasureAccess().getAggregatorCubeAggregatorEnumEnumRuleCall_2_0());
+              				
             }
-            pushFollow(FOLLOW_ruleCubeAggregatorEnum_in_ruleCubeMeasure2509);
+            pushFollow(FOLLOW_24);
             lv_aggregator_2_0=ruleCubeAggregatorEnum();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getCubeMeasureRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"aggregator",
-                      		lv_aggregator_2_0, 
-                      		"CubeAggregatorEnum");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getCubeMeasureRule());
+              					}
+              					set(
+              						current,
+              						"aggregator",
+              						lv_aggregator_2_0,
+              						"org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeAggregatorEnum");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -3428,39 +3410,39 @@
 
             }
 
-            otherlv_3=(Token)match(input,30,FOLLOW_30_in_ruleCubeMeasure2521); if (state.failed) return current;
+            otherlv_3=(Token)match(input,29,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_3, grammarAccess.getCubeMeasureAccess().getColumnKeyword_3());
-                  
+              			newLeafNode(otherlv_3, grammarAccess.getCubeMeasureAccess().getColumnKeyword_3());
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1272:1: ( ( ruleLFQN ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1273:1: ( ruleLFQN )
+            // InternalCubeDSL.g:1288:3: ( ( ruleLFQN ) )
+            // InternalCubeDSL.g:1289:4: ( ruleLFQN )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1273:1: ( ruleLFQN )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1274:3: ruleLFQN
+            // InternalCubeDSL.g:1289:4: ( ruleLFQN )
+            // InternalCubeDSL.g:1290:5: ruleLFQN
             {
             if ( state.backtracking==0 ) {
 
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getCubeMeasureRule());
-              	        }
-                      
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getCubeMeasureRule());
+              					}
+              				
             }
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getCubeMeasureAccess().getMeasureColLEntityFeatureCrossReference_4_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getCubeMeasureAccess().getMeasureColLEntityFeatureCrossReference_4_0());
+              				
             }
-            pushFollow(FOLLOW_ruleLFQN_in_ruleCubeMeasure2544);
+            pushFollow(FOLLOW_32);
             ruleLFQN();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-              	        afterParserOrEnumRuleCall();
-              	    
+
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -3468,33 +3450,33 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1287:2: ( (lv_notVisible_5_0= 'notVisible' ) )?
+            // InternalCubeDSL.g:1304:3: ( (lv_notVisible_5_0= 'notVisible' ) )?
             int alt24=2;
             int LA24_0 = input.LA(1);
 
-            if ( (LA24_0==36) ) {
+            if ( (LA24_0==35) ) {
                 alt24=1;
             }
             switch (alt24) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1288:1: (lv_notVisible_5_0= 'notVisible' )
+                    // InternalCubeDSL.g:1305:4: (lv_notVisible_5_0= 'notVisible' )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1288:1: (lv_notVisible_5_0= 'notVisible' )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1289:3: lv_notVisible_5_0= 'notVisible'
+                    // InternalCubeDSL.g:1305:4: (lv_notVisible_5_0= 'notVisible' )
+                    // InternalCubeDSL.g:1306:5: lv_notVisible_5_0= 'notVisible'
                     {
-                    lv_notVisible_5_0=(Token)match(input,36,FOLLOW_36_in_ruleCubeMeasure2562); if (state.failed) return current;
+                    lv_notVisible_5_0=(Token)match(input,35,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              newLeafNode(lv_notVisible_5_0, grammarAccess.getCubeMeasureAccess().getNotVisibleNotVisibleKeyword_5_0());
-                          
+                      					newLeafNode(lv_notVisible_5_0, grammarAccess.getCubeMeasureAccess().getNotVisibleNotVisibleKeyword_5_0());
+                      				
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getCubeMeasureRule());
-                      	        }
-                             		setWithLastConsumed(current, "notVisible", true, "notVisible");
-                      	    
+                      					if (current==null) {
+                      						current = createModelElement(grammarAccess.getCubeMeasureRule());
+                      					}
+                      					setWithLastConsumed(current, "notVisible", true, "notVisible");
+                      				
                     }
 
                     }
@@ -3505,12 +3487,6 @@
 
             }
 
-            otherlv_6=(Token)match(input,20,FOLLOW_20_in_ruleCubeMeasure2588); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-                  	newLeafNode(otherlv_6, grammarAccess.getCubeMeasureAccess().getSemicolonKeyword_6());
-                  
-            }
 
             }
 
@@ -3518,14 +3494,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -3533,521 +3511,8 @@
     // $ANTLR end "ruleCubeMeasure"
 
 
-    // $ANTLR start "entryRuleImport"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1314:1: entryRuleImport returns [EObject current=null] : iv_ruleImport= ruleImport EOF ;
-    public final EObject entryRuleImport() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleImport = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1315:2: (iv_ruleImport= ruleImport EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1316:2: iv_ruleImport= ruleImport EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getImportRule()); 
-            }
-            pushFollow(FOLLOW_ruleImport_in_entryRuleImport2624);
-            iv_ruleImport=ruleImport();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleImport; 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleImport2634); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleImport"
-
-
-    // $ANTLR start "ruleImport"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1323:1: ruleImport returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleCubeQualifiedNameWithWildCard ) ) otherlv_2= ';' ) ;
-    public final EObject ruleImport() throws RecognitionException {
-        EObject current = null;
-
-        Token otherlv_0=null;
-        Token otherlv_2=null;
-        AntlrDatatypeRuleToken lv_importedNamespace_1_0 = null;
-
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1326:28: ( (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleCubeQualifiedNameWithWildCard ) ) otherlv_2= ';' ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1327:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleCubeQualifiedNameWithWildCard ) ) otherlv_2= ';' )
-            {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1327:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleCubeQualifiedNameWithWildCard ) ) otherlv_2= ';' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1327:3: otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleCubeQualifiedNameWithWildCard ) ) otherlv_2= ';'
-            {
-            otherlv_0=(Token)match(input,37,FOLLOW_37_in_ruleImport2671); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-                  	newLeafNode(otherlv_0, grammarAccess.getImportAccess().getImportKeyword_0());
-                  
-            }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1331:1: ( (lv_importedNamespace_1_0= ruleCubeQualifiedNameWithWildCard ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1332:1: (lv_importedNamespace_1_0= ruleCubeQualifiedNameWithWildCard )
-            {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1332:1: (lv_importedNamespace_1_0= ruleCubeQualifiedNameWithWildCard )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1333:3: lv_importedNamespace_1_0= ruleCubeQualifiedNameWithWildCard
-            {
-            if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getImportAccess().getImportedNamespaceCubeQualifiedNameWithWildCardParserRuleCall_1_0()); 
-              	    
-            }
-            pushFollow(FOLLOW_ruleCubeQualifiedNameWithWildCard_in_ruleImport2692);
-            lv_importedNamespace_1_0=ruleCubeQualifiedNameWithWildCard();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getImportRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"importedNamespace",
-                      		lv_importedNamespace_1_0, 
-                      		"CubeQualifiedNameWithWildCard");
-              	        afterParserOrEnumRuleCall();
-              	    
-            }
-
-            }
-
-
-            }
-
-            otherlv_2=(Token)match(input,20,FOLLOW_20_in_ruleImport2704); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-                  	newLeafNode(otherlv_2, grammarAccess.getImportAccess().getSemicolonKeyword_2());
-                  
-            }
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleImport"
-
-
-    // $ANTLR start "entryRuleCubeQualifiedNameWithWildCard"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1361:1: entryRuleCubeQualifiedNameWithWildCard returns [String current=null] : iv_ruleCubeQualifiedNameWithWildCard= ruleCubeQualifiedNameWithWildCard EOF ;
-    public final String entryRuleCubeQualifiedNameWithWildCard() throws RecognitionException {
-        String current = null;
-
-        AntlrDatatypeRuleToken iv_ruleCubeQualifiedNameWithWildCard = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1362:2: (iv_ruleCubeQualifiedNameWithWildCard= ruleCubeQualifiedNameWithWildCard EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1363:2: iv_ruleCubeQualifiedNameWithWildCard= ruleCubeQualifiedNameWithWildCard EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getCubeQualifiedNameWithWildCardRule()); 
-            }
-            pushFollow(FOLLOW_ruleCubeQualifiedNameWithWildCard_in_entryRuleCubeQualifiedNameWithWildCard2741);
-            iv_ruleCubeQualifiedNameWithWildCard=ruleCubeQualifiedNameWithWildCard();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleCubeQualifiedNameWithWildCard.getText(); 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleCubeQualifiedNameWithWildCard2752); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleCubeQualifiedNameWithWildCard"
-
-
-    // $ANTLR start "ruleCubeQualifiedNameWithWildCard"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1370:1: ruleCubeQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? ) ;
-    public final AntlrDatatypeRuleToken ruleCubeQualifiedNameWithWildCard() throws RecognitionException {
-        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
-
-        Token kw=null;
-        AntlrDatatypeRuleToken this_QualifiedName_0 = null;
-
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1373:28: ( (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1374:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? )
-            {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1374:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1375:5: this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )?
-            {
-            if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getCubeQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
-                  
-            }
-            pushFollow(FOLLOW_ruleQualifiedName_in_ruleCubeQualifiedNameWithWildCard2799);
-            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();
-                  
-            }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1385:1: (kw= '.' kw= '*' )?
-            int alt25=2;
-            int LA25_0 = input.LA(1);
-
-            if ( (LA25_0==38) ) {
-                alt25=1;
-            }
-            switch (alt25) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1386:2: kw= '.' kw= '*'
-                    {
-                    kw=(Token)match(input,38,FOLLOW_38_in_ruleCubeQualifiedNameWithWildCard2818); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getCubeQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); 
-                          
-                    }
-                    kw=(Token)match(input,39,FOLLOW_39_in_ruleCubeQualifiedNameWithWildCard2831); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getCubeQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); 
-                          
-                    }
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleCubeQualifiedNameWithWildCard"
-
-
-    // $ANTLR start "entryRuleQualifiedName"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1405: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1406:2: (iv_ruleQualifiedName= ruleQualifiedName EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1407:2: iv_ruleQualifiedName= ruleQualifiedName EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getQualifiedNameRule()); 
-            }
-            pushFollow(FOLLOW_ruleQualifiedName_in_entryRuleQualifiedName2874);
-            iv_ruleQualifiedName=ruleQualifiedName();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleQualifiedName.getText(); 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleQualifiedName2885); 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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1414: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1417:28: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1418:1: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
-            {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1418:1: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1419:5: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
-            {
-            if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0()); 
-                  
-            }
-            pushFollow(FOLLOW_ruleValidID_in_ruleQualifiedName2932);
-            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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1429:1: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
-            loop26:
-            do {
-                int alt26=2;
-                int LA26_0 = input.LA(1);
-
-                if ( (LA26_0==38) ) {
-                    int LA26_2 = input.LA(2);
-
-                    if ( (LA26_2==RULE_ID) ) {
-                        int LA26_3 = input.LA(3);
-
-                        if ( (synpred1_InternalCubeDSL()) ) {
-                            alt26=1;
-                        }
-
-
-                    }
-
-
-                }
-
-
-                switch (alt26) {
-            	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1429:2: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1429:2: ( ( '.' )=>kw= '.' )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1429:3: ( '.' )=>kw= '.'
-            	    {
-            	    kw=(Token)match(input,38,FOLLOW_38_in_ruleQualifiedName2960); 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_ruleQualifiedName2983);
-            	    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 loop26;
-                }
-            } 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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1456: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1457:2: (iv_ruleValidID= ruleValidID EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1458:2: iv_ruleValidID= ruleValidID EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getValidIDRule()); 
-            }
-            pushFollow(FOLLOW_ruleValidID_in_entryRuleValidID3031);
-            iv_ruleValidID=ruleValidID();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleValidID.getText(); 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleValidID3042); 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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1465: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1468:28: (this_ID_0= RULE_ID )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1469:5: this_ID_0= RULE_ID
-            {
-            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleValidID3081); 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 "entryRuleLFQN"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1484:1: entryRuleLFQN returns [String current=null] : iv_ruleLFQN= ruleLFQN EOF ;
+    // InternalCubeDSL.g:1322:1: entryRuleLFQN returns [String current=null] : iv_ruleLFQN= ruleLFQN EOF ;
     public final String entryRuleLFQN() throws RecognitionException {
         String current = null;
 
@@ -4055,13 +3520,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1485:2: (iv_ruleLFQN= ruleLFQN EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1486:2: iv_ruleLFQN= ruleLFQN EOF
+            // InternalCubeDSL.g:1322:44: (iv_ruleLFQN= ruleLFQN EOF )
+            // InternalCubeDSL.g:1323:2: iv_ruleLFQN= ruleLFQN EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getLFQNRule()); 
             }
-            pushFollow(FOLLOW_ruleLFQN_in_entryRuleLFQN3126);
+            pushFollow(FOLLOW_1);
             iv_ruleLFQN=ruleLFQN();
 
             state._fsp--;
@@ -4069,16 +3534,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleLFQN.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleLFQN3137); 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;
@@ -4087,7 +3552,7 @@
 
 
     // $ANTLR start "ruleLFQN"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1493:1: ruleLFQN returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
+    // InternalCubeDSL.g:1329:1: ruleLFQN returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
     public final AntlrDatatypeRuleToken ruleLFQN() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
@@ -4095,65 +3560,66 @@
         Token kw=null;
         Token this_ID_2=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1496:28: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1497:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
+            // InternalCubeDSL.g:1335:2: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
+            // InternalCubeDSL.g:1336:2: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1497:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1497:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
+            // InternalCubeDSL.g:1336:2: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
+            // InternalCubeDSL.g:1337:3: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
             {
-            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleLFQN3177); if (state.failed) return current;
+            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_33); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              		current.merge(this_ID_0);
-                  
+              			current.merge(this_ID_0);
+              		
             }
             if ( state.backtracking==0 ) {
-               
-                  newLeafNode(this_ID_0, grammarAccess.getLFQNAccess().getIDTerminalRuleCall_0()); 
-                  
+
+              			newLeafNode(this_ID_0, grammarAccess.getLFQNAccess().getIDTerminalRuleCall_0());
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1504:1: (kw= '.' this_ID_2= RULE_ID )*
-            loop27:
+            // InternalCubeDSL.g:1344:3: (kw= '.' this_ID_2= RULE_ID )*
+            loop25:
             do {
-                int alt27=2;
-                int LA27_0 = input.LA(1);
+                int alt25=2;
+                int LA25_0 = input.LA(1);
 
-                if ( (LA27_0==38) ) {
-                    alt27=1;
+                if ( (LA25_0==36) ) {
+                    alt25=1;
                 }
 
 
-                switch (alt27) {
+                switch (alt25) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1505:2: kw= '.' this_ID_2= RULE_ID
+            	    // InternalCubeDSL.g:1345:4: kw= '.' this_ID_2= RULE_ID
             	    {
-            	    kw=(Token)match(input,38,FOLLOW_38_in_ruleLFQN3196); if (state.failed) return current;
+            	    kw=(Token)match(input,36,FOLLOW_4); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	              current.merge(kw);
-            	              newLeafNode(kw, grammarAccess.getLFQNAccess().getFullStopKeyword_1_0()); 
-            	          
+            	      				current.merge(kw);
+            	      				newLeafNode(kw, grammarAccess.getLFQNAccess().getFullStopKeyword_1_0());
+            	      			
             	    }
-            	    this_ID_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleLFQN3211); if (state.failed) return current;
+            	    this_ID_2=(Token)match(input,RULE_ID,FOLLOW_33); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      		current.merge(this_ID_2);
-            	          
+            	      				current.merge(this_ID_2);
+            	      			
             	    }
             	    if ( state.backtracking==0 ) {
-            	       
-            	          newLeafNode(this_ID_2, grammarAccess.getLFQNAccess().getIDTerminalRuleCall_1_1()); 
-            	          
+
+            	      				newLeafNode(this_ID_2, grammarAccess.getLFQNAccess().getIDTerminalRuleCall_1_1());
+            	      			
             	    }
 
             	    }
             	    break;
 
             	default :
-            	    break loop27;
+            	    break loop25;
                 }
             } while (true);
 
@@ -4164,14 +3630,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4180,7 +3648,7 @@
 
 
     // $ANTLR start "entryRuleTRANSLATABLEID"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1525:1: entryRuleTRANSLATABLEID returns [String current=null] : iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF ;
+    // InternalCubeDSL.g:1362:1: entryRuleTRANSLATABLEID returns [String current=null] : iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF ;
     public final String entryRuleTRANSLATABLEID() throws RecognitionException {
         String current = null;
 
@@ -4188,13 +3656,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1526:2: (iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1527:2: iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF
+            // InternalCubeDSL.g:1362:54: (iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF )
+            // InternalCubeDSL.g:1363:2: iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTRANSLATABLEIDRule()); 
             }
-            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_entryRuleTRANSLATABLEID3259);
+            pushFollow(FOLLOW_1);
             iv_ruleTRANSLATABLEID=ruleTRANSLATABLEID();
 
             state._fsp--;
@@ -4202,16 +3670,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTRANSLATABLEID.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleTRANSLATABLEID3270); 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;
@@ -4220,41 +3688,44 @@
 
 
     // $ANTLR start "ruleTRANSLATABLEID"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1534:1: ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
+    // InternalCubeDSL.g:1369: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(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1537:28: (this_ID_0= RULE_ID )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1538:5: this_ID_0= RULE_ID
+            // InternalCubeDSL.g:1375:2: (this_ID_0= RULE_ID )
+            // InternalCubeDSL.g:1376:2: this_ID_0= RULE_ID
             {
-            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTRANSLATABLEID3309); if (state.failed) return current;
+            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()); 
-                  
+
+              		newLeafNode(this_ID_0, grammarAccess.getTRANSLATABLEIDAccess().getIDTerminalRuleCall());
+              	
             }
 
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4263,7 +3734,7 @@
 
 
     // $ANTLR start "entryRuleTRANSLATABLESTRING"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1553:1: entryRuleTRANSLATABLESTRING returns [String current=null] : iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF ;
+    // InternalCubeDSL.g:1386:1: entryRuleTRANSLATABLESTRING returns [String current=null] : iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF ;
     public final String entryRuleTRANSLATABLESTRING() throws RecognitionException {
         String current = null;
 
@@ -4271,13 +3742,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1554:2: (iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1555:2: iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF
+            // InternalCubeDSL.g:1386:58: (iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF )
+            // InternalCubeDSL.g:1387:2: iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTRANSLATABLESTRINGRule()); 
             }
-            pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_entryRuleTRANSLATABLESTRING3354);
+            pushFollow(FOLLOW_1);
             iv_ruleTRANSLATABLESTRING=ruleTRANSLATABLESTRING();
 
             state._fsp--;
@@ -4285,16 +3756,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTRANSLATABLESTRING.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleTRANSLATABLESTRING3365); 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;
@@ -4303,41 +3774,44 @@
 
 
     // $ANTLR start "ruleTRANSLATABLESTRING"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1562:1: ruleTRANSLATABLESTRING returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_STRING_0= RULE_STRING ;
+    // InternalCubeDSL.g:1393: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(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1565:28: (this_STRING_0= RULE_STRING )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1566:5: this_STRING_0= RULE_STRING
+            // InternalCubeDSL.g:1399:2: (this_STRING_0= RULE_STRING )
+            // InternalCubeDSL.g:1400:2: this_STRING_0= RULE_STRING
             {
-            this_STRING_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleTRANSLATABLESTRING3404); if (state.failed) return current;
+            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 ) {
-               
-                  newLeafNode(this_STRING_0, grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall()); 
-                  
+
+              		newLeafNode(this_STRING_0, grammarAccess.getTRANSLATABLESTRINGAccess().getSTRINGTerminalRuleCall());
+              	
             }
 
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4345,8 +3819,506 @@
     // $ANTLR end "ruleTRANSLATABLESTRING"
 
 
+    // $ANTLR start "entryRuleXImportDeclaration"
+    // InternalCubeDSL.g:1410:1: entryRuleXImportDeclaration returns [EObject current=null] : iv_ruleXImportDeclaration= ruleXImportDeclaration EOF ;
+    public final EObject entryRuleXImportDeclaration() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXImportDeclaration = null;
+
+
+        try {
+            // InternalCubeDSL.g:1410:59: (iv_ruleXImportDeclaration= ruleXImportDeclaration EOF )
+            // InternalCubeDSL.g:1411: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"
+    // InternalCubeDSL.g:1417: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 {
+            // InternalCubeDSL.g:1423: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= ';' )? ) )
+            // InternalCubeDSL.g:1424: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= ';' )? )
+            {
+            // InternalCubeDSL.g:1424: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= ';' )? )
+            // InternalCubeDSL.g:1425: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= ';' )?
+            {
+            // InternalCubeDSL.g:1425:3: ()
+            // InternalCubeDSL.g:1426:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXImportDeclarationAccess().getOXImportDeclarationAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,37,FOLLOW_34); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXImportDeclarationAccess().getImportKeyword_1());
+              		
+            }
+            // InternalCubeDSL.g:1436: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 alt28=4;
+            alt28 = dfa28.predict(input);
+            switch (alt28) {
+                case 1 :
+                    // InternalCubeDSL.g:1437:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
+                    {
+                    // InternalCubeDSL.g:1437:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
+                    // InternalCubeDSL.g:1438:5: ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
+                    {
+                    // InternalCubeDSL.g:1438:5: ( (lv_static_2_0= 'static' ) )
+                    // InternalCubeDSL.g:1439:6: (lv_static_2_0= 'static' )
+                    {
+                    // InternalCubeDSL.g:1439:6: (lv_static_2_0= 'static' )
+                    // InternalCubeDSL.g:1440:7: lv_static_2_0= 'static'
+                    {
+                    lv_static_2_0=(Token)match(input,38,FOLLOW_35); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							newLeafNode(lv_static_2_0, grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0());
+                      						
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      							if (current==null) {
+                      								current = createModelElement(grammarAccess.getXImportDeclarationRule());
+                      							}
+                      							setWithLastConsumed(current, "static", true, "static");
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalCubeDSL.g:1452:5: ( (lv_extension_3_0= 'extension' ) )?
+                    int alt26=2;
+                    int LA26_0 = input.LA(1);
+
+                    if ( (LA26_0==39) ) {
+                        alt26=1;
+                    }
+                    switch (alt26) {
+                        case 1 :
+                            // InternalCubeDSL.g:1453:6: (lv_extension_3_0= 'extension' )
+                            {
+                            // InternalCubeDSL.g:1453:6: (lv_extension_3_0= 'extension' )
+                            // InternalCubeDSL.g:1454:7: lv_extension_3_0= 'extension'
+                            {
+                            lv_extension_3_0=(Token)match(input,39,FOLLOW_35); 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;
+
+                    }
+
+                    // InternalCubeDSL.g:1466:5: ( ( ruleQualifiedNameInStaticImport ) )
+                    // InternalCubeDSL.g:1467:6: ( ruleQualifiedNameInStaticImport )
+                    {
+                    // InternalCubeDSL.g:1467:6: ( ruleQualifiedNameInStaticImport )
+                    // InternalCubeDSL.g:1468: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_36);
+                    ruleQualifiedNameInStaticImport();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							afterParserOrEnumRuleCall();
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalCubeDSL.g:1482:5: ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
+                    int alt27=2;
+                    int LA27_0 = input.LA(1);
+
+                    if ( (LA27_0==40) ) {
+                        alt27=1;
+                    }
+                    else if ( (LA27_0==RULE_ID) ) {
+                        alt27=2;
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 27, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt27) {
+                        case 1 :
+                            // InternalCubeDSL.g:1483:6: ( (lv_wildcard_5_0= '*' ) )
+                            {
+                            // InternalCubeDSL.g:1483:6: ( (lv_wildcard_5_0= '*' ) )
+                            // InternalCubeDSL.g:1484:7: (lv_wildcard_5_0= '*' )
+                            {
+                            // InternalCubeDSL.g:1484:7: (lv_wildcard_5_0= '*' )
+                            // InternalCubeDSL.g:1485:8: lv_wildcard_5_0= '*'
+                            {
+                            lv_wildcard_5_0=(Token)match(input,40,FOLLOW_37); 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 :
+                            // InternalCubeDSL.g:1498:6: ( (lv_memberName_6_0= ruleValidID ) )
+                            {
+                            // InternalCubeDSL.g:1498:6: ( (lv_memberName_6_0= ruleValidID ) )
+                            // InternalCubeDSL.g:1499:7: (lv_memberName_6_0= ruleValidID )
+                            {
+                            // InternalCubeDSL.g:1499:7: (lv_memberName_6_0= ruleValidID )
+                            // InternalCubeDSL.g:1500:8: lv_memberName_6_0= ruleValidID
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								newCompositeNode(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_2_0_3_1_0());
+                              							
+                            }
+                            pushFollow(FOLLOW_37);
+                            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 :
+                    // InternalCubeDSL.g:1520:4: ( ( ruleQualifiedName ) )
+                    {
+                    // InternalCubeDSL.g:1520:4: ( ( ruleQualifiedName ) )
+                    // InternalCubeDSL.g:1521:5: ( ruleQualifiedName )
+                    {
+                    // InternalCubeDSL.g:1521:5: ( ruleQualifiedName )
+                    // InternalCubeDSL.g:1522: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_37);
+                    ruleQualifiedName();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalCubeDSL.g:1537:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
+                    {
+                    // InternalCubeDSL.g:1537:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
+                    // InternalCubeDSL.g:1538:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
+                    {
+                    // InternalCubeDSL.g:1538:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
+                    // InternalCubeDSL.g:1539:6: lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_2_2_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_37);
+                    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 :
+                    // InternalCubeDSL.g:1557:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
+                    {
+                    // InternalCubeDSL.g:1557:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
+                    // InternalCubeDSL.g:1558:5: ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
+                    {
+                    // InternalCubeDSL.g:1558:5: ( (lv_fqnImport_9_0= 'ns' ) )
+                    // InternalCubeDSL.g:1559:6: (lv_fqnImport_9_0= 'ns' )
+                    {
+                    // InternalCubeDSL.g:1559:6: (lv_fqnImport_9_0= 'ns' )
+                    // InternalCubeDSL.g:1560:7: lv_fqnImport_9_0= 'ns'
+                    {
+                    lv_fqnImport_9_0=(Token)match(input,41,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");
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalCubeDSL.g:1572:5: ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
+                    // InternalCubeDSL.g:1573:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
+                    {
+                    // InternalCubeDSL.g:1573:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
+                    // InternalCubeDSL.g:1574:7: lv_importedFullyQualifiedName_10_0= ruleQualifiedName
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameQualifiedNameParserRuleCall_2_3_1_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_37);
+                    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;
+
+            }
+
+            // InternalCubeDSL.g:1593:3: (otherlv_11= ';' )?
+            int alt29=2;
+            int LA29_0 = input.LA(1);
+
+            if ( (LA29_0==42) ) {
+                alt29=1;
+            }
+            switch (alt29) {
+                case 1 :
+                    // InternalCubeDSL.g:1594:4: otherlv_11= ';'
+                    {
+                    otherlv_11=(Token)match(input,42,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_11, grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXImportDeclaration"
+
+
     // $ANTLR start "entryRuleXAnnotation"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1581:1: entryRuleXAnnotation returns [EObject current=null] : iv_ruleXAnnotation= ruleXAnnotation EOF ;
+    // InternalCubeDSL.g:1603:1: entryRuleXAnnotation returns [EObject current=null] : iv_ruleXAnnotation= ruleXAnnotation EOF ;
     public final EObject entryRuleXAnnotation() throws RecognitionException {
         EObject current = null;
 
@@ -4354,13 +4326,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1582:2: (iv_ruleXAnnotation= ruleXAnnotation EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1583:2: iv_ruleXAnnotation= ruleXAnnotation EOF
+            // InternalCubeDSL.g:1603:52: (iv_ruleXAnnotation= ruleXAnnotation EOF )
+            // InternalCubeDSL.g:1604:2: iv_ruleXAnnotation= ruleXAnnotation EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationRule()); 
             }
-            pushFollow(FOLLOW_ruleXAnnotation_in_entryRuleXAnnotation3448);
+            pushFollow(FOLLOW_1);
             iv_ruleXAnnotation=ruleXAnnotation();
 
             state._fsp--;
@@ -4368,16 +4340,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAnnotation; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotation3458); 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;
@@ -4386,7 +4358,7 @@
 
 
     // $ANTLR start "ruleXAnnotation"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1590: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= ')' )? ) ;
+    // InternalCubeDSL.g:1610: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;
 
@@ -4401,61 +4373,62 @@
         EObject lv_value_7_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1593: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1594: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= ')' )? )
+            // InternalCubeDSL.g:1616: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= ')' )? ) )
+            // InternalCubeDSL.g:1617: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1594: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1594: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= ')' )?
+            // InternalCubeDSL.g:1617: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= ')' )? )
+            // InternalCubeDSL.g:1618: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1594:2: ()
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1595:5: 
+            // InternalCubeDSL.g:1618:3: ()
+            // InternalCubeDSL.g:1619:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getXAnnotationAccess().getXAnnotationAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getXAnnotationAccess().getXAnnotationAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,40,FOLLOW_40_in_ruleXAnnotation3504); if (state.failed) return current;
+            otherlv_1=(Token)match(input,43,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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1604:1: ( ( ruleQualifiedName ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1605:1: ( ruleQualifiedName )
+            // InternalCubeDSL.g:1629:3: ( ( ruleQualifiedName ) )
+            // InternalCubeDSL.g:1630:4: ( ruleQualifiedName )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1605:1: ( ruleQualifiedName )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1606:3: ruleQualifiedName
+            // InternalCubeDSL.g:1630:4: ( ruleQualifiedName )
+            // InternalCubeDSL.g:1631: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_ruleXAnnotation3527);
+            pushFollow(FOLLOW_38);
             ruleQualifiedName();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-              	        afterParserOrEnumRuleCall();
-              	    
+
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -4463,67 +4436,67 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1619: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 alt30=2;
-            int LA30_0 = input.LA(1);
+            // InternalCubeDSL.g:1645: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 alt32=2;
+            int LA32_0 = input.LA(1);
 
-            if ( (LA30_0==41) && (synpred2_InternalCubeDSL())) {
-                alt30=1;
+            if ( (LA32_0==44) && (synpred1_InternalCubeDSL())) {
+                alt32=1;
             }
-            switch (alt30) {
+            switch (alt32) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1619:3: ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')'
+                    // InternalCubeDSL.g:1646: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1619:3: ( ( '(' )=>otherlv_3= '(' )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1619:4: ( '(' )=>otherlv_3= '('
+                    // InternalCubeDSL.g:1646:4: ( ( '(' )=>otherlv_3= '(' )
+                    // InternalCubeDSL.g:1647:5: ( '(' )=>otherlv_3= '('
                     {
-                    otherlv_3=(Token)match(input,41,FOLLOW_41_in_ruleXAnnotation3548); if (state.failed) return current;
+                    otherlv_3=(Token)match(input,44,FOLLOW_39); 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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1624:2: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?
-                    int alt29=3;
-                    alt29 = dfa29.predict(input);
-                    switch (alt29) {
+                    // InternalCubeDSL.g:1653:4: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?
+                    int alt31=3;
+                    alt31 = dfa31.predict(input);
+                    switch (alt31) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1624:3: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            // InternalCubeDSL.g:1654:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
                             {
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1624:3: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1624:4: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
+                            // InternalCubeDSL.g:1654:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            // InternalCubeDSL.g:1655:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
                             {
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1624:4: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) )
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1624:5: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            // InternalCubeDSL.g:1655:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) )
+                            // InternalCubeDSL.g:1656:7: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
                             {
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1630:1: (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1631:3: lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair
+                            // InternalCubeDSL.g:1665:7: (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            // InternalCubeDSL.g:1666: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_ruleXAnnotation3592);
+                            pushFollow(FOLLOW_40);
                             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();
+                              							
                             }
 
                             }
@@ -4531,55 +4504,55 @@
 
                             }
 
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1647:2: (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
-                            loop28:
+                            // InternalCubeDSL.g:1683:6: (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
+                            loop30:
                             do {
-                                int alt28=2;
-                                int LA28_0 = input.LA(1);
+                                int alt30=2;
+                                int LA30_0 = input.LA(1);
 
-                                if ( (LA28_0==42) ) {
-                                    alt28=1;
+                                if ( (LA30_0==45) ) {
+                                    alt30=1;
                                 }
 
 
-                                switch (alt28) {
+                                switch (alt30) {
                             	case 1 :
-                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1647:4: otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
+                            	    // InternalCubeDSL.g:1684:7: otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
                             	    {
-                            	    otherlv_5=(Token)match(input,42,FOLLOW_42_in_ruleXAnnotation3605); if (state.failed) return current;
+                            	    otherlv_5=(Token)match(input,45,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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1651:1: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
-                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1651:2: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
+                            	    // InternalCubeDSL.g:1688:7: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
+                            	    // InternalCubeDSL.g:1689:8: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
                             	    {
-                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1657:1: (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
-                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1658:3: lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair
+                            	    // InternalCubeDSL.g:1698:8: (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
+                            	    // InternalCubeDSL.g:1699: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_ruleXAnnotation3646);
+                            	    pushFollow(FOLLOW_40);
                             	    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();
+                            	      								
                             	    }
 
                             	    }
@@ -4592,7 +4565,7 @@
                             	    break;
 
                             	default :
-                            	    break loop28;
+                            	    break loop30;
                                 }
                             } while (true);
 
@@ -4603,36 +4576,36 @@
                             }
                             break;
                         case 2 :
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1675:6: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            // InternalCubeDSL.g:1719:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
                             {
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1675:6: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1676:1: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            // InternalCubeDSL.g:1719:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            // InternalCubeDSL.g:1720:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
                             {
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1676:1: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1677:3: lv_value_7_0= ruleXAnnotationElementValueOrCommaList
+                            // InternalCubeDSL.g:1720:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            // InternalCubeDSL.g:1721: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_ruleXAnnotation3676);
+                            pushFollow(FOLLOW_41);
                             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();
+                              						
                             }
 
                             }
@@ -4646,11 +4619,11 @@
 
                     }
 
-                    otherlv_8=(Token)match(input,43,FOLLOW_43_in_ruleXAnnotation3690); if (state.failed) return current;
+                    otherlv_8=(Token)match(input,46,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());
+                      			
                     }
 
                     }
@@ -4665,14 +4638,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4681,7 +4656,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValuePair"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1705:1: entryRuleXAnnotationElementValuePair returns [EObject current=null] : iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF ;
+    // InternalCubeDSL.g:1748:1: entryRuleXAnnotationElementValuePair returns [EObject current=null] : iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF ;
     public final EObject entryRuleXAnnotationElementValuePair() throws RecognitionException {
         EObject current = null;
 
@@ -4689,13 +4664,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1706:2: (iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1707:2: iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF
+            // InternalCubeDSL.g:1748:68: (iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF )
+            // InternalCubeDSL.g:1749:2: iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationElementValuePairRule()); 
             }
-            pushFollow(FOLLOW_ruleXAnnotationElementValuePair_in_entryRuleXAnnotationElementValuePair3728);
+            pushFollow(FOLLOW_1);
             iv_ruleXAnnotationElementValuePair=ruleXAnnotationElementValuePair();
 
             state._fsp--;
@@ -4703,16 +4678,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAnnotationElementValuePair; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValuePair3738); 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;
@@ -4721,7 +4696,7 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValuePair"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1714:1: ruleXAnnotationElementValuePair returns [EObject current=null] : ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) ;
+    // InternalCubeDSL.g:1755:1: ruleXAnnotationElementValuePair returns [EObject current=null] : ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) ;
     public final EObject ruleXAnnotationElementValuePair() throws RecognitionException {
         EObject current = null;
 
@@ -4729,48 +4704,49 @@
         EObject lv_value_2_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1717:28: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1718:1: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            // InternalCubeDSL.g:1761:2: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) )
+            // InternalCubeDSL.g:1762:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1718:1: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1718:2: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            // InternalCubeDSL.g:1762:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            // InternalCubeDSL.g:1763:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1718:2: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1718:3: ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            // InternalCubeDSL.g:1763:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) )
+            // InternalCubeDSL.g:1764:4: ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1723:5: ( ( ( ruleValidID ) ) otherlv_1= '=' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1723:6: ( ( ruleValidID ) ) otherlv_1= '='
+            // InternalCubeDSL.g:1773:4: ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            // InternalCubeDSL.g:1774:5: ( ( ruleValidID ) ) otherlv_1= '='
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1723:6: ( ( ruleValidID ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1724:1: ( ruleValidID )
+            // InternalCubeDSL.g:1774:5: ( ( ruleValidID ) )
+            // InternalCubeDSL.g:1775:6: ( ruleValidID )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1724:1: ( ruleValidID )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1725:3: ruleValidID
+            // InternalCubeDSL.g:1775:6: ( ruleValidID )
+            // InternalCubeDSL.g:1776: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_ruleXAnnotationElementValuePair3808);
+            pushFollow(FOLLOW_42);
             ruleValidID();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-              	        afterParserOrEnumRuleCall();
-              	    
+
+              							afterParserOrEnumRuleCall();
+              						
             }
 
             }
@@ -4778,11 +4754,11 @@
 
             }
 
-            otherlv_1=(Token)match(input,44,FOLLOW_44_in_ruleXAnnotationElementValuePair3820); if (state.failed) return current;
+            otherlv_1=(Token)match(input,47,FOLLOW_43); 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());
+              				
             }
 
             }
@@ -4790,34 +4766,34 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1742:3: ( (lv_value_2_0= ruleXAnnotationElementValue ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1743:1: (lv_value_2_0= ruleXAnnotationElementValue )
+            // InternalCubeDSL.g:1796:3: ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            // InternalCubeDSL.g:1797:4: (lv_value_2_0= ruleXAnnotationElementValue )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1743:1: (lv_value_2_0= ruleXAnnotationElementValue )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1744:3: lv_value_2_0= ruleXAnnotationElementValue
+            // InternalCubeDSL.g:1797:4: (lv_value_2_0= ruleXAnnotationElementValue )
+            // InternalCubeDSL.g:1798: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_ruleXAnnotationElementValuePair3843);
+            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();
+              				
             }
 
             }
@@ -4832,14 +4808,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4848,7 +4826,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValueOrCommaList"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1768:1: entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] : iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF ;
+    // InternalCubeDSL.g:1819:1: entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] : iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF ;
     public final EObject entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
         EObject current = null;
 
@@ -4856,13 +4834,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1769:2: (iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1770:2: iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF
+            // InternalCubeDSL.g:1819:75: (iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF )
+            // InternalCubeDSL.g:1820:2: iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
             }
-            pushFollow(FOLLOW_ruleXAnnotationElementValueOrCommaList_in_entryRuleXAnnotationElementValueOrCommaList3879);
+            pushFollow(FOLLOW_1);
             iv_ruleXAnnotationElementValueOrCommaList=ruleXAnnotationElementValueOrCommaList();
 
             state._fsp--;
@@ -4870,16 +4848,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAnnotationElementValueOrCommaList; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValueOrCommaList3889); 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;
@@ -4888,7 +4866,7 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValueOrCommaList"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1777: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 ) ) )+ )? ) ) ;
+    // InternalCubeDSL.g:1826: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;
 
@@ -4906,52 +4884,53 @@
         EObject lv_elements_10_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1780: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1781: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 ) ) )+ )? ) )
+            // InternalCubeDSL.g:1832: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 ) ) )+ )? ) ) )
+            // InternalCubeDSL.g:1833: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1781: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 alt35=2;
-            alt35 = dfa35.predict(input);
-            switch (alt35) {
+            // InternalCubeDSL.g:1833: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 alt37=2;
+            alt37 = dfa37.predict(input);
+            switch (alt37) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1781:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalCubeDSL.g:1834:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1781:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1781:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    // InternalCubeDSL.g:1834:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalCubeDSL.g:1835:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1781:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1781:4: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalCubeDSL.g:1835:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // InternalCubeDSL.g:1836:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1784:5: ( () otherlv_1= '#' otherlv_2= '[' )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1784:6: () otherlv_1= '#' otherlv_2= '['
+                    // InternalCubeDSL.g:1843:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalCubeDSL.g:1844:6: () otherlv_1= '#' otherlv_2= '['
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1784:6: ()
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1785:5: 
+                    // InternalCubeDSL.g:1844:6: ()
+                    // InternalCubeDSL.g:1845: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,45,FOLLOW_45_in_ruleXAnnotationElementValueOrCommaList3954); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,48,FOLLOW_44); 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,46,FOLLOW_46_in_ruleXAnnotationElementValueOrCommaList3966); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,49,FOLLOW_45); 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());
+                      					
                     }
 
                     }
@@ -4959,45 +4938,45 @@
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1798:3: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
-                    int alt32=2;
-                    int LA32_0 = input.LA(1);
+                    // InternalCubeDSL.g:1861:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    int alt34=2;
+                    int LA34_0 = input.LA(1);
 
-                    if ( ((LA32_0>=RULE_ID && LA32_0<=RULE_DECIMAL)||LA32_0==14||LA32_0==37||(LA32_0>=40 && LA32_0<=41)||(LA32_0>=45 && LA32_0<=46)||LA32_0==53||(LA32_0>=69 && LA32_0<=70)||LA32_0==74||LA32_0==81||LA32_0==83||(LA32_0>=87 && LA32_0<=89)||(LA32_0>=92 && LA32_0<=103)||LA32_0==105) ) {
-                        alt32=1;
+                    if ( ((LA34_0>=RULE_ID && LA34_0<=RULE_DECIMAL)||LA34_0==14||(LA34_0>=37 && LA34_0<=39)||(LA34_0>=43 && LA34_0<=44)||(LA34_0>=48 && LA34_0<=49)||LA34_0==56||(LA34_0>=72 && LA34_0<=73)||LA34_0==77||LA34_0==84||LA34_0==86||(LA34_0>=90 && LA34_0<=92)||(LA34_0>=95 && LA34_0<=104)||LA34_0==106) ) {
+                        alt34=1;
                     }
-                    switch (alt32) {
+                    switch (alt34) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1798:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            // InternalCubeDSL.g:1862:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                             {
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1798:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1799:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalCubeDSL.g:1862:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // InternalCubeDSL.g:1863:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
                             {
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1799:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1800:3: lv_elements_3_0= ruleXAnnotationOrExpression
+                            // InternalCubeDSL.g:1863:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalCubeDSL.g:1864:7: lv_elements_3_0= ruleXAnnotationOrExpression
                             {
                             if ( state.backtracking==0 ) {
-                               
-                              	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
-                              	    
+
+                              							newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0());
+                              						
                             }
-                            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList3990);
+                            pushFollow(FOLLOW_46);
                             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();
-                              	    
+                              							if (current==null) {
+                              								current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+                              							}
+                              							add(
+                              								current,
+                              								"elements",
+                              								lv_elements_3_0,
+                              								"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+                              							afterParserOrEnumRuleCall();
+                              						
                             }
 
                             }
@@ -5005,55 +4984,55 @@
 
                             }
 
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1816:2: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
-                            loop31:
+                            // InternalCubeDSL.g:1881:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            loop33:
                             do {
-                                int alt31=2;
-                                int LA31_0 = input.LA(1);
+                                int alt33=2;
+                                int LA33_0 = input.LA(1);
 
-                                if ( (LA31_0==42) ) {
-                                    alt31=1;
+                                if ( (LA33_0==45) ) {
+                                    alt33=1;
                                 }
 
 
-                                switch (alt31) {
+                                switch (alt33) {
                             	case 1 :
-                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1816:4: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalCubeDSL.g:1882:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
                             	    {
-                            	    otherlv_4=(Token)match(input,42,FOLLOW_42_in_ruleXAnnotationElementValueOrCommaList4003); if (state.failed) return current;
+                            	    otherlv_4=(Token)match(input,45,FOLLOW_43); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
-                            	          	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
-                            	          
+                            	      						newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
+                            	      					
                             	    }
-                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1820:1: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
-                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1821:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalCubeDSL.g:1886:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalCubeDSL.g:1887:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
                             	    {
-                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1821:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
-                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1822:3: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    // InternalCubeDSL.g:1887:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalCubeDSL.g:1888:8: lv_elements_5_0= ruleXAnnotationOrExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
-                            	       
-                            	      	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
-                            	      	    
+
+                            	      								newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0());
+                            	      							
                             	    }
-                            	    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList4024);
+                            	    pushFollow(FOLLOW_46);
                             	    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();
-                            	      	    
+                            	      								if (current==null) {
+                            	      									current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+                            	      								}
+                            	      								add(
+                            	      									current,
+                            	      									"elements",
+                            	      									lv_elements_5_0,
+                            	      									"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+                            	      								afterParserOrEnumRuleCall();
+                            	      							
                             	    }
 
                             	    }
@@ -5066,7 +5045,7 @@
                             	    break;
 
                             	default :
-                            	    break loop31;
+                            	    break loop33;
                                 }
                             } while (true);
 
@@ -5076,11 +5055,11 @@
 
                     }
 
-                    otherlv_6=(Token)match(input,47,FOLLOW_47_in_ruleXAnnotationElementValueOrCommaList4040); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,50,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
-                          
+                      				newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
+                      			
                     }
 
                     }
@@ -5089,101 +5068,101 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1843:6: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    // InternalCubeDSL.g:1913:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1843:6: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1844:5: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    // InternalCubeDSL.g:1913:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    // InternalCubeDSL.g:1914:4: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); 
-                          
+
+                      				newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0());
+                      			
                     }
-                    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList4070);
+                    pushFollow(FOLLOW_47);
                     this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_XAnnotationOrExpression_7; 
-                              afterParserOrEnumRuleCall();
-                          
-                    }
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1852:1: ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
-                    int alt34=2;
-                    int LA34_0 = input.LA(1);
 
-                    if ( (LA34_0==42) ) {
-                        alt34=1;
+                      				current = this_XAnnotationOrExpression_7;
+                      				afterParserOrEnumRuleCall();
+                      			
                     }
-                    switch (alt34) {
+                    // InternalCubeDSL.g:1922:4: ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    int alt36=2;
+                    int LA36_0 = input.LA(1);
+
+                    if ( (LA36_0==45) ) {
+                        alt36=1;
+                    }
+                    switch (alt36) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1852:2: () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            // InternalCubeDSL.g:1923:5: () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
                             {
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1852:2: ()
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1853:5: 
+                            // InternalCubeDSL.g:1923:5: ()
+                            // InternalCubeDSL.g:1924:6: 
                             {
                             if ( state.backtracking==0 ) {
 
-                                      current = forceCreateModelElementAndAdd(
-                                          grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0(),
-                                          current);
-                                  
+                              						current = forceCreateModelElementAndAdd(
+                              							grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0(),
+                              							current);
+                              					
                             }
 
                             }
 
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1858:2: (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
-                            int cnt33=0;
-                            loop33:
+                            // InternalCubeDSL.g:1930:5: (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            int cnt35=0;
+                            loop35:
                             do {
-                                int alt33=2;
-                                int LA33_0 = input.LA(1);
+                                int alt35=2;
+                                int LA35_0 = input.LA(1);
 
-                                if ( (LA33_0==42) ) {
-                                    alt33=1;
+                                if ( (LA35_0==45) ) {
+                                    alt35=1;
                                 }
 
 
-                                switch (alt33) {
+                                switch (alt35) {
                             	case 1 :
-                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1858:4: otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalCubeDSL.g:1931:6: otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
                             	    {
-                            	    otherlv_9=(Token)match(input,42,FOLLOW_42_in_ruleXAnnotationElementValueOrCommaList4092); if (state.failed) return current;
+                            	    otherlv_9=(Token)match(input,45,FOLLOW_43); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
-                            	          	newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
-                            	          
+                            	      						newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
+                            	      					
                             	    }
-                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1862:1: ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
-                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1863:1: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    // InternalCubeDSL.g:1935:6: ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalCubeDSL.g:1936:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
                             	    {
-                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1863:1: (lv_elements_10_0= ruleXAnnotationOrExpression )
-                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1864:3: lv_elements_10_0= ruleXAnnotationOrExpression
+                            	    // InternalCubeDSL.g:1936:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    // InternalCubeDSL.g:1937:8: lv_elements_10_0= ruleXAnnotationOrExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
-                            	       
-                            	      	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0()); 
-                            	      	    
+
+                            	      								newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0());
+                            	      							
                             	    }
-                            	    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList4113);
+                            	    pushFollow(FOLLOW_47);
                             	    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();
-                            	      	    
+                            	      								if (current==null) {
+                            	      									current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+                            	      								}
+                            	      								add(
+                            	      									current,
+                            	      									"elements",
+                            	      									lv_elements_10_0,
+                            	      									"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+                            	      								afterParserOrEnumRuleCall();
+                            	      							
                             	    }
 
                             	    }
@@ -5196,13 +5175,13 @@
                             	    break;
 
                             	default :
-                            	    if ( cnt33 >= 1 ) break loop33;
+                            	    if ( cnt35 >= 1 ) break loop35;
                             	    if (state.backtracking>0) {state.failed=true; return current;}
                                         EarlyExitException eee =
-                                            new EarlyExitException(33, input);
+                                            new EarlyExitException(35, input);
                                         throw eee;
                                 }
-                                cnt33++;
+                                cnt35++;
                             } while (true);
 
 
@@ -5224,14 +5203,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -5240,7 +5221,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValue"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1888:1: entryRuleXAnnotationElementValue returns [EObject current=null] : iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF ;
+    // InternalCubeDSL.g:1961:1: entryRuleXAnnotationElementValue returns [EObject current=null] : iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF ;
     public final EObject entryRuleXAnnotationElementValue() throws RecognitionException {
         EObject current = null;
 
@@ -5248,13 +5229,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1889:2: (iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1890:2: iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF
+            // InternalCubeDSL.g:1961:64: (iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF )
+            // InternalCubeDSL.g:1962:2: iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationElementValueRule()); 
             }
-            pushFollow(FOLLOW_ruleXAnnotationElementValue_in_entryRuleXAnnotationElementValue4154);
+            pushFollow(FOLLOW_1);
             iv_ruleXAnnotationElementValue=ruleXAnnotationElementValue();
 
             state._fsp--;
@@ -5262,16 +5243,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAnnotationElementValue; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValue4164); 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;
@@ -5280,7 +5261,7 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValue"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1897: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 ) ;
+    // InternalCubeDSL.g:1968: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;
 
@@ -5295,52 +5276,53 @@
         EObject this_XAnnotationOrExpression_7 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1900: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1901:1: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
+            // InternalCubeDSL.g:1974:2: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) )
+            // InternalCubeDSL.g:1975:2: ( ( ( ( ( () '#' '[' ) )=> ( () 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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1901:1: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
-            int alt38=2;
-            alt38 = dfa38.predict(input);
-            switch (alt38) {
+            // InternalCubeDSL.g:1975:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
+            int alt40=2;
+            alt40 = dfa40.predict(input);
+            switch (alt40) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1901:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalCubeDSL.g:1976:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1901:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1901:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    // InternalCubeDSL.g:1976:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalCubeDSL.g:1977:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1901:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1901:4: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalCubeDSL.g:1977:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // InternalCubeDSL.g:1978:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1904:5: ( () otherlv_1= '#' otherlv_2= '[' )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1904:6: () otherlv_1= '#' otherlv_2= '['
+                    // InternalCubeDSL.g:1985:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalCubeDSL.g:1986:6: () otherlv_1= '#' otherlv_2= '['
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1904:6: ()
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1905:5: 
+                    // InternalCubeDSL.g:1986:6: ()
+                    // InternalCubeDSL.g:1987:7: 
                     {
                     if ( state.backtracking==0 ) {
 
-                              current = forceCreateModelElement(
-                                  grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0(),
-                                  current);
-                          
+                      							current = forceCreateModelElement(
+                      								grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0(),
+                      								current);
+                      						
                     }
 
                     }
 
-                    otherlv_1=(Token)match(input,45,FOLLOW_45_in_ruleXAnnotationElementValue4229); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,48,FOLLOW_44); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1());
-                          
+                      						newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1());
+                      					
                     }
-                    otherlv_2=(Token)match(input,46,FOLLOW_46_in_ruleXAnnotationElementValue4241); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,49,FOLLOW_45); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2());
-                          
+                      						newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2());
+                      					
                     }
 
                     }
@@ -5348,45 +5330,45 @@
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1918:3: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
-                    int alt37=2;
-                    int LA37_0 = input.LA(1);
+                    // InternalCubeDSL.g:2003:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    int alt39=2;
+                    int LA39_0 = input.LA(1);
 
-                    if ( ((LA37_0>=RULE_ID && LA37_0<=RULE_DECIMAL)||LA37_0==14||LA37_0==37||(LA37_0>=40 && LA37_0<=41)||(LA37_0>=45 && LA37_0<=46)||LA37_0==53||(LA37_0>=69 && LA37_0<=70)||LA37_0==74||LA37_0==81||LA37_0==83||(LA37_0>=87 && LA37_0<=89)||(LA37_0>=92 && LA37_0<=103)||LA37_0==105) ) {
-                        alt37=1;
+                    if ( ((LA39_0>=RULE_ID && LA39_0<=RULE_DECIMAL)||LA39_0==14||(LA39_0>=37 && LA39_0<=39)||(LA39_0>=43 && LA39_0<=44)||(LA39_0>=48 && LA39_0<=49)||LA39_0==56||(LA39_0>=72 && LA39_0<=73)||LA39_0==77||LA39_0==84||LA39_0==86||(LA39_0>=90 && LA39_0<=92)||(LA39_0>=95 && LA39_0<=104)||LA39_0==106) ) {
+                        alt39=1;
                     }
-                    switch (alt37) {
+                    switch (alt39) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1918:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            // InternalCubeDSL.g:2004:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                             {
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1918:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1919:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalCubeDSL.g:2004:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // InternalCubeDSL.g:2005:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
                             {
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1919:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1920:3: lv_elements_3_0= ruleXAnnotationOrExpression
+                            // InternalCubeDSL.g:2005:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalCubeDSL.g:2006:7: lv_elements_3_0= ruleXAnnotationOrExpression
                             {
                             if ( state.backtracking==0 ) {
-                               
-                              	        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
-                              	    
+
+                              							newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0());
+                              						
                             }
-                            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValue4265);
+                            pushFollow(FOLLOW_46);
                             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.getXAnnotationElementValueRule());
+                              							}
+                              							add(
+                              								current,
+                              								"elements",
+                              								lv_elements_3_0,
+                              								"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+                              							afterParserOrEnumRuleCall();
+                              						
                             }
 
                             }
@@ -5394,55 +5376,55 @@
 
                             }
 
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1936:2: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
-                            loop36:
+                            // InternalCubeDSL.g:2023:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            loop38:
                             do {
-                                int alt36=2;
-                                int LA36_0 = input.LA(1);
+                                int alt38=2;
+                                int LA38_0 = input.LA(1);
 
-                                if ( (LA36_0==42) ) {
-                                    alt36=1;
+                                if ( (LA38_0==45) ) {
+                                    alt38=1;
                                 }
 
 
-                                switch (alt36) {
+                                switch (alt38) {
                             	case 1 :
-                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1936:4: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalCubeDSL.g:2024:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
                             	    {
-                            	    otherlv_4=(Token)match(input,42,FOLLOW_42_in_ruleXAnnotationElementValue4278); if (state.failed) return current;
+                            	    otherlv_4=(Token)match(input,45,FOLLOW_43); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
-                            	          	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0());
-                            	          
+                            	      						newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0());
+                            	      					
                             	    }
-                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1940:1: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
-                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1941:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalCubeDSL.g:2028:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalCubeDSL.g:2029:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
                             	    {
-                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1941:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
-                            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1942:3: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    // InternalCubeDSL.g:2029:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalCubeDSL.g:2030:8: lv_elements_5_0= ruleXAnnotationOrExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
-                            	       
-                            	      	        newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
-                            	      	    
+
+                            	      								newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0());
+                            	      							
                             	    }
-                            	    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValue4299);
+                            	    pushFollow(FOLLOW_46);
                             	    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.getXAnnotationElementValueRule());
+                            	      								}
+                            	      								add(
+                            	      									current,
+                            	      									"elements",
+                            	      									lv_elements_5_0,
+                            	      									"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+                            	      								afterParserOrEnumRuleCall();
+                            	      							
                             	    }
 
                             	    }
@@ -5455,7 +5437,7 @@
                             	    break;
 
                             	default :
-                            	    break loop36;
+                            	    break loop38;
                                 }
                             } while (true);
 
@@ -5465,11 +5447,11 @@
 
                     }
 
-                    otherlv_6=(Token)match(input,47,FOLLOW_47_in_ruleXAnnotationElementValue4315); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,50,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2());
-                          
+                      				newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2());
+                      			
                     }
 
                     }
@@ -5478,23 +5460,23 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1964:5: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression
+                    // InternalCubeDSL.g:2055:3: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValue4344);
+                    pushFollow(FOLLOW_2);
                     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();
+                      		
                     }
 
                     }
@@ -5506,14 +5488,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -5522,7 +5506,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationOrExpression"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1980:1: entryRuleXAnnotationOrExpression returns [EObject current=null] : iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF ;
+    // InternalCubeDSL.g:2067:1: entryRuleXAnnotationOrExpression returns [EObject current=null] : iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF ;
     public final EObject entryRuleXAnnotationOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -5530,13 +5514,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1981:2: (iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1982:2: iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF
+            // InternalCubeDSL.g:2067:64: (iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF )
+            // InternalCubeDSL.g:2068:2: iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationOrExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_entryRuleXAnnotationOrExpression4379);
+            pushFollow(FOLLOW_1);
             iv_ruleXAnnotationOrExpression=ruleXAnnotationOrExpression();
 
             state._fsp--;
@@ -5544,16 +5528,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAnnotationOrExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationOrExpression4389); 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;
@@ -5562,7 +5546,7 @@
 
 
     // $ANTLR start "ruleXAnnotationOrExpression"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1989:1: ruleXAnnotationOrExpression returns [EObject current=null] : (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) ;
+    // InternalCubeDSL.g:2074:1: ruleXAnnotationOrExpression returns [EObject current=null] : (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) ;
     public final EObject ruleXAnnotationOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -5571,70 +5555,71 @@
         EObject this_XExpression_1 = null;
 
 
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1992:28: ( (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1993:1: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
-            {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1993:1: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
-            int alt39=2;
-            int LA39_0 = input.LA(1);
 
-            if ( (LA39_0==40) ) {
-                alt39=1;
+        	enterRule();
+
+        try {
+            // InternalCubeDSL.g:2080:2: ( (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) )
+            // InternalCubeDSL.g:2081:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            {
+            // InternalCubeDSL.g:2081:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            int alt41=2;
+            int LA41_0 = input.LA(1);
+
+            if ( (LA41_0==43) ) {
+                alt41=1;
             }
-            else if ( ((LA39_0>=RULE_ID && LA39_0<=RULE_DECIMAL)||LA39_0==14||LA39_0==37||LA39_0==41||(LA39_0>=45 && LA39_0<=46)||LA39_0==53||(LA39_0>=69 && LA39_0<=70)||LA39_0==74||LA39_0==81||LA39_0==83||(LA39_0>=87 && LA39_0<=89)||(LA39_0>=92 && LA39_0<=103)||LA39_0==105) ) {
-                alt39=2;
+            else if ( ((LA41_0>=RULE_ID && LA41_0<=RULE_DECIMAL)||LA41_0==14||(LA41_0>=37 && LA41_0<=39)||LA41_0==44||(LA41_0>=48 && LA41_0<=49)||LA41_0==56||(LA41_0>=72 && LA41_0<=73)||LA41_0==77||LA41_0==84||LA41_0==86||(LA41_0>=90 && LA41_0<=92)||(LA41_0>=95 && LA41_0<=104)||LA41_0==106) ) {
+                alt41=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 39, 0, input);
+                    new NoViableAltException("", 41, 0, input);
 
                 throw nvae;
             }
-            switch (alt39) {
+            switch (alt41) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:1994:5: this_XAnnotation_0= ruleXAnnotation
+                    // InternalCubeDSL.g:2082:3: this_XAnnotation_0= ruleXAnnotation
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleXAnnotation_in_ruleXAnnotationOrExpression4436);
+                    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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2004:5: this_XExpression_1= ruleXExpression
+                    // InternalCubeDSL.g:2091:3: this_XExpression_1= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleXExpression_in_ruleXAnnotationOrExpression4463);
+                    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();
+                      		
                     }
 
                     }
@@ -5646,14 +5631,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -5662,7 +5649,7 @@
 
 
     // $ANTLR start "entryRuleXExpression"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2020:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
+    // InternalCubeDSL.g:2103:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
     public final EObject entryRuleXExpression() throws RecognitionException {
         EObject current = null;
 
@@ -5670,13 +5657,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2021:2: (iv_ruleXExpression= ruleXExpression EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2022:2: iv_ruleXExpression= ruleXExpression EOF
+            // InternalCubeDSL.g:2103:52: (iv_ruleXExpression= ruleXExpression EOF )
+            // InternalCubeDSL.g:2104:2: iv_ruleXExpression= ruleXExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXExpression_in_entryRuleXExpression4498);
+            pushFollow(FOLLOW_1);
             iv_ruleXExpression=ruleXExpression();
 
             state._fsp--;
@@ -5684,16 +5671,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpression4508); 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;
@@ -5702,47 +5689,50 @@
 
 
     // $ANTLR start "ruleXExpression"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2029:1: ruleXExpression returns [EObject current=null] : this_XAssignment_0= ruleXAssignment ;
+    // InternalCubeDSL.g:2110: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2032:28: (this_XAssignment_0= ruleXAssignment )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2034:5: this_XAssignment_0= ruleXAssignment
+            // InternalCubeDSL.g:2116:2: (this_XAssignment_0= ruleXAssignment )
+            // InternalCubeDSL.g:2117:2: this_XAssignment_0= ruleXAssignment
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
-                  
+
+              		newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall());
+              	
             }
-            pushFollow(FOLLOW_ruleXAssignment_in_ruleXExpression4554);
+            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;
@@ -5751,7 +5741,7 @@
 
 
     // $ANTLR start "entryRuleXAssignment"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2050:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
+    // InternalCubeDSL.g:2128:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
     public final EObject entryRuleXAssignment() throws RecognitionException {
         EObject current = null;
 
@@ -5759,13 +5749,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2051:2: (iv_ruleXAssignment= ruleXAssignment EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2052:2: iv_ruleXAssignment= ruleXAssignment EOF
+            // InternalCubeDSL.g:2128:52: (iv_ruleXAssignment= ruleXAssignment EOF )
+            // InternalCubeDSL.g:2129:2: iv_ruleXAssignment= ruleXAssignment EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAssignmentRule()); 
             }
-            pushFollow(FOLLOW_ruleXAssignment_in_entryRuleXAssignment4588);
+            pushFollow(FOLLOW_1);
             iv_ruleXAssignment=ruleXAssignment();
 
             state._fsp--;
@@ -5773,16 +5763,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAssignment; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAssignment4598); 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;
@@ -5791,7 +5781,7 @@
 
 
     // $ANTLR start "ruleXAssignment"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2059:1: ruleXAssignment returns [EObject current=null] : ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) ;
+    // InternalCubeDSL.g:2135: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;
 
@@ -5802,67 +5792,68 @@
         EObject lv_rightOperand_7_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2062:28: ( ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2063:1: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            // InternalCubeDSL.g:2141:2: ( ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
+            // InternalCubeDSL.g:2142:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2063:1: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
-            int alt41=2;
+            // InternalCubeDSL.g:2142:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            int alt43=2;
             switch ( input.LA(1) ) {
             case RULE_ID:
                 {
-                int LA41_1 = input.LA(2);
+                int LA43_1 = input.LA(2);
 
-                if ( (LA41_1==EOF||(LA41_1>=RULE_ID && LA41_1<=RULE_DECIMAL)||(LA41_1>=14 && LA41_1<=15)||LA41_1==20||(LA41_1>=37 && LA41_1<=39)||(LA41_1>=41 && LA41_1<=43)||(LA41_1>=45 && LA41_1<=79)||(LA41_1>=81 && LA41_1<=106)) ) {
-                    alt41=2;
+                if ( (LA43_1==47) ) {
+                    alt43=1;
                 }
-                else if ( (LA41_1==44) ) {
-                    alt41=1;
+                else if ( (LA43_1==EOF||(LA43_1>=RULE_ID && LA43_1<=RULE_DECIMAL)||(LA43_1>=14 && LA43_1<=15)||(LA43_1>=36 && LA43_1<=40)||LA43_1==42||(LA43_1>=44 && LA43_1<=46)||(LA43_1>=48 && LA43_1<=82)||(LA43_1>=84 && LA43_1<=107)) ) {
+                    alt43=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 41, 1, input);
+                        new NoViableAltException("", 43, 1, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 92:
+            case 95:
                 {
-                int LA41_2 = input.LA(2);
+                int LA43_2 = input.LA(2);
 
-                if ( (LA41_2==EOF||(LA41_2>=RULE_ID && LA41_2<=RULE_DECIMAL)||(LA41_2>=14 && LA41_2<=15)||LA41_2==20||(LA41_2>=37 && LA41_2<=39)||(LA41_2>=41 && LA41_2<=43)||(LA41_2>=45 && LA41_2<=79)||(LA41_2>=81 && LA41_2<=106)) ) {
-                    alt41=2;
+                if ( (LA43_2==EOF||(LA43_2>=RULE_ID && LA43_2<=RULE_DECIMAL)||(LA43_2>=14 && LA43_2<=15)||(LA43_2>=36 && LA43_2<=40)||LA43_2==42||(LA43_2>=44 && LA43_2<=46)||(LA43_2>=48 && LA43_2<=82)||(LA43_2>=84 && LA43_2<=107)) ) {
+                    alt43=2;
                 }
-                else if ( (LA41_2==44) ) {
-                    alt41=1;
+                else if ( (LA43_2==47) ) {
+                    alt43=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 41, 2, input);
+                        new NoViableAltException("", 43, 2, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 93:
+            case 38:
                 {
-                int LA41_3 = input.LA(2);
+                int LA43_3 = input.LA(2);
 
-                if ( (LA41_3==EOF||(LA41_3>=RULE_ID && LA41_3<=RULE_DECIMAL)||(LA41_3>=14 && LA41_3<=15)||LA41_3==20||(LA41_3>=37 && LA41_3<=39)||(LA41_3>=41 && LA41_3<=43)||(LA41_3>=45 && LA41_3<=79)||(LA41_3>=81 && LA41_3<=106)) ) {
-                    alt41=2;
+                if ( (LA43_3==47) ) {
+                    alt43=1;
                 }
-                else if ( (LA41_3==44) ) {
-                    alt41=1;
+                else if ( (LA43_3==EOF||(LA43_3>=RULE_ID && LA43_3<=RULE_DECIMAL)||(LA43_3>=14 && LA43_3<=15)||(LA43_3>=36 && LA43_3<=40)||LA43_3==42||(LA43_3>=44 && LA43_3<=46)||(LA43_3>=48 && LA43_3<=82)||(LA43_3>=84 && LA43_3<=107)) ) {
+                    alt43=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 41, 3, input);
+                        new NoViableAltException("", 43, 3, input);
 
                     throw nvae;
                 }
@@ -5870,37 +5861,37 @@
                 break;
             case 37:
                 {
-                int LA41_4 = input.LA(2);
+                int LA43_4 = input.LA(2);
 
-                if ( (LA41_4==EOF||(LA41_4>=RULE_ID && LA41_4<=RULE_DECIMAL)||(LA41_4>=14 && LA41_4<=15)||LA41_4==20||(LA41_4>=37 && LA41_4<=39)||(LA41_4>=41 && LA41_4<=43)||(LA41_4>=45 && LA41_4<=79)||(LA41_4>=81 && LA41_4<=106)) ) {
-                    alt41=2;
+                if ( (LA43_4==47) ) {
+                    alt43=1;
                 }
-                else if ( (LA41_4==44) ) {
-                    alt41=1;
+                else if ( (LA43_4==EOF||(LA43_4>=RULE_ID && LA43_4<=RULE_DECIMAL)||(LA43_4>=14 && LA43_4<=15)||(LA43_4>=36 && LA43_4<=40)||LA43_4==42||(LA43_4>=44 && LA43_4<=46)||(LA43_4>=48 && LA43_4<=82)||(LA43_4>=84 && LA43_4<=107)) ) {
+                    alt43=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 41, 4, input);
+                        new NoViableAltException("", 43, 4, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 94:
+            case 39:
                 {
-                int LA41_5 = input.LA(2);
+                int LA43_5 = input.LA(2);
 
-                if ( (LA41_5==EOF||(LA41_5>=RULE_ID && LA41_5<=RULE_DECIMAL)||(LA41_5>=14 && LA41_5<=15)||LA41_5==20||(LA41_5>=37 && LA41_5<=39)||(LA41_5>=41 && LA41_5<=43)||(LA41_5>=45 && LA41_5<=79)||(LA41_5>=81 && LA41_5<=106)) ) {
-                    alt41=2;
+                if ( (LA43_5==EOF||(LA43_5>=RULE_ID && LA43_5<=RULE_DECIMAL)||(LA43_5>=14 && LA43_5<=15)||(LA43_5>=36 && LA43_5<=40)||LA43_5==42||(LA43_5>=44 && LA43_5<=46)||(LA43_5>=48 && LA43_5<=82)||(LA43_5>=84 && LA43_5<=107)) ) {
+                    alt43=2;
                 }
-                else if ( (LA41_5==44) ) {
-                    alt41=1;
+                else if ( (LA43_5==47) ) {
+                    alt43=1;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 41, 5, input);
+                        new NoViableAltException("", 43, 5, input);
 
                     throw nvae;
                 }
@@ -5911,19 +5902,18 @@
             case RULE_INT:
             case RULE_DECIMAL:
             case 14:
-            case 41:
-            case 45:
-            case 46:
-            case 53:
-            case 69:
-            case 70:
-            case 74:
-            case 81:
-            case 83:
-            case 87:
-            case 88:
-            case 89:
-            case 95:
+            case 44:
+            case 48:
+            case 49:
+            case 56:
+            case 72:
+            case 73:
+            case 77:
+            case 84:
+            case 86:
+            case 90:
+            case 91:
+            case 92:
             case 96:
             case 97:
             case 98:
@@ -5932,456 +5922,12 @@
             case 101:
             case 102:
             case 103:
-            case 105:
-                {
-                alt41=2;
-                }
-                break;
-            default:
-                if (state.backtracking>0) {state.failed=true; return current;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 41, 0, input);
-
-                throw nvae;
-            }
-
-            switch (alt41) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2063:2: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
-                    {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2063:2: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2063:3: () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
-                    {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2063:3: ()
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2064:5: 
-                    {
-                    if ( state.backtracking==0 ) {
-
-                              current = forceCreateModelElement(
-                                  grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0(),
-                                  current);
-                          
-                    }
-
-                    }
-
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2069:2: ( ( ruleFeatureCallID ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2070:1: ( ruleFeatureCallID )
-                    {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2070:1: ( ruleFeatureCallID )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2071:3: ruleFeatureCallID
-                    {
-                    if ( state.backtracking==0 ) {
-
-                      			if (current==null) {
-                      	            current = createModelElement(grammarAccess.getXAssignmentRule());
-                      	        }
-                              
-                    }
-                    if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
-                      	    
-                    }
-                    pushFollow(FOLLOW_ruleFeatureCallID_in_ruleXAssignment4656);
-                    ruleFeatureCallID();
-
-                    state._fsp--;
-                    if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-                       
-                      	        afterParserOrEnumRuleCall();
-                      	    
-                    }
-
-                    }
-
-
-                    }
-
-                    if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); 
-                          
-                    }
-                    pushFollow(FOLLOW_ruleOpSingleAssign_in_ruleXAssignment4672);
-                    ruleOpSingleAssign();
-
-                    state._fsp--;
-                    if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-                       
-                              afterParserOrEnumRuleCall();
-                          
-                    }
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2092:1: ( (lv_value_3_0= ruleXAssignment ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2093:1: (lv_value_3_0= ruleXAssignment )
-                    {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2093:1: (lv_value_3_0= ruleXAssignment )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2094:3: lv_value_3_0= ruleXAssignment
-                    {
-                    if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); 
-                      	    
-                    }
-                    pushFollow(FOLLOW_ruleXAssignment_in_ruleXAssignment4692);
-                    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();
-                      	    
-                    }
-
-                    }
-
-
-                    }
-
-
-                    }
-
-
-                    }
-                    break;
-                case 2 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2111:6: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
-                    {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2111:6: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2112:5: this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
-                    {
-                    if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); 
-                          
-                    }
-                    pushFollow(FOLLOW_ruleXOrExpression_in_ruleXAssignment4722);
-                    this_XOrExpression_4=ruleXOrExpression();
-
-                    state._fsp--;
-                    if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-                       
-                              current = this_XOrExpression_4; 
-                              afterParserOrEnumRuleCall();
-                          
-                    }
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2120:1: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
-                    int alt40=2;
-                    alt40 = dfa40.predict(input);
-                    switch (alt40) {
-                        case 1 :
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2120:2: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
-                            {
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2120:2: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2120:3: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
-                            {
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2125:6: ( () ( ( ruleOpMultiAssign ) ) )
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2125:7: () ( ( ruleOpMultiAssign ) )
-                            {
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2125:7: ()
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2126:5: 
-                            {
-                            if ( state.backtracking==0 ) {
-
-                                      current = forceCreateModelElementAndSet(
-                                          grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
-                                          current);
-                                  
-                            }
-
-                            }
-
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2131:2: ( ( ruleOpMultiAssign ) )
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2132:1: ( ruleOpMultiAssign )
-                            {
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2132:1: ( ruleOpMultiAssign )
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2133:3: ruleOpMultiAssign
-                            {
-                            if ( state.backtracking==0 ) {
-
-                              			if (current==null) {
-                              	            current = createModelElement(grammarAccess.getXAssignmentRule());
-                              	        }
-                                      
-                            }
-                            if ( state.backtracking==0 ) {
-                               
-                              	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
-                              	    
-                            }
-                            pushFollow(FOLLOW_ruleOpMultiAssign_in_ruleXAssignment4775);
-                            ruleOpMultiAssign();
-
-                            state._fsp--;
-                            if (state.failed) return current;
-                            if ( state.backtracking==0 ) {
-                               
-                              	        afterParserOrEnumRuleCall();
-                              	    
-                            }
-
-                            }
-
-
-                            }
-
-
-                            }
-
-
-                            }
-
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2146:4: ( (lv_rightOperand_7_0= ruleXAssignment ) )
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2147:1: (lv_rightOperand_7_0= ruleXAssignment )
-                            {
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2147:1: (lv_rightOperand_7_0= ruleXAssignment )
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2148:3: lv_rightOperand_7_0= ruleXAssignment
-                            {
-                            if ( state.backtracking==0 ) {
-                               
-                              	        newCompositeNode(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); 
-                              	    
-                            }
-                            pushFollow(FOLLOW_ruleXAssignment_in_ruleXAssignment4798);
-                            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();
-                              	    
-                            }
-
-                            }
-
-
-                            }
-
-
-                            }
-                            break;
-
-                    }
-
-
-                    }
-
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleXAssignment"
-
-
-    // $ANTLR start "entryRuleOpSingleAssign"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2172:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
-    public final String entryRuleOpSingleAssign() throws RecognitionException {
-        String current = null;
-
-        AntlrDatatypeRuleToken iv_ruleOpSingleAssign = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2173:2: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2174:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpSingleAssignRule()); 
-            }
-            pushFollow(FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign4838);
-            iv_ruleOpSingleAssign=ruleOpSingleAssign();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleOpSingleAssign.getText(); 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpSingleAssign4849); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleOpSingleAssign"
-
-
-    // $ANTLR start "ruleOpSingleAssign"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2181:1: ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '=' ;
-    public final AntlrDatatypeRuleToken ruleOpSingleAssign() throws RecognitionException {
-        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
-
-        Token kw=null;
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2184:28: (kw= '=' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2186:2: kw= '='
-            {
-            kw=(Token)match(input,44,FOLLOW_44_in_ruleOpSingleAssign4886); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-                      current.merge(kw);
-                      newLeafNode(kw, grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
-                  
-            }
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleOpSingleAssign"
-
-
-    // $ANTLR start "entryRuleOpMultiAssign"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2199:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
-    public final String entryRuleOpMultiAssign() throws RecognitionException {
-        String current = null;
-
-        AntlrDatatypeRuleToken iv_ruleOpMultiAssign = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2200:2: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2201:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpMultiAssignRule()); 
-            }
-            pushFollow(FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign4926);
-            iv_ruleOpMultiAssign=ruleOpMultiAssign();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleOpMultiAssign.getText(); 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMultiAssign4937); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleOpMultiAssign"
-
-
-    // $ANTLR start "ruleOpMultiAssign"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2208: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(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2211:28: ( (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2212:1: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
-            {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2212:1: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
-            int alt43=7;
-            switch ( input.LA(1) ) {
-            case 48:
-                {
-                alt43=1;
-                }
-                break;
-            case 49:
+            case 104:
+            case 106:
                 {
                 alt43=2;
                 }
                 break;
-            case 50:
-                {
-                alt43=3;
-                }
-                break;
-            case 51:
-                {
-                alt43=4;
-                }
-                break;
-            case 52:
-                {
-                alt43=5;
-                }
-                break;
-            case 53:
-                {
-                alt43=6;
-                }
-                break;
-            case 54:
-                {
-                alt43=7;
-                }
-                break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
@@ -6392,96 +5938,547 @@
 
             switch (alt43) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2213:2: kw= '+='
+                    // InternalCubeDSL.g:2143:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
                     {
-                    kw=(Token)match(input,48,FOLLOW_48_in_ruleOpMultiAssign4975); if (state.failed) return current;
+                    // InternalCubeDSL.g:2143:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    // InternalCubeDSL.g:2144:4: () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
+                    {
+                    // InternalCubeDSL.g:2144:4: ()
+                    // InternalCubeDSL.g:2145:5: 
+                    {
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
-                          
+                      					current = forceCreateModelElement(
+                      						grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0(),
+                      						current);
+                      				
+                    }
+
+                    }
+
+                    // InternalCubeDSL.g:2151:4: ( ( ruleFeatureCallID ) )
+                    // InternalCubeDSL.g:2152:5: ( ruleFeatureCallID )
+                    {
+                    // InternalCubeDSL.g:2152:5: ( ruleFeatureCallID )
+                    // InternalCubeDSL.g:2153:6: ruleFeatureCallID
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getXAssignmentRule());
+                      						}
+                      					
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_42);
+                    ruleFeatureCallID();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+
+                      				newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2());
+                      			
+                    }
+                    pushFollow(FOLLOW_43);
+                    ruleOpSingleAssign();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				afterParserOrEnumRuleCall();
+                      			
+                    }
+                    // InternalCubeDSL.g:2174:4: ( (lv_value_3_0= ruleXAssignment ) )
+                    // InternalCubeDSL.g:2175:5: (lv_value_3_0= ruleXAssignment )
+                    {
+                    // InternalCubeDSL.g:2175:5: (lv_value_3_0= ruleXAssignment )
+                    // InternalCubeDSL.g:2176:6: lv_value_3_0= ruleXAssignment
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0());
+                      					
+                    }
+                    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,
+                      							"org.eclipse.xtext.xbase.Xbase.XAssignment");
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:2195:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    {
+                    // InternalCubeDSL.g:2195:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    // InternalCubeDSL.g:2196:4: this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      				newCompositeNode(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0());
+                      			
+                    }
+                    pushFollow(FOLLOW_48);
+                    this_XOrExpression_4=ruleXOrExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = this_XOrExpression_4;
+                      				afterParserOrEnumRuleCall();
+                      			
+                    }
+                    // InternalCubeDSL.g:2204:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    int alt42=2;
+                    alt42 = dfa42.predict(input);
+                    switch (alt42) {
+                        case 1 :
+                            // InternalCubeDSL.g:2205:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            {
+                            // InternalCubeDSL.g:2205:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
+                            // InternalCubeDSL.g:2206:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
+                            {
+                            // InternalCubeDSL.g:2216:6: ( () ( ( ruleOpMultiAssign ) ) )
+                            // InternalCubeDSL.g:2217:7: () ( ( ruleOpMultiAssign ) )
+                            {
+                            // InternalCubeDSL.g:2217:7: ()
+                            // InternalCubeDSL.g:2218:8: 
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								current = forceCreateModelElementAndSet(
+                              									grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+                              									current);
+                              							
+                            }
+
+                            }
+
+                            // InternalCubeDSL.g:2224:7: ( ( ruleOpMultiAssign ) )
+                            // InternalCubeDSL.g:2225:8: ( ruleOpMultiAssign )
+                            {
+                            // InternalCubeDSL.g:2225:8: ( ruleOpMultiAssign )
+                            // InternalCubeDSL.g:2226:9: ruleOpMultiAssign
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              									if (current==null) {
+                              										current = createModelElement(grammarAccess.getXAssignmentRule());
+                              									}
+                              								
+                            }
+                            if ( state.backtracking==0 ) {
+
+                              									newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0());
+                              								
+                            }
+                            pushFollow(FOLLOW_43);
+                            ruleOpMultiAssign();
+
+                            state._fsp--;
+                            if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              									afterParserOrEnumRuleCall();
+                              								
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+
+
+                            }
+
+                            // InternalCubeDSL.g:2242:5: ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            // InternalCubeDSL.g:2243:6: (lv_rightOperand_7_0= ruleXAssignment )
+                            {
+                            // InternalCubeDSL.g:2243:6: (lv_rightOperand_7_0= ruleXAssignment )
+                            // InternalCubeDSL.g:2244:7: lv_rightOperand_7_0= ruleXAssignment
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              							newCompositeNode(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0());
+                              						
+                            }
+                            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,
+                              								"org.eclipse.xtext.xbase.Xbase.XAssignment");
+                              							afterParserOrEnumRuleCall();
+                              						
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAssignment"
+
+
+    // $ANTLR start "entryRuleOpSingleAssign"
+    // InternalCubeDSL.g:2267:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
+    public final String entryRuleOpSingleAssign() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpSingleAssign = null;
+
+
+        try {
+            // InternalCubeDSL.g:2267:54: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
+            // InternalCubeDSL.g:2268:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpSingleAssignRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleOpSingleAssign=ruleOpSingleAssign();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpSingleAssign.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpSingleAssign"
+
+
+    // $ANTLR start "ruleOpSingleAssign"
+    // InternalCubeDSL.g:2274:1: ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '=' ;
+    public final AntlrDatatypeRuleToken ruleOpSingleAssign() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalCubeDSL.g:2280:2: (kw= '=' )
+            // InternalCubeDSL.g:2281:2: kw= '='
+            {
+            kw=(Token)match(input,47,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              		current.merge(kw);
+              		newLeafNode(kw, grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword());
+              	
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpSingleAssign"
+
+
+    // $ANTLR start "entryRuleOpMultiAssign"
+    // InternalCubeDSL.g:2289:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
+    public final String entryRuleOpMultiAssign() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpMultiAssign = null;
+
+
+        try {
+            // InternalCubeDSL.g:2289:53: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
+            // InternalCubeDSL.g:2290:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpMultiAssignRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleOpMultiAssign=ruleOpMultiAssign();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpMultiAssign.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpMultiAssign"
+
+
+    // $ANTLR start "ruleOpMultiAssign"
+    // InternalCubeDSL.g:2296: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();
+
+        try {
+            // InternalCubeDSL.g:2302:2: ( (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) )
+            // InternalCubeDSL.g:2303:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            {
+            // InternalCubeDSL.g:2303:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            int alt45=7;
+            switch ( input.LA(1) ) {
+            case 51:
+                {
+                alt45=1;
+                }
+                break;
+            case 52:
+                {
+                alt45=2;
+                }
+                break;
+            case 53:
+                {
+                alt45=3;
+                }
+                break;
+            case 54:
+                {
+                alt45=4;
+                }
+                break;
+            case 55:
+                {
+                alt45=5;
+                }
+                break;
+            case 56:
+                {
+                alt45=6;
+                }
+                break;
+            case 57:
+                {
+                alt45=7;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 45, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt45) {
+                case 1 :
+                    // InternalCubeDSL.g:2304:3: kw= '+='
+                    {
+                    kw=(Token)match(input,51,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0());
+                      		
                     }
 
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2220:2: kw= '-='
+                    // InternalCubeDSL.g:2310:3: kw= '-='
                     {
-                    kw=(Token)match(input,49,FOLLOW_49_in_ruleOpMultiAssign4994); if (state.failed) return current;
+                    kw=(Token)match(input,52,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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2227:2: kw= '*='
+                    // InternalCubeDSL.g:2316:3: kw= '*='
                     {
-                    kw=(Token)match(input,50,FOLLOW_50_in_ruleOpMultiAssign5013); if (state.failed) return current;
+                    kw=(Token)match(input,53,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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2234:2: kw= '/='
+                    // InternalCubeDSL.g:2322:3: kw= '/='
                     {
-                    kw=(Token)match(input,51,FOLLOW_51_in_ruleOpMultiAssign5032); 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().getSolidusEqualsSignKeyword_3()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getSolidusEqualsSignKeyword_3());
+                      		
                     }
 
                     }
                     break;
                 case 5 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2241:2: kw= '%='
+                    // InternalCubeDSL.g:2328:3: kw= '%='
                     {
-                    kw=(Token)match(input,52,FOLLOW_52_in_ruleOpMultiAssign5051); 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().getPercentSignEqualsSignKeyword_4()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4());
+                      		
                     }
 
                     }
                     break;
                 case 6 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2247:6: (kw= '<' kw= '<' kw= '=' )
+                    // InternalCubeDSL.g:2334:3: (kw= '<' kw= '<' kw= '=' )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2247:6: (kw= '<' kw= '<' kw= '=' )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2248:2: kw= '<' kw= '<' kw= '='
+                    // InternalCubeDSL.g:2334:3: (kw= '<' kw= '<' kw= '=' )
+                    // InternalCubeDSL.g:2335:4: kw= '<' kw= '<' kw= '='
                     {
-                    kw=(Token)match(input,53,FOLLOW_53_in_ruleOpMultiAssign5071); if (state.failed) return current;
+                    kw=(Token)match(input,56,FOLLOW_49); 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,53,FOLLOW_53_in_ruleOpMultiAssign5084); if (state.failed) return current;
+                    kw=(Token)match(input,56,FOLLOW_42); 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,44,FOLLOW_44_in_ruleOpMultiAssign5097); if (state.failed) return current;
+                    kw=(Token)match(input,47,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());
+                      			
                     }
 
                     }
@@ -6490,35 +6487,35 @@
                     }
                     break;
                 case 7 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2266:6: (kw= '>' (kw= '>' )? kw= '>=' )
+                    // InternalCubeDSL.g:2352:3: (kw= '>' (kw= '>' )? kw= '>=' )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2266:6: (kw= '>' (kw= '>' )? kw= '>=' )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2267:2: kw= '>' (kw= '>' )? kw= '>='
+                    // InternalCubeDSL.g:2352:3: (kw= '>' (kw= '>' )? kw= '>=' )
+                    // InternalCubeDSL.g:2353:4: kw= '>' (kw= '>' )? kw= '>='
                     {
-                    kw=(Token)match(input,54,FOLLOW_54_in_ruleOpMultiAssign5118); if (state.failed) return current;
+                    kw=(Token)match(input,57,FOLLOW_50); 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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2272:1: (kw= '>' )?
-                    int alt42=2;
-                    int LA42_0 = input.LA(1);
+                    // InternalCubeDSL.g:2358:4: (kw= '>' )?
+                    int alt44=2;
+                    int LA44_0 = input.LA(1);
 
-                    if ( (LA42_0==54) ) {
-                        alt42=1;
+                    if ( (LA44_0==57) ) {
+                        alt44=1;
                     }
-                    switch (alt42) {
+                    switch (alt44) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2273:2: kw= '>'
+                            // InternalCubeDSL.g:2359:5: kw= '>'
                             {
-                            kw=(Token)match(input,54,FOLLOW_54_in_ruleOpMultiAssign5132); if (state.failed) return current;
+                            kw=(Token)match(input,57,FOLLOW_51); 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());
+                              				
                             }
 
                             }
@@ -6526,12 +6523,12 @@
 
                     }
 
-                    kw=(Token)match(input,55,FOLLOW_55_in_ruleOpMultiAssign5147); 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().getGreaterThanSignEqualsSignKeyword_6_2()); 
-                          
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getGreaterThanSignEqualsSignKeyword_6_2());
+                      			
                     }
 
                     }
@@ -6546,14 +6543,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -6562,7 +6561,7 @@
 
 
     // $ANTLR start "entryRuleXOrExpression"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2292:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
+    // InternalCubeDSL.g:2375:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
     public final EObject entryRuleXOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -6570,13 +6569,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2293:2: (iv_ruleXOrExpression= ruleXOrExpression EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2294:2: iv_ruleXOrExpression= ruleXOrExpression EOF
+            // InternalCubeDSL.g:2375:54: (iv_ruleXOrExpression= ruleXOrExpression EOF )
+            // InternalCubeDSL.g:2376:2: iv_ruleXOrExpression= ruleXOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXOrExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression5188);
+            pushFollow(FOLLOW_1);
             iv_ruleXOrExpression=ruleXOrExpression();
 
             state._fsp--;
@@ -6584,16 +6583,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXOrExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXOrExpression5198); 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;
@@ -6602,7 +6601,7 @@
 
 
     // $ANTLR start "ruleXOrExpression"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2301:1: ruleXOrExpression returns [EObject current=null] : (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) ;
+    // InternalCubeDSL.g:2382: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;
 
@@ -6611,98 +6610,99 @@
         EObject lv_rightOperand_3_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2304:28: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2305:1: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            // InternalCubeDSL.g:2388:2: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
+            // InternalCubeDSL.g:2389:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2305:1: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2306:5: this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            // InternalCubeDSL.g:2389:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            // InternalCubeDSL.g:2390: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_ruleXOrExpression5245);
+            pushFollow(FOLLOW_52);
             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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2314:1: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
-            loop44:
+            // InternalCubeDSL.g:2398:3: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            loop46:
             do {
-                int alt44=2;
-                int LA44_0 = input.LA(1);
+                int alt46=2;
+                int LA46_0 = input.LA(1);
 
-                if ( (LA44_0==56) ) {
-                    int LA44_2 = input.LA(2);
+                if ( (LA46_0==59) ) {
+                    int LA46_2 = input.LA(2);
 
-                    if ( (synpred9_InternalCubeDSL()) ) {
-                        alt44=1;
+                    if ( (synpred8_InternalCubeDSL()) ) {
+                        alt46=1;
                     }
 
 
                 }
 
 
-                switch (alt44) {
+                switch (alt46) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2314:2: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    // InternalCubeDSL.g:2399:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2314:2: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2314:3: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
+            	    // InternalCubeDSL.g:2399:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
+            	    // InternalCubeDSL.g:2400:5: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2319:6: ( () ( ( ruleOpOr ) ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2319:7: () ( ( ruleOpOr ) )
+            	    // InternalCubeDSL.g:2410:5: ( () ( ( ruleOpOr ) ) )
+            	    // InternalCubeDSL.g:2411:6: () ( ( ruleOpOr ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2319:7: ()
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2320:5: 
+            	    // InternalCubeDSL.g:2411:6: ()
+            	    // InternalCubeDSL.g:2412: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2325:2: ( ( ruleOpOr ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2326:1: ( ruleOpOr )
+            	    // InternalCubeDSL.g:2418:6: ( ( ruleOpOr ) )
+            	    // InternalCubeDSL.g:2419:7: ( ruleOpOr )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2326:1: ( ruleOpOr )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2327:3: ruleOpOr
+            	    // InternalCubeDSL.g:2419:7: ( ruleOpOr )
+            	    // InternalCubeDSL.g:2420: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_ruleXOrExpression5298);
+            	    pushFollow(FOLLOW_43);
             	    ruleOpOr();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
             	    }
 
             	    }
@@ -6716,669 +6716,34 @@
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2340:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2341:1: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    // InternalCubeDSL.g:2436:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    // InternalCubeDSL.g:2437:5: (lv_rightOperand_3_0= ruleXAndExpression )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2341:1: (lv_rightOperand_3_0= ruleXAndExpression )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2342:3: lv_rightOperand_3_0= ruleXAndExpression
+            	    // InternalCubeDSL.g:2437:5: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    // InternalCubeDSL.g:2438: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_ruleXOrExpression5321);
+            	    pushFollow(FOLLOW_52);
             	    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();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop44;
-                }
-            } while (true);
-
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleXOrExpression"
-
-
-    // $ANTLR start "entryRuleOpOr"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2366:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
-    public final String entryRuleOpOr() throws RecognitionException {
-        String current = null;
-
-        AntlrDatatypeRuleToken iv_ruleOpOr = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2367:2: (iv_ruleOpOr= ruleOpOr EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2368:2: iv_ruleOpOr= ruleOpOr EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpOrRule()); 
-            }
-            pushFollow(FOLLOW_ruleOpOr_in_entryRuleOpOr5360);
-            iv_ruleOpOr=ruleOpOr();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleOpOr.getText(); 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOr5371); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleOpOr"
-
-
-    // $ANTLR start "ruleOpOr"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2375:1: ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '||' ;
-    public final AntlrDatatypeRuleToken ruleOpOr() throws RecognitionException {
-        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
-
-        Token kw=null;
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2378:28: (kw= '||' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2380:2: kw= '||'
-            {
-            kw=(Token)match(input,56,FOLLOW_56_in_ruleOpOr5408); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-                      current.merge(kw);
-                      newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
-                  
-            }
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleOpOr"
-
-
-    // $ANTLR start "entryRuleXAndExpression"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2393:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
-    public final EObject entryRuleXAndExpression() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleXAndExpression = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2394:2: (iv_ruleXAndExpression= ruleXAndExpression EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2395:2: iv_ruleXAndExpression= ruleXAndExpression EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXAndExpressionRule()); 
-            }
-            pushFollow(FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression5447);
-            iv_ruleXAndExpression=ruleXAndExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleXAndExpression; 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAndExpression5457); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleXAndExpression"
-
-
-    // $ANTLR start "ruleXAndExpression"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2402: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;
-
-        EObject this_XEqualityExpression_0 = null;
-
-        EObject lv_rightOperand_3_0 = null;
-
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2405:28: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2406:1: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
-            {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2406:1: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2407:5: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
-            {
-            if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); 
-                  
-            }
-            pushFollow(FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression5504);
-            this_XEqualityExpression_0=ruleXEqualityExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               
-                      current = this_XEqualityExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
-            }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2415:1: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
-            loop45:
-            do {
-                int alt45=2;
-                int LA45_0 = input.LA(1);
-
-                if ( (LA45_0==57) ) {
-                    int LA45_2 = input.LA(2);
-
-                    if ( (synpred10_InternalCubeDSL()) ) {
-                        alt45=1;
-                    }
-
-
-                }
-
-
-                switch (alt45) {
-            	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2415:2: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2415:2: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2415:3: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2420:6: ( () ( ( ruleOpAnd ) ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2420:7: () ( ( ruleOpAnd ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2420:7: ()
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2421:5: 
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            	                  current);
-            	          
-            	    }
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2426:2: ( ( ruleOpAnd ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2427:1: ( ruleOpAnd )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2427:1: ( ruleOpAnd )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2428:3: ruleOpAnd
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      			if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getXAndExpressionRule());
-            	      	        }
-            	              
-            	    }
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleOpAnd_in_ruleXAndExpression5557);
-            	    ruleOpAnd();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2441:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2442:1: (lv_rightOperand_3_0= ruleXEqualityExpression )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2442:1: (lv_rightOperand_3_0= ruleXEqualityExpression )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2443:3: lv_rightOperand_3_0= ruleXEqualityExpression
-            	    {
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression5580);
-            	    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 loop45;
-                }
-            } 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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2467: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2468:2: (iv_ruleOpAnd= ruleOpAnd EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2469:2: iv_ruleOpAnd= ruleOpAnd EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpAndRule()); 
-            }
-            pushFollow(FOLLOW_ruleOpAnd_in_entryRuleOpAnd5619);
-            iv_ruleOpAnd=ruleOpAnd();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleOpAnd.getText(); 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAnd5630); 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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2476: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2479:28: (kw= '&&' )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2481:2: kw= '&&'
-            {
-            kw=(Token)match(input,57,FOLLOW_57_in_ruleOpAnd5667); 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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2494: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2495:2: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2496:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXEqualityExpressionRule()); 
-            }
-            pushFollow(FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression5706);
-            iv_ruleXEqualityExpression=ruleXEqualityExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleXEqualityExpression; 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXEqualityExpression5716); 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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2503: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2506:28: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2507:1: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
-            {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2507:1: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2508: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_ruleXEqualityExpression5763);
-            this_XRelationalExpression_0=ruleXRelationalExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               
-                      current = this_XRelationalExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
-            }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2516:1: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
-            loop46:
-            do {
-                int alt46=2;
-                switch ( input.LA(1) ) {
-                case 58:
-                    {
-                    int LA46_2 = input.LA(2);
-
-                    if ( (synpred11_InternalCubeDSL()) ) {
-                        alt46=1;
-                    }
-
-
-                    }
-                    break;
-                case 59:
-                    {
-                    int LA46_3 = input.LA(2);
-
-                    if ( (synpred11_InternalCubeDSL()) ) {
-                        alt46=1;
-                    }
-
-
-                    }
-                    break;
-                case 60:
-                    {
-                    int LA46_4 = input.LA(2);
-
-                    if ( (synpred11_InternalCubeDSL()) ) {
-                        alt46=1;
-                    }
-
-
-                    }
-                    break;
-                case 61:
-                    {
-                    int LA46_5 = input.LA(2);
-
-                    if ( (synpred11_InternalCubeDSL()) ) {
-                        alt46=1;
-                    }
-
-
-                    }
-                    break;
-
-                }
-
-                switch (alt46) {
-            	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2516:2: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2516:2: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2516:3: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2521:6: ( () ( ( ruleOpEquality ) ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2521:7: () ( ( ruleOpEquality ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2521:7: ()
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2522:5: 
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            	                  current);
-            	          
-            	    }
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2527:2: ( ( ruleOpEquality ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2528:1: ( ruleOpEquality )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2528:1: ( ruleOpEquality )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2529: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_ruleXEqualityExpression5816);
-            	    ruleOpEquality();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2542:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2543:1: (lv_rightOperand_3_0= ruleXRelationalExpression )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2543:1: (lv_rightOperand_3_0= ruleXRelationalExpression )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2544:3: lv_rightOperand_3_0= ruleXRelationalExpression
-            	    {
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression5839);
-            	    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();
-            	      	    
+            	      						if (current==null) {
+            	      							current = createModelElementForParent(grammarAccess.getXOrExpressionRule());
+            	      						}
+            	      						set(
+            	      							current,
+            	      							"rightOperand",
+            	      							lv_rightOperand_3_0,
+            	      							"org.eclipse.xtext.xbase.Xbase.XAndExpression");
+            	      						afterParserOrEnumRuleCall();
+            	      					
             	    }
 
             	    }
@@ -7402,280 +6767,498 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
     }
-    // $ANTLR end "ruleXEqualityExpression"
+    // $ANTLR end "ruleXOrExpression"
 
 
-    // $ANTLR start "entryRuleOpEquality"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2568:1: entryRuleOpEquality returns [String current=null] : iv_ruleOpEquality= ruleOpEquality EOF ;
-    public final String entryRuleOpEquality() throws RecognitionException {
+    // $ANTLR start "entryRuleOpOr"
+    // InternalCubeDSL.g:2460:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
+    public final String entryRuleOpOr() throws RecognitionException {
         String current = null;
 
-        AntlrDatatypeRuleToken iv_ruleOpEquality = null;
+        AntlrDatatypeRuleToken iv_ruleOpOr = null;
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2569:2: (iv_ruleOpEquality= ruleOpEquality EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2570:2: iv_ruleOpEquality= ruleOpEquality EOF
+            // InternalCubeDSL.g:2460:44: (iv_ruleOpOr= ruleOpOr EOF )
+            // InternalCubeDSL.g:2461:2: iv_ruleOpOr= ruleOpOr EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpEqualityRule()); 
+               newCompositeNode(grammarAccess.getOpOrRule()); 
             }
-            pushFollow(FOLLOW_ruleOpEquality_in_entryRuleOpEquality5878);
-            iv_ruleOpEquality=ruleOpEquality();
+            pushFollow(FOLLOW_1);
+            iv_ruleOpOr=ruleOpOr();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleOpEquality.getText(); 
+               current =iv_ruleOpOr.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpEquality5889); 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 "entryRuleOpEquality"
+    // $ANTLR end "entryRuleOpOr"
 
 
-    // $ANTLR start "ruleOpEquality"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2577:1: ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) ;
-    public final AntlrDatatypeRuleToken ruleOpEquality() throws RecognitionException {
+    // $ANTLR start "ruleOpOr"
+    // InternalCubeDSL.g:2467: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2580:28: ( (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2581:1: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            // InternalCubeDSL.g:2473:2: (kw= '||' )
+            // InternalCubeDSL.g:2474:2: kw= '||'
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2581:1: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
-            int alt47=4;
-            switch ( input.LA(1) ) {
-            case 58:
-                {
-                alt47=1;
-                }
-                break;
-            case 59:
-                {
-                alt47=2;
-                }
-                break;
-            case 60:
-                {
-                alt47=3;
-                }
-                break;
-            case 61:
-                {
-                alt47=4;
-                }
-                break;
-            default:
-                if (state.backtracking>0) {state.failed=true; return current;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 47, 0, input);
+            kw=(Token)match(input,59,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
 
-                throw nvae;
+              		current.merge(kw);
+              		newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword());
+              	
             }
 
-            switch (alt47) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2582:2: kw= '=='
-                    {
-                    kw=(Token)match(input,58,FOLLOW_58_in_ruleOpEquality5927); 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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2589:2: kw= '!='
-                    {
-                    kw=(Token)match(input,59,FOLLOW_59_in_ruleOpEquality5946); 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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2596:2: kw= '==='
-                    {
-                    kw=(Token)match(input,60,FOLLOW_60_in_ruleOpEquality5965); 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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2603:2: kw= '!=='
-                    {
-                    kw=(Token)match(input,61,FOLLOW_61_in_ruleOpEquality5984); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
-                          
-                    }
-
-                    }
-                    break;
-
-            }
-
-
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
     }
-    // $ANTLR end "ruleOpEquality"
+    // $ANTLR end "ruleOpOr"
 
 
-    // $ANTLR start "entryRuleXRelationalExpression"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2616:1: entryRuleXRelationalExpression returns [EObject current=null] : iv_ruleXRelationalExpression= ruleXRelationalExpression EOF ;
-    public final EObject entryRuleXRelationalExpression() throws RecognitionException {
+    // $ANTLR start "entryRuleXAndExpression"
+    // InternalCubeDSL.g:2482:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
+    public final EObject entryRuleXAndExpression() throws RecognitionException {
         EObject current = null;
 
-        EObject iv_ruleXRelationalExpression = null;
+        EObject iv_ruleXAndExpression = null;
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2617:2: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2618:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
+            // InternalCubeDSL.g:2482:55: (iv_ruleXAndExpression= ruleXAndExpression EOF )
+            // InternalCubeDSL.g:2483:2: iv_ruleXAndExpression= ruleXAndExpression EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXRelationalExpressionRule()); 
+               newCompositeNode(grammarAccess.getXAndExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression6024);
-            iv_ruleXRelationalExpression=ruleXRelationalExpression();
+            pushFollow(FOLLOW_1);
+            iv_ruleXAndExpression=ruleXAndExpression();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleXRelationalExpression; 
+               current =iv_ruleXAndExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXRelationalExpression6034); 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 "entryRuleXRelationalExpression"
+    // $ANTLR end "entryRuleXAndExpression"
 
 
-    // $ANTLR start "ruleXRelationalExpression"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2625: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 {
+    // $ANTLR start "ruleXAndExpression"
+    // InternalCubeDSL.g:2489: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;
 
-        Token otherlv_2=null;
-        EObject this_XOtherOperatorExpression_0 = null;
+        EObject this_XEqualityExpression_0 = null;
 
-        EObject lv_type_3_0 = null;
-
-        EObject lv_rightOperand_6_0 = null;
+        EObject lv_rightOperand_3_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2628: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2629:1: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
+            // InternalCubeDSL.g:2495:2: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
+            // InternalCubeDSL.g:2496:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2629: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2630:5: this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
+            // InternalCubeDSL.g:2496:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            // InternalCubeDSL.g:2497:3: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); 
-                  
+
+              			newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0());
+              		
             }
-            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression6081);
-            this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression();
+            pushFollow(FOLLOW_53);
+            this_XEqualityExpression_0=ruleXEqualityExpression();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-                      current = this_XOtherOperatorExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
+
+              			current = this_XEqualityExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2638:1: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
+            // InternalCubeDSL.g:2505:3: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            loop47:
+            do {
+                int alt47=2;
+                int LA47_0 = input.LA(1);
+
+                if ( (LA47_0==60) ) {
+                    int LA47_2 = input.LA(2);
+
+                    if ( (synpred9_InternalCubeDSL()) ) {
+                        alt47=1;
+                    }
+
+
+                }
+
+
+                switch (alt47) {
+            	case 1 :
+            	    // InternalCubeDSL.g:2506:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    {
+            	    // InternalCubeDSL.g:2506:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
+            	    // InternalCubeDSL.g:2507:5: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
+            	    {
+            	    // InternalCubeDSL.g:2517:5: ( () ( ( ruleOpAnd ) ) )
+            	    // InternalCubeDSL.g:2518:6: () ( ( ruleOpAnd ) )
+            	    {
+            	    // InternalCubeDSL.g:2518:6: ()
+            	    // InternalCubeDSL.g:2519:7: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								current);
+            	      						
+            	    }
+
+            	    }
+
+            	    // InternalCubeDSL.g:2525:6: ( ( ruleOpAnd ) )
+            	    // InternalCubeDSL.g:2526:7: ( ruleOpAnd )
+            	    {
+            	    // InternalCubeDSL.g:2526:7: ( ruleOpAnd )
+            	    // InternalCubeDSL.g:2527:8: ruleOpAnd
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								if (current==null) {
+            	      									current = createModelElement(grammarAccess.getXAndExpressionRule());
+            	      								}
+            	      							
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      								newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+            	      							
+            	    }
+            	    pushFollow(FOLLOW_43);
+            	    ruleOpAnd();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalCubeDSL.g:2543:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    // InternalCubeDSL.g:2544:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    {
+            	    // InternalCubeDSL.g:2544:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    // InternalCubeDSL.g:2545:6: lv_rightOperand_3_0= ruleXEqualityExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_53);
+            	    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,
+            	      							"org.eclipse.xtext.xbase.Xbase.XEqualityExpression");
+            	      						afterParserOrEnumRuleCall();
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop47;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAndExpression"
+
+
+    // $ANTLR start "entryRuleOpAnd"
+    // InternalCubeDSL.g:2567:1: entryRuleOpAnd returns [String current=null] : iv_ruleOpAnd= ruleOpAnd EOF ;
+    public final String entryRuleOpAnd() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpAnd = null;
+
+
+        try {
+            // InternalCubeDSL.g:2567:45: (iv_ruleOpAnd= ruleOpAnd EOF )
+            // InternalCubeDSL.g:2568: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"
+    // InternalCubeDSL.g:2574:1: ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '&&' ;
+    public final AntlrDatatypeRuleToken ruleOpAnd() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalCubeDSL.g:2580:2: (kw= '&&' )
+            // InternalCubeDSL.g:2581:2: kw= '&&'
+            {
+            kw=(Token)match(input,60,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"
+    // InternalCubeDSL.g:2589:1: entryRuleXEqualityExpression returns [EObject current=null] : iv_ruleXEqualityExpression= ruleXEqualityExpression EOF ;
+    public final EObject entryRuleXEqualityExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXEqualityExpression = null;
+
+
+        try {
+            // InternalCubeDSL.g:2589:60: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
+            // InternalCubeDSL.g:2590: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"
+    // InternalCubeDSL.g:2596: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 {
+            // InternalCubeDSL.g:2602:2: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
+            // InternalCubeDSL.g:2603:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
+            {
+            // InternalCubeDSL.g:2603:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
+            // InternalCubeDSL.g:2604:3: this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_54);
+            this_XRelationalExpression_0=ruleXRelationalExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XRelationalExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalCubeDSL.g:2612:3: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
             loop48:
             do {
-                int alt48=3;
+                int alt48=2;
                 switch ( input.LA(1) ) {
-                case 53:
+                case 61:
                     {
                     int LA48_2 = input.LA(2);
 
-                    if ( (synpred13_InternalCubeDSL()) ) {
-                        alt48=2;
-                    }
-
-
-                    }
-                    break;
-                case 54:
-                    {
-                    int LA48_3 = input.LA(2);
-
-                    if ( (synpred13_InternalCubeDSL()) ) {
-                        alt48=2;
+                    if ( (synpred10_InternalCubeDSL()) ) {
+                        alt48=1;
                     }
 
 
@@ -7683,21 +7266,32 @@
                     break;
                 case 62:
                     {
-                    int LA48_4 = input.LA(2);
+                    int LA48_3 = input.LA(2);
 
-                    if ( (synpred12_InternalCubeDSL()) ) {
+                    if ( (synpred10_InternalCubeDSL()) ) {
                         alt48=1;
                     }
 
 
                     }
                     break;
-                case 55:
+                case 63:
+                    {
+                    int LA48_4 = input.LA(2);
+
+                    if ( (synpred10_InternalCubeDSL()) ) {
+                        alt48=1;
+                    }
+
+
+                    }
+                    break;
+                case 64:
                     {
                     int LA48_5 = input.LA(2);
 
-                    if ( (synpred13_InternalCubeDSL()) ) {
-                        alt48=2;
+                    if ( (synpred10_InternalCubeDSL()) ) {
+                        alt48=1;
                     }
 
 
@@ -7708,70 +7302,54 @@
 
                 switch (alt48) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2638:2: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    // InternalCubeDSL.g:2613:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2638:2: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2638:3: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalCubeDSL.g:2613:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
+            	    // InternalCubeDSL.g:2614:5: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2638:3: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2638:4: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
+            	    // InternalCubeDSL.g:2624:5: ( () ( ( ruleOpEquality ) ) )
+            	    // InternalCubeDSL.g:2625:6: () ( ( ruleOpEquality ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2640:5: ( () otherlv_2= 'instanceof' )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2640:6: () otherlv_2= 'instanceof'
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2640:6: ()
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2641:5: 
+            	    // InternalCubeDSL.g:2625:6: ()
+            	    // InternalCubeDSL.g:2626:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
-            	                  current);
-            	          
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								current);
+            	      						
             	    }
 
             	    }
 
-            	    otherlv_2=(Token)match(input,62,FOLLOW_62_in_ruleXRelationalExpression6117); if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	          	newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
-            	          
-            	    }
-
-            	    }
-
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2650:3: ( (lv_type_3_0= ruleJvmTypeReference ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2651:1: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalCubeDSL.g:2632:6: ( ( ruleOpEquality ) )
+            	    // InternalCubeDSL.g:2633:7: ( ruleOpEquality )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2651:1: (lv_type_3_0= ruleJvmTypeReference )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2652:3: lv_type_3_0= ruleJvmTypeReference
+            	    // InternalCubeDSL.g:2633:7: ( ruleOpEquality )
+            	    // InternalCubeDSL.g:2634:8: ruleOpEquality
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); 
-            	      	    
+
+            	      								if (current==null) {
+            	      									current = createModelElement(grammarAccess.getXEqualityExpressionRule());
+            	      								}
+            	      							
             	    }
-            	    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXRelationalExpression6140);
-            	    lv_type_3_0=ruleJvmTypeReference();
+            	    if ( state.backtracking==0 ) {
+
+            	      								newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+            	      							
+            	    }
+            	    pushFollow(FOLLOW_43);
+            	    ruleOpEquality();
 
             	    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();
-            	      	    
+            	      								afterParserOrEnumRuleCall();
+            	      							
             	    }
 
             	    }
@@ -7784,100 +7362,35 @@
 
 
             	    }
-            	    break;
-            	case 2 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2669:6: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+
+            	    // InternalCubeDSL.g:2650:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
+            	    // InternalCubeDSL.g:2651:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2669:6: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2669:7: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2669:7: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2669:8: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2674:6: ( () ( ( ruleOpCompare ) ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2674:7: () ( ( ruleOpCompare ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2674:7: ()
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2675:5: 
+            	    // InternalCubeDSL.g:2651:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
+            	    // InternalCubeDSL.g:2652:6: lv_rightOperand_3_0= ruleXRelationalExpression
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
-            	                  current);
-            	          
+            	      						newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0());
+            	      					
             	    }
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2680:2: ( ( ruleOpCompare ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2681:1: ( ruleOpCompare )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2681:1: ( ruleOpCompare )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2682: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_ruleXRelationalExpression6201);
-            	    ruleOpCompare();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2695:4: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2696:1: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2696:1: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2697:3: lv_rightOperand_6_0= ruleXOtherOperatorExpression
-            	    {
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression6224);
-            	    lv_rightOperand_6_0=ruleXOtherOperatorExpression();
+            	    pushFollow(FOLLOW_54);
+            	    lv_rightOperand_3_0=ruleXRelationalExpression();
 
             	    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();
-            	      	    
+            	      						if (current==null) {
+            	      							current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
+            	      						}
+            	      						set(
+            	      							current,
+            	      							"rightOperand",
+            	      							lv_rightOperand_3_0,
+            	      							"org.eclipse.xtext.xbase.Xbase.XRelationalExpression");
+            	      						afterParserOrEnumRuleCall();
+            	      					
             	    }
 
             	    }
@@ -7887,9 +7400,6 @@
 
 
             	    }
-
-
-            	    }
             	    break;
 
             	default :
@@ -7904,106 +7414,100 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
     }
-    // $ANTLR end "ruleXRelationalExpression"
+    // $ANTLR end "ruleXEqualityExpression"
 
 
-    // $ANTLR start "entryRuleOpCompare"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2721:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
-    public final String entryRuleOpCompare() throws RecognitionException {
+    // $ANTLR start "entryRuleOpEquality"
+    // InternalCubeDSL.g:2674:1: entryRuleOpEquality returns [String current=null] : iv_ruleOpEquality= ruleOpEquality EOF ;
+    public final String entryRuleOpEquality() throws RecognitionException {
         String current = null;
 
-        AntlrDatatypeRuleToken iv_ruleOpCompare = null;
+        AntlrDatatypeRuleToken iv_ruleOpEquality = null;
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2722:2: (iv_ruleOpCompare= ruleOpCompare EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2723:2: iv_ruleOpCompare= ruleOpCompare EOF
+            // InternalCubeDSL.g:2674:50: (iv_ruleOpEquality= ruleOpEquality EOF )
+            // InternalCubeDSL.g:2675:2: iv_ruleOpEquality= ruleOpEquality EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpCompareRule()); 
+               newCompositeNode(grammarAccess.getOpEqualityRule()); 
             }
-            pushFollow(FOLLOW_ruleOpCompare_in_entryRuleOpCompare6264);
-            iv_ruleOpCompare=ruleOpCompare();
+            pushFollow(FOLLOW_1);
+            iv_ruleOpEquality=ruleOpEquality();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleOpCompare.getText(); 
+               current =iv_ruleOpEquality.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpCompare6275); 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 "entryRuleOpCompare"
+    // $ANTLR end "entryRuleOpEquality"
 
 
-    // $ANTLR start "ruleOpCompare"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2730:1: ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) ;
-    public final AntlrDatatypeRuleToken ruleOpCompare() throws RecognitionException {
+    // $ANTLR start "ruleOpEquality"
+    // InternalCubeDSL.g:2681: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(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2733:28: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2734:1: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            // InternalCubeDSL.g:2687:2: ( (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) )
+            // InternalCubeDSL.g:2688:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2734:1: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            // InternalCubeDSL.g:2688:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
             int alt49=4;
             switch ( input.LA(1) ) {
-            case 55:
+            case 61:
                 {
                 alt49=1;
                 }
                 break;
-            case 53:
+            case 62:
                 {
-                int LA49_2 = input.LA(2);
-
-                if ( (LA49_2==EOF||(LA49_2>=RULE_ID && LA49_2<=RULE_DECIMAL)||LA49_2==14||LA49_2==37||LA49_2==41||(LA49_2>=45 && LA49_2<=46)||LA49_2==53||(LA49_2>=69 && LA49_2<=70)||LA49_2==74||LA49_2==81||LA49_2==83||(LA49_2>=87 && LA49_2<=89)||(LA49_2>=92 && LA49_2<=103)||LA49_2==105) ) {
-                    alt49=4;
-                }
-                else if ( (LA49_2==44) ) {
-                    alt49=2;
-                }
-                else {
-                    if (state.backtracking>0) {state.failed=true; return current;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("", 49, 2, input);
-
-                    throw nvae;
-                }
+                alt49=2;
                 }
                 break;
-            case 54:
+            case 63:
                 {
                 alt49=3;
                 }
                 break;
+            case 64:
+                {
+                alt49=4;
+                }
+                break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
@@ -8014,66 +7518,53 @@
 
             switch (alt49) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2735:2: kw= '>='
+                    // InternalCubeDSL.g:2689:3: kw= '=='
                     {
-                    kw=(Token)match(input,55,FOLLOW_55_in_ruleOpCompare6313); 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.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0());
+                      		
                     }
 
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2741:6: (kw= '<' kw= '=' )
+                    // InternalCubeDSL.g:2695:3: kw= '!='
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2741:6: (kw= '<' kw= '=' )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2742:2: kw= '<' kw= '='
-                    {
-                    kw=(Token)match(input,53,FOLLOW_53_in_ruleOpCompare6333); 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.getOpCompareAccess().getLessThanSignKeyword_1_0()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1());
+                      		
                     }
-                    kw=(Token)match(input,44,FOLLOW_44_in_ruleOpCompare6346); 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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2755:2: kw= '>'
+                    // InternalCubeDSL.g:2701:3: kw= '==='
                     {
-                    kw=(Token)match(input,54,FOLLOW_54_in_ruleOpCompare6366); if (state.failed) return current;
+                    kw=(Token)match(input,63,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2());
+                      		
                     }
 
                     }
                     break;
                 case 4 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2762:2: kw= '<'
+                    // InternalCubeDSL.g:2707:3: kw= '!=='
                     {
-                    kw=(Token)match(input,53,FOLLOW_53_in_ruleOpCompare6385); if (state.failed) return current;
+                    kw=(Token)match(input,64,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_3()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3());
+                      		
                     }
 
                     }
@@ -8085,192 +7576,220 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
     }
-    // $ANTLR end "ruleOpCompare"
+    // $ANTLR end "ruleOpEquality"
 
 
-    // $ANTLR start "entryRuleXOtherOperatorExpression"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2775:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
-    public final EObject entryRuleXOtherOperatorExpression() throws RecognitionException {
+    // $ANTLR start "entryRuleXRelationalExpression"
+    // InternalCubeDSL.g:2716:1: entryRuleXRelationalExpression returns [EObject current=null] : iv_ruleXRelationalExpression= ruleXRelationalExpression EOF ;
+    public final EObject entryRuleXRelationalExpression() throws RecognitionException {
         EObject current = null;
 
-        EObject iv_ruleXOtherOperatorExpression = null;
+        EObject iv_ruleXRelationalExpression = null;
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2776:2: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2777:2: iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF
+            // InternalCubeDSL.g:2716:62: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
+            // InternalCubeDSL.g:2717:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); 
+               newCompositeNode(grammarAccess.getXRelationalExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression6425);
-            iv_ruleXOtherOperatorExpression=ruleXOtherOperatorExpression();
+            pushFollow(FOLLOW_1);
+            iv_ruleXRelationalExpression=ruleXRelationalExpression();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleXOtherOperatorExpression; 
+               current =iv_ruleXRelationalExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXOtherOperatorExpression6435); 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 "entryRuleXOtherOperatorExpression"
+    // $ANTLR end "entryRuleXRelationalExpression"
 
 
-    // $ANTLR start "ruleXOtherOperatorExpression"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2784:1: ruleXOtherOperatorExpression returns [EObject current=null] : (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) ;
-    public final EObject ruleXOtherOperatorExpression() throws RecognitionException {
+    // $ANTLR start "ruleXRelationalExpression"
+    // InternalCubeDSL.g:2723: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;
 
-        EObject this_XAdditiveExpression_0 = null;
+        Token otherlv_2=null;
+        EObject this_XOtherOperatorExpression_0 = null;
 
-        EObject lv_rightOperand_3_0 = null;
+        EObject lv_type_3_0 = null;
+
+        EObject lv_rightOperand_6_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2787:28: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2788:1: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            // InternalCubeDSL.g:2729:2: ( (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) )
+            // InternalCubeDSL.g:2730:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2788:1: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2789:5: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            // InternalCubeDSL.g:2730:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
+            // InternalCubeDSL.g:2731: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.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); 
-                  
+
+              			newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0());
+              		
             }
-            pushFollow(FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression6482);
-            this_XAdditiveExpression_0=ruleXAdditiveExpression();
+            pushFollow(FOLLOW_55);
+            this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-                      current = this_XAdditiveExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
+
+              			current = this_XOtherOperatorExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
             }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2797:1: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            // InternalCubeDSL.g:2739:3: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
             loop50:
             do {
-                int alt50=2;
-                alt50 = dfa50.predict(input);
+                int alt50=3;
+                switch ( input.LA(1) ) {
+                case 56:
+                    {
+                    int LA50_2 = input.LA(2);
+
+                    if ( (synpred12_InternalCubeDSL()) ) {
+                        alt50=2;
+                    }
+
+
+                    }
+                    break;
+                case 57:
+                    {
+                    int LA50_3 = input.LA(2);
+
+                    if ( (synpred12_InternalCubeDSL()) ) {
+                        alt50=2;
+                    }
+
+
+                    }
+                    break;
+                case 65:
+                    {
+                    int LA50_4 = input.LA(2);
+
+                    if ( (synpred11_InternalCubeDSL()) ) {
+                        alt50=1;
+                    }
+
+
+                    }
+                    break;
+                case 58:
+                    {
+                    int LA50_5 = input.LA(2);
+
+                    if ( (synpred12_InternalCubeDSL()) ) {
+                        alt50=2;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
                 switch (alt50) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2797:2: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    // InternalCubeDSL.g:2740:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2797:2: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2797:3: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
+            	    // InternalCubeDSL.g:2740:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    // InternalCubeDSL.g:2741:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2802:6: ( () ( ( ruleOpOther ) ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2802:7: () ( ( ruleOpOther ) )
+            	    // InternalCubeDSL.g:2741:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
+            	    // InternalCubeDSL.g:2742:6: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2802:7: ()
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2803:5: 
+            	    // InternalCubeDSL.g:2748:6: ( () otherlv_2= 'instanceof' )
+            	    // InternalCubeDSL.g:2749:7: () otherlv_2= 'instanceof'
+            	    {
+            	    // InternalCubeDSL.g:2749:7: ()
+            	    // InternalCubeDSL.g:2750:8: 
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            	                  current);
-            	          
+            	      								current = forceCreateModelElementAndSet(
+            	      									grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
+            	      									current);
+            	      							
             	    }
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2808:2: ( ( ruleOpOther ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2809:1: ( ruleOpOther )
+            	    otherlv_2=(Token)match(input,65,FOLLOW_56); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      							newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
+            	      						
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalCubeDSL.g:2762:5: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalCubeDSL.g:2763:6: (lv_type_3_0= ruleJvmTypeReference )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2809:1: ( ruleOpOther )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2810:3: ruleOpOther
+            	    // InternalCubeDSL.g:2763:6: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalCubeDSL.g:2764:7: lv_type_3_0= ruleJvmTypeReference
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	      			if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getXOtherOperatorExpressionRule());
-            	      	        }
-            	              
+            	      							newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0());
+            	      						
             	    }
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleOpOther_in_ruleXOtherOperatorExpression6535);
-            	    ruleOpOther();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2823:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2824:1: (lv_rightOperand_3_0= ruleXAdditiveExpression )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2824:1: (lv_rightOperand_3_0= ruleXAdditiveExpression )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2825:3: lv_rightOperand_3_0= ruleXAdditiveExpression
-            	    {
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression6558);
-            	    lv_rightOperand_3_0=ruleXAdditiveExpression();
+            	    pushFollow(FOLLOW_55);
+            	    lv_type_3_0=ruleJvmTypeReference();
 
             	    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.getXRelationalExpressionRule());
+            	      							}
+            	      							set(
+            	      								current,
+            	      								"type",
+            	      								lv_type_3_0,
+            	      								"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+            	      							afterParserOrEnumRuleCall();
+            	      						
             	    }
 
             	    }
@@ -8280,6 +7799,115 @@
 
 
             	    }
+
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // InternalCubeDSL.g:2783:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    {
+            	    // InternalCubeDSL.g:2783:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    // InternalCubeDSL.g:2784:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    {
+            	    // InternalCubeDSL.g:2784:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
+            	    // InternalCubeDSL.g:2785:6: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
+            	    {
+            	    // InternalCubeDSL.g:2795:6: ( () ( ( ruleOpCompare ) ) )
+            	    // InternalCubeDSL.g:2796:7: () ( ( ruleOpCompare ) )
+            	    {
+            	    // InternalCubeDSL.g:2796:7: ()
+            	    // InternalCubeDSL.g:2797:8: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								current = forceCreateModelElementAndSet(
+            	      									grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+            	      									current);
+            	      							
+            	    }
+
+            	    }
+
+            	    // InternalCubeDSL.g:2803:7: ( ( ruleOpCompare ) )
+            	    // InternalCubeDSL.g:2804:8: ( ruleOpCompare )
+            	    {
+            	    // InternalCubeDSL.g:2804:8: ( ruleOpCompare )
+            	    // InternalCubeDSL.g:2805: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_43);
+            	    ruleOpCompare();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      									afterParserOrEnumRuleCall();
+            	      								
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalCubeDSL.g:2821:5: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    // InternalCubeDSL.g:2822:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    {
+            	    // InternalCubeDSL.g:2822:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    // InternalCubeDSL.g:2823:7: lv_rightOperand_6_0= ruleXOtherOperatorExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0());
+            	      						
+            	    }
+            	    pushFollow(FOLLOW_55);
+            	    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 :
@@ -8294,14 +7922,412 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXRelationalExpression"
+
+
+    // $ANTLR start "entryRuleOpCompare"
+    // InternalCubeDSL.g:2846:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
+    public final String entryRuleOpCompare() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpCompare = null;
+
+
+        try {
+            // InternalCubeDSL.g:2846:49: (iv_ruleOpCompare= ruleOpCompare EOF )
+            // InternalCubeDSL.g:2847: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"
+    // InternalCubeDSL.g:2853: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 {
+            // InternalCubeDSL.g:2859:2: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
+            // InternalCubeDSL.g:2860:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            {
+            // InternalCubeDSL.g:2860:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            int alt51=4;
+            switch ( input.LA(1) ) {
+            case 58:
+                {
+                alt51=1;
+                }
+                break;
+            case 56:
+                {
+                int LA51_2 = input.LA(2);
+
+                if ( (LA51_2==EOF||(LA51_2>=RULE_ID && LA51_2<=RULE_DECIMAL)||LA51_2==14||(LA51_2>=37 && LA51_2<=39)||LA51_2==44||(LA51_2>=48 && LA51_2<=49)||LA51_2==56||(LA51_2>=72 && LA51_2<=73)||LA51_2==77||LA51_2==84||LA51_2==86||(LA51_2>=90 && LA51_2<=92)||(LA51_2>=95 && LA51_2<=104)||LA51_2==106) ) {
+                    alt51=4;
+                }
+                else if ( (LA51_2==47) ) {
+                    alt51=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 51, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 57:
+                {
+                alt51=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 51, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt51) {
+                case 1 :
+                    // InternalCubeDSL.g:2861:3: kw= '>='
+                    {
+                    kw=(Token)match(input,58,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0());
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:2867:3: (kw= '<' kw= '=' )
+                    {
+                    // InternalCubeDSL.g:2867:3: (kw= '<' kw= '=' )
+                    // InternalCubeDSL.g:2868:4: kw= '<' kw= '='
+                    {
+                    kw=(Token)match(input,56,FOLLOW_42); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0());
+                      			
+                    }
+                    kw=(Token)match(input,47,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalCubeDSL.g:2880:3: kw= '>'
+                    {
+                    kw=(Token)match(input,57,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2());
+                      		
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // InternalCubeDSL.g:2886:3: kw= '<'
+                    {
+                    kw=(Token)match(input,56,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"
+    // InternalCubeDSL.g:2895:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
+    public final EObject entryRuleXOtherOperatorExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXOtherOperatorExpression = null;
+
+
+        try {
+            // InternalCubeDSL.g:2895:65: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
+            // InternalCubeDSL.g:2896: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"
+    // InternalCubeDSL.g:2902: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 {
+            // InternalCubeDSL.g:2908:2: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
+            // InternalCubeDSL.g:2909:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            {
+            // InternalCubeDSL.g:2909:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            // InternalCubeDSL.g:2910:3: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_57);
+            this_XAdditiveExpression_0=ruleXAdditiveExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XAdditiveExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalCubeDSL.g:2918:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            loop52:
+            do {
+                int alt52=2;
+                alt52 = dfa52.predict(input);
+                switch (alt52) {
+            	case 1 :
+            	    // InternalCubeDSL.g:2919:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    {
+            	    // InternalCubeDSL.g:2919:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
+            	    // InternalCubeDSL.g:2920:5: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
+            	    {
+            	    // InternalCubeDSL.g:2930:5: ( () ( ( ruleOpOther ) ) )
+            	    // InternalCubeDSL.g:2931:6: () ( ( ruleOpOther ) )
+            	    {
+            	    // InternalCubeDSL.g:2931:6: ()
+            	    // InternalCubeDSL.g:2932:7: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								current);
+            	      						
+            	    }
+
+            	    }
+
+            	    // InternalCubeDSL.g:2938:6: ( ( ruleOpOther ) )
+            	    // InternalCubeDSL.g:2939:7: ( ruleOpOther )
+            	    {
+            	    // InternalCubeDSL.g:2939:7: ( ruleOpOther )
+            	    // InternalCubeDSL.g:2940: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_43);
+            	    ruleOpOther();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalCubeDSL.g:2956:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    // InternalCubeDSL.g:2957:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    {
+            	    // InternalCubeDSL.g:2957:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    // InternalCubeDSL.g:2958:6: lv_rightOperand_3_0= ruleXAdditiveExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_57);
+            	    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 loop52;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
         finally {
         }
         return current;
@@ -8310,7 +8336,7 @@
 
 
     // $ANTLR start "entryRuleOpOther"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2849:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
+    // InternalCubeDSL.g:2980:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
     public final String entryRuleOpOther() throws RecognitionException {
         String current = null;
 
@@ -8318,13 +8344,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2850:2: (iv_ruleOpOther= ruleOpOther EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2851:2: iv_ruleOpOther= ruleOpOther EOF
+            // InternalCubeDSL.g:2980:47: (iv_ruleOpOther= ruleOpOther EOF )
+            // InternalCubeDSL.g:2981:2: iv_ruleOpOther= ruleOpOther EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpOtherRule()); 
             }
-            pushFollow(FOLLOW_ruleOpOther_in_entryRuleOpOther6597);
+            pushFollow(FOLLOW_1);
             iv_ruleOpOther=ruleOpOther();
 
             state._fsp--;
@@ -8332,16 +8358,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleOpOther.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOther6608); 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;
@@ -8350,67 +8376,68 @@
 
 
     // $ANTLR start "ruleOpOther"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2858:1: ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) ;
+    // InternalCubeDSL.g:2987: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2861:28: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2862:1: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            // InternalCubeDSL.g:2993:2: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) )
+            // InternalCubeDSL.g:2994:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2862:1: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
-            int alt53=9;
-            alt53 = dfa53.predict(input);
-            switch (alt53) {
+            // InternalCubeDSL.g:2994:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            int alt55=9;
+            alt55 = dfa55.predict(input);
+            switch (alt55) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2863:2: kw= '->'
+                    // InternalCubeDSL.g:2995:3: kw= '->'
                     {
-                    kw=(Token)match(input,63,FOLLOW_63_in_ruleOpOther6646); if (state.failed) return current;
+                    kw=(Token)match(input,66,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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2870:2: kw= '..<'
+                    // InternalCubeDSL.g:3001:3: kw= '..<'
                     {
-                    kw=(Token)match(input,64,FOLLOW_64_in_ruleOpOther6665); if (state.failed) return current;
+                    kw=(Token)match(input,67,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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2876:6: (kw= '>' kw= '..' )
+                    // InternalCubeDSL.g:3007:3: (kw= '>' kw= '..' )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2876:6: (kw= '>' kw= '..' )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2877:2: kw= '>' kw= '..'
+                    // InternalCubeDSL.g:3007:3: (kw= '>' kw= '..' )
+                    // InternalCubeDSL.g:3008:4: kw= '>' kw= '..'
                     {
-                    kw=(Token)match(input,54,FOLLOW_54_in_ruleOpOther6685); if (state.failed) return current;
+                    kw=(Token)match(input,57,FOLLOW_58); 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,65,FOLLOW_65_in_ruleOpOther6698); if (state.failed) return current;
+                    kw=(Token)match(input,68,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());
+                      			
                     }
 
                     }
@@ -8419,61 +8446,61 @@
                     }
                     break;
                 case 4 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2890:2: kw= '..'
+                    // InternalCubeDSL.g:3020:3: kw= '..'
                     {
-                    kw=(Token)match(input,65,FOLLOW_65_in_ruleOpOther6718); if (state.failed) return current;
+                    kw=(Token)match(input,68,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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2897:2: kw= '=>'
+                    // InternalCubeDSL.g:3026:3: kw= '=>'
                     {
-                    kw=(Token)match(input,66,FOLLOW_66_in_ruleOpOther6737); 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().getEqualsSignGreaterThanSignKeyword_4()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_4());
+                      		
                     }
 
                     }
                     break;
                 case 6 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2903:6: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    // InternalCubeDSL.g:3032:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2903:6: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2904:2: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    // InternalCubeDSL.g:3032:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    // InternalCubeDSL.g:3033:4: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
                     {
-                    kw=(Token)match(input,54,FOLLOW_54_in_ruleOpOther6757); if (state.failed) return current;
+                    kw=(Token)match(input,57,FOLLOW_59); 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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2909:1: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
-                    int alt51=2;
-                    int LA51_0 = input.LA(1);
+                    // InternalCubeDSL.g:3038:4: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    int alt53=2;
+                    int LA53_0 = input.LA(1);
 
-                    if ( (LA51_0==54) ) {
-                        int LA51_1 = input.LA(2);
+                    if ( (LA53_0==57) ) {
+                        int LA53_1 = input.LA(2);
 
-                        if ( (LA51_1==54) && (synpred15_InternalCubeDSL())) {
-                            alt51=1;
+                        if ( (LA53_1==57) && (synpred14_InternalCubeDSL())) {
+                            alt53=1;
                         }
-                        else if ( (LA51_1==EOF||(LA51_1>=RULE_ID && LA51_1<=RULE_DECIMAL)||LA51_1==14||LA51_1==37||LA51_1==41||(LA51_1>=45 && LA51_1<=46)||LA51_1==53||(LA51_1>=69 && LA51_1<=70)||LA51_1==74||LA51_1==81||LA51_1==83||(LA51_1>=87 && LA51_1<=89)||(LA51_1>=92 && LA51_1<=103)||LA51_1==105) ) {
-                            alt51=2;
+                        else if ( (LA53_1==EOF||(LA53_1>=RULE_ID && LA53_1<=RULE_DECIMAL)||LA53_1==14||(LA53_1>=37 && LA53_1<=39)||LA53_1==44||(LA53_1>=48 && LA53_1<=49)||LA53_1==56||(LA53_1>=72 && LA53_1<=73)||LA53_1==77||LA53_1==84||LA53_1==86||(LA53_1>=90 && LA53_1<=92)||(LA53_1>=95 && LA53_1<=104)||LA53_1==106) ) {
+                            alt53=2;
                         }
                         else {
                             if (state.backtracking>0) {state.failed=true; return current;}
                             NoViableAltException nvae =
-                                new NoViableAltException("", 51, 1, input);
+                                new NoViableAltException("", 53, 1, input);
 
                             throw nvae;
                         }
@@ -8481,33 +8508,33 @@
                     else {
                         if (state.backtracking>0) {state.failed=true; return current;}
                         NoViableAltException nvae =
-                            new NoViableAltException("", 51, 0, input);
+                            new NoViableAltException("", 53, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt51) {
+                    switch (alt53) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2909:2: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            // InternalCubeDSL.g:3039:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
                             {
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2909:2: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2909:3: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
+                            // InternalCubeDSL.g:3039:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            // InternalCubeDSL.g:3040:6: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
                             {
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2913:5: (kw= '>' kw= '>' )
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2914:2: kw= '>' kw= '>'
+                            // InternalCubeDSL.g:3045:6: (kw= '>' kw= '>' )
+                            // InternalCubeDSL.g:3046:7: kw= '>' kw= '>'
                             {
-                            kw=(Token)match(input,54,FOLLOW_54_in_ruleOpOther6788); if (state.failed) return current;
+                            kw=(Token)match(input,57,FOLLOW_59); 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,54,FOLLOW_54_in_ruleOpOther6801); 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.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1()); 
-                                  
+                              							current.merge(kw);
+                              							newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_0_0_1());
+                              						
                             }
 
                             }
@@ -8519,14 +8546,14 @@
                             }
                             break;
                         case 2 :
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2927:2: kw= '>'
+                            // InternalCubeDSL.g:3059:5: kw= '>'
                             {
-                            kw=(Token)match(input,54,FOLLOW_54_in_ruleOpOther6822); 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.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1()); 
-                                  
+                              					current.merge(kw);
+                              					newLeafNode(kw, grammarAccess.getOpOtherAccess().getGreaterThanSignKeyword_5_1_1());
+                              				
                             }
 
                             }
@@ -8541,72 +8568,72 @@
                     }
                     break;
                 case 7 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2933:6: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    // InternalCubeDSL.g:3067:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
                     {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2933:6: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2934:2: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    // InternalCubeDSL.g:3067:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    // InternalCubeDSL.g:3068:4: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
                     {
-                    kw=(Token)match(input,53,FOLLOW_53_in_ruleOpOther6844); if (state.failed) return current;
+                    kw=(Token)match(input,56,FOLLOW_60); 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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2939:1: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
-                    int alt52=3;
-                    int LA52_0 = input.LA(1);
+                    // InternalCubeDSL.g:3073:4: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    int alt54=3;
+                    int LA54_0 = input.LA(1);
 
-                    if ( (LA52_0==53) ) {
-                        int LA52_1 = input.LA(2);
+                    if ( (LA54_0==56) ) {
+                        int LA54_1 = input.LA(2);
 
-                        if ( (synpred16_InternalCubeDSL()) ) {
-                            alt52=1;
+                        if ( (synpred15_InternalCubeDSL()) ) {
+                            alt54=1;
                         }
                         else if ( (true) ) {
-                            alt52=2;
+                            alt54=2;
                         }
                         else {
                             if (state.backtracking>0) {state.failed=true; return current;}
                             NoViableAltException nvae =
-                                new NoViableAltException("", 52, 1, input);
+                                new NoViableAltException("", 54, 1, input);
 
                             throw nvae;
                         }
                     }
-                    else if ( (LA52_0==66) ) {
-                        alt52=3;
+                    else if ( (LA54_0==69) ) {
+                        alt54=3;
                     }
                     else {
                         if (state.backtracking>0) {state.failed=true; return current;}
                         NoViableAltException nvae =
-                            new NoViableAltException("", 52, 0, input);
+                            new NoViableAltException("", 54, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt52) {
+                    switch (alt54) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2939:2: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            // InternalCubeDSL.g:3074:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
                             {
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2939:2: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2939:3: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
+                            // InternalCubeDSL.g:3074:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            // InternalCubeDSL.g:3075:6: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
                             {
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2943:5: (kw= '<' kw= '<' )
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2944:2: kw= '<' kw= '<'
+                            // InternalCubeDSL.g:3080:6: (kw= '<' kw= '<' )
+                            // InternalCubeDSL.g:3081:7: kw= '<' kw= '<'
                             {
-                            kw=(Token)match(input,53,FOLLOW_53_in_ruleOpOther6875); if (state.failed) return current;
+                            kw=(Token)match(input,56,FOLLOW_49); 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,53,FOLLOW_53_in_ruleOpOther6888); 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.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); 
-                                  
+                              							current.merge(kw);
+                              							newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1());
+                              						
                             }
 
                             }
@@ -8618,27 +8645,27 @@
                             }
                             break;
                         case 2 :
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2957:2: kw= '<'
+                            // InternalCubeDSL.g:3094:5: kw= '<'
                             {
-                            kw=(Token)match(input,53,FOLLOW_53_in_ruleOpOther6909); 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.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
-                                  
+                              					current.merge(kw);
+                              					newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1());
+                              				
                             }
 
                             }
                             break;
                         case 3 :
-                            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2964:2: kw= '=>'
+                            // InternalCubeDSL.g:3100:5: kw= '=>'
                             {
-                            kw=(Token)match(input,66,FOLLOW_66_in_ruleOpOther6928); 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().getEqualsSignGreaterThanSignKeyword_6_1_2()); 
-                                  
+                              					current.merge(kw);
+                              					newLeafNode(kw, grammarAccess.getOpOtherAccess().getEqualsSignGreaterThanSignKeyword_6_1_2());
+                              				
                             }
 
                             }
@@ -8653,27 +8680,27 @@
                     }
                     break;
                 case 8 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2971:2: kw= '<>'
+                    // InternalCubeDSL.g:3108:3: kw= '<>'
                     {
-                    kw=(Token)match(input,67,FOLLOW_67_in_ruleOpOther6949); 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().getLessThanSignGreaterThanSignKeyword_7()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignGreaterThanSignKeyword_7());
+                      		
                     }
 
                     }
                     break;
                 case 9 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2978:2: kw= '?:'
+                    // InternalCubeDSL.g:3114:3: kw= '?:'
                     {
-                    kw=(Token)match(input,68,FOLLOW_68_in_ruleOpOther6968); 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().getQuestionMarkColonKeyword_8()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpOtherAccess().getQuestionMarkColonKeyword_8());
+                      		
                     }
 
                     }
@@ -8685,14 +8712,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -8701,7 +8730,7 @@
 
 
     // $ANTLR start "entryRuleXAdditiveExpression"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2991:1: entryRuleXAdditiveExpression returns [EObject current=null] : iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF ;
+    // InternalCubeDSL.g:3123:1: entryRuleXAdditiveExpression returns [EObject current=null] : iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF ;
     public final EObject entryRuleXAdditiveExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8709,13 +8738,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2992:2: (iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:2993:2: iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF
+            // InternalCubeDSL.g:3123:60: (iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF )
+            // InternalCubeDSL.g:3124:2: iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAdditiveExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXAdditiveExpression_in_entryRuleXAdditiveExpression7008);
+            pushFollow(FOLLOW_1);
             iv_ruleXAdditiveExpression=ruleXAdditiveExpression();
 
             state._fsp--;
@@ -8723,16 +8752,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAdditiveExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAdditiveExpression7018); 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;
@@ -8741,7 +8770,7 @@
 
 
     // $ANTLR start "ruleXAdditiveExpression"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3000:1: ruleXAdditiveExpression returns [EObject current=null] : (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) ;
+    // InternalCubeDSL.g:3130: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;
 
@@ -8750,107 +8779,108 @@
         EObject lv_rightOperand_3_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3003:28: ( (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3004:1: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
+            // InternalCubeDSL.g:3136:2: ( (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) )
+            // InternalCubeDSL.g:3137:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3004:1: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3005:5: this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
+            // InternalCubeDSL.g:3137:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
+            // InternalCubeDSL.g:3138: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_ruleXAdditiveExpression7065);
+            pushFollow(FOLLOW_61);
             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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3013:1: ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
-            loop54:
+            // InternalCubeDSL.g:3146:3: ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
+            loop56:
             do {
-                int alt54=2;
-                int LA54_0 = input.LA(1);
+                int alt56=2;
+                int LA56_0 = input.LA(1);
 
-                if ( (LA54_0==69) ) {
-                    int LA54_2 = input.LA(2);
+                if ( (LA56_0==72) ) {
+                    int LA56_2 = input.LA(2);
 
-                    if ( (synpred17_InternalCubeDSL()) ) {
-                        alt54=1;
+                    if ( (synpred16_InternalCubeDSL()) ) {
+                        alt56=1;
                     }
 
 
                 }
-                else if ( (LA54_0==70) ) {
-                    int LA54_3 = input.LA(2);
+                else if ( (LA56_0==73) ) {
+                    int LA56_3 = input.LA(2);
 
-                    if ( (synpred17_InternalCubeDSL()) ) {
-                        alt54=1;
+                    if ( (synpred16_InternalCubeDSL()) ) {
+                        alt56=1;
                     }
 
 
                 }
 
 
-                switch (alt54) {
+                switch (alt56) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3013:2: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
+            	    // InternalCubeDSL.g:3147:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3013:2: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3013:3: ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) )
+            	    // InternalCubeDSL.g:3147:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) )
+            	    // InternalCubeDSL.g:3148:5: ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3018:6: ( () ( ( ruleOpAdd ) ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3018:7: () ( ( ruleOpAdd ) )
+            	    // InternalCubeDSL.g:3158:5: ( () ( ( ruleOpAdd ) ) )
+            	    // InternalCubeDSL.g:3159:6: () ( ( ruleOpAdd ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3018:7: ()
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3019:5: 
+            	    // InternalCubeDSL.g:3159:6: ()
+            	    // InternalCubeDSL.g:3160: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3024:2: ( ( ruleOpAdd ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3025:1: ( ruleOpAdd )
+            	    // InternalCubeDSL.g:3166:6: ( ( ruleOpAdd ) )
+            	    // InternalCubeDSL.g:3167:7: ( ruleOpAdd )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3025:1: ( ruleOpAdd )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3026:3: ruleOpAdd
+            	    // InternalCubeDSL.g:3167:7: ( ruleOpAdd )
+            	    // InternalCubeDSL.g:3168: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_ruleXAdditiveExpression7118);
+            	    pushFollow(FOLLOW_43);
             	    ruleOpAdd();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
             	    }
 
             	    }
@@ -8864,409 +8894,34 @@
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3039:4: ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3040:1: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
+            	    // InternalCubeDSL.g:3184:4: ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
+            	    // InternalCubeDSL.g:3185:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3040:1: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3041:3: lv_rightOperand_3_0= ruleXMultiplicativeExpression
+            	    // InternalCubeDSL.g:3185:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
+            	    // InternalCubeDSL.g:3186: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_ruleXAdditiveExpression7141);
+            	    pushFollow(FOLLOW_61);
             	    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();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop54;
-                }
-            } while (true);
-
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleXAdditiveExpression"
-
-
-    // $ANTLR start "entryRuleOpAdd"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3065:1: entryRuleOpAdd returns [String current=null] : iv_ruleOpAdd= ruleOpAdd EOF ;
-    public final String entryRuleOpAdd() throws RecognitionException {
-        String current = null;
-
-        AntlrDatatypeRuleToken iv_ruleOpAdd = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3066:2: (iv_ruleOpAdd= ruleOpAdd EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3067:2: iv_ruleOpAdd= ruleOpAdd EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpAddRule()); 
-            }
-            pushFollow(FOLLOW_ruleOpAdd_in_entryRuleOpAdd7180);
-            iv_ruleOpAdd=ruleOpAdd();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleOpAdd.getText(); 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAdd7191); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleOpAdd"
-
-
-    // $ANTLR start "ruleOpAdd"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3074: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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3077:28: ( (kw= '+' | kw= '-' ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3078:1: (kw= '+' | kw= '-' )
-            {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3078:1: (kw= '+' | kw= '-' )
-            int alt55=2;
-            int LA55_0 = input.LA(1);
-
-            if ( (LA55_0==69) ) {
-                alt55=1;
-            }
-            else if ( (LA55_0==70) ) {
-                alt55=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return current;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 55, 0, input);
-
-                throw nvae;
-            }
-            switch (alt55) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3079:2: kw= '+'
-                    {
-                    kw=(Token)match(input,69,FOLLOW_69_in_ruleOpAdd7229); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpAddAccess().getPlusSignKeyword_0()); 
-                          
-                    }
-
-                    }
-                    break;
-                case 2 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3086:2: kw= '-'
-                    {
-                    kw=(Token)match(input,70,FOLLOW_70_in_ruleOpAdd7248); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1()); 
-                          
-                    }
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleOpAdd"
-
-
-    // $ANTLR start "entryRuleXMultiplicativeExpression"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3099:1: entryRuleXMultiplicativeExpression returns [EObject current=null] : iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF ;
-    public final EObject entryRuleXMultiplicativeExpression() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleXMultiplicativeExpression = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3100:2: (iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3101:2: iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); 
-            }
-            pushFollow(FOLLOW_ruleXMultiplicativeExpression_in_entryRuleXMultiplicativeExpression7288);
-            iv_ruleXMultiplicativeExpression=ruleXMultiplicativeExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleXMultiplicativeExpression; 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXMultiplicativeExpression7298); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleXMultiplicativeExpression"
-
-
-    // $ANTLR start "ruleXMultiplicativeExpression"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3108: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;
-
-        EObject this_XUnaryOperation_0 = null;
-
-        EObject lv_rightOperand_3_0 = null;
-
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3111:28: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3112:1: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
-            {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3112:1: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3113:5: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
-            {
-            if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0()); 
-                  
-            }
-            pushFollow(FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression7345);
-            this_XUnaryOperation_0=ruleXUnaryOperation();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               
-                      current = this_XUnaryOperation_0; 
-                      afterParserOrEnumRuleCall();
-                  
-            }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3121:1: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
-            loop56:
-            do {
-                int alt56=2;
-                switch ( input.LA(1) ) {
-                case 39:
-                    {
-                    int LA56_2 = input.LA(2);
-
-                    if ( (synpred18_InternalCubeDSL()) ) {
-                        alt56=1;
-                    }
-
-
-                    }
-                    break;
-                case 71:
-                    {
-                    int LA56_3 = input.LA(2);
-
-                    if ( (synpred18_InternalCubeDSL()) ) {
-                        alt56=1;
-                    }
-
-
-                    }
-                    break;
-                case 72:
-                    {
-                    int LA56_4 = input.LA(2);
-
-                    if ( (synpred18_InternalCubeDSL()) ) {
-                        alt56=1;
-                    }
-
-
-                    }
-                    break;
-                case 73:
-                    {
-                    int LA56_5 = input.LA(2);
-
-                    if ( (synpred18_InternalCubeDSL()) ) {
-                        alt56=1;
-                    }
-
-
-                    }
-                    break;
-
-                }
-
-                switch (alt56) {
-            	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3121:2: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3121:2: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3121:3: ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3126:6: ( () ( ( ruleOpMulti ) ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3126:7: () ( ( ruleOpMulti ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3126:7: ()
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3127:5: 
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            	                  current);
-            	          
-            	    }
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3132:2: ( ( ruleOpMulti ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3133:1: ( ruleOpMulti )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3133:1: ( ruleOpMulti )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3134:3: ruleOpMulti
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	      			if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getXMultiplicativeExpressionRule());
-            	      	        }
-            	              
-            	    }
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleOpMulti_in_ruleXMultiplicativeExpression7398);
-            	    ruleOpMulti();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3147:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3148:1: (lv_rightOperand_3_0= ruleXUnaryOperation )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3148:1: (lv_rightOperand_3_0= ruleXUnaryOperation )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3149:3: lv_rightOperand_3_0= ruleXUnaryOperation
-            	    {
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleXUnaryOperation_in_ruleXMultiplicativeExpression7421);
-            	    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.getXAdditiveExpressionRule());
+            	      						}
+            	      						set(
+            	      							current,
+            	      							"rightOperand",
+            	      							lv_rightOperand_3_0,
+            	      							"org.eclipse.xtext.xbase.Xbase.XMultiplicativeExpression");
+            	      						afterParserOrEnumRuleCall();
+            	      					
             	    }
 
             	    }
@@ -9290,154 +8945,117 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
     }
-    // $ANTLR end "ruleXMultiplicativeExpression"
+    // $ANTLR end "ruleXAdditiveExpression"
 
 
-    // $ANTLR start "entryRuleOpMulti"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3173:1: entryRuleOpMulti returns [String current=null] : iv_ruleOpMulti= ruleOpMulti EOF ;
-    public final String entryRuleOpMulti() throws RecognitionException {
+    // $ANTLR start "entryRuleOpAdd"
+    // InternalCubeDSL.g:3208:1: entryRuleOpAdd returns [String current=null] : iv_ruleOpAdd= ruleOpAdd EOF ;
+    public final String entryRuleOpAdd() throws RecognitionException {
         String current = null;
 
-        AntlrDatatypeRuleToken iv_ruleOpMulti = null;
+        AntlrDatatypeRuleToken iv_ruleOpAdd = null;
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3174:2: (iv_ruleOpMulti= ruleOpMulti EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3175:2: iv_ruleOpMulti= ruleOpMulti EOF
+            // InternalCubeDSL.g:3208:45: (iv_ruleOpAdd= ruleOpAdd EOF )
+            // InternalCubeDSL.g:3209:2: iv_ruleOpAdd= ruleOpAdd EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpMultiRule()); 
+               newCompositeNode(grammarAccess.getOpAddRule()); 
             }
-            pushFollow(FOLLOW_ruleOpMulti_in_entryRuleOpMulti7460);
-            iv_ruleOpMulti=ruleOpMulti();
+            pushFollow(FOLLOW_1);
+            iv_ruleOpAdd=ruleOpAdd();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleOpMulti.getText(); 
+               current =iv_ruleOpAdd.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMulti7471); 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 "entryRuleOpMulti"
+    // $ANTLR end "entryRuleOpAdd"
 
 
-    // $ANTLR start "ruleOpMulti"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3182:1: ruleOpMulti returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) ;
-    public final AntlrDatatypeRuleToken ruleOpMulti() throws RecognitionException {
+    // $ANTLR start "ruleOpAdd"
+    // InternalCubeDSL.g:3215:1: ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
+    public final AntlrDatatypeRuleToken ruleOpAdd() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
         Token kw=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3185:28: ( (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3186:1: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            // InternalCubeDSL.g:3221:2: ( (kw= '+' | kw= '-' ) )
+            // InternalCubeDSL.g:3222:2: (kw= '+' | kw= '-' )
             {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3186:1: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
-            int alt57=4;
-            switch ( input.LA(1) ) {
-            case 39:
-                {
+            // InternalCubeDSL.g:3222:2: (kw= '+' | kw= '-' )
+            int alt57=2;
+            int LA57_0 = input.LA(1);
+
+            if ( (LA57_0==72) ) {
                 alt57=1;
-                }
-                break;
-            case 71:
-                {
+            }
+            else if ( (LA57_0==73) ) {
                 alt57=2;
-                }
-                break;
-            case 72:
-                {
-                alt57=3;
-                }
-                break;
-            case 73:
-                {
-                alt57=4;
-                }
-                break;
-            default:
+            }
+            else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
                     new NoViableAltException("", 57, 0, input);
 
                 throw nvae;
             }
-
             switch (alt57) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3187:2: kw= '*'
+                    // InternalCubeDSL.g:3223:3: kw= '+'
                     {
-                    kw=(Token)match(input,39,FOLLOW_39_in_ruleOpMulti7509); 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.getOpMultiAccess().getAsteriskKeyword_0()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpAddAccess().getPlusSignKeyword_0());
+                      		
                     }
 
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3194:2: kw= '**'
+                    // InternalCubeDSL.g:3229:3: kw= '-'
                     {
-                    kw=(Token)match(input,71,FOLLOW_71_in_ruleOpMulti7528); 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.getOpMultiAccess().getAsteriskAsteriskKeyword_1()); 
-                          
-                    }
-
-                    }
-                    break;
-                case 3 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3201:2: kw= '/'
-                    {
-                    kw=(Token)match(input,72,FOLLOW_72_in_ruleOpMulti7547); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getSolidusKeyword_2()); 
-                          
-                    }
-
-                    }
-                    break;
-                case 4 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3208:2: kw= '%'
-                    {
-                    kw=(Token)match(input,73,FOLLOW_73_in_ruleOpMulti7566); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAccess().getPercentSignKeyword_3()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpAddAccess().getHyphenMinusKeyword_1());
+                      		
                     }
 
                     }
@@ -9449,530 +9067,242 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
     }
-    // $ANTLR end "ruleOpMulti"
+    // $ANTLR end "ruleOpAdd"
 
 
-    // $ANTLR start "entryRuleXUnaryOperation"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3221:1: entryRuleXUnaryOperation returns [EObject current=null] : iv_ruleXUnaryOperation= ruleXUnaryOperation EOF ;
-    public final EObject entryRuleXUnaryOperation() throws RecognitionException {
+    // $ANTLR start "entryRuleXMultiplicativeExpression"
+    // InternalCubeDSL.g:3238:1: entryRuleXMultiplicativeExpression returns [EObject current=null] : iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF ;
+    public final EObject entryRuleXMultiplicativeExpression() throws RecognitionException {
         EObject current = null;
 
-        EObject iv_ruleXUnaryOperation = null;
+        EObject iv_ruleXMultiplicativeExpression = null;
 
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3222:2: (iv_ruleXUnaryOperation= ruleXUnaryOperation EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3223:2: iv_ruleXUnaryOperation= ruleXUnaryOperation EOF
+            // InternalCubeDSL.g:3238:66: (iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF )
+            // InternalCubeDSL.g:3239:2: iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXUnaryOperationRule()); 
+               newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXUnaryOperation_in_entryRuleXUnaryOperation7606);
-            iv_ruleXUnaryOperation=ruleXUnaryOperation();
+            pushFollow(FOLLOW_1);
+            iv_ruleXMultiplicativeExpression=ruleXMultiplicativeExpression();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleXUnaryOperation; 
+               current =iv_ruleXMultiplicativeExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXUnaryOperation7616); 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 "entryRuleXUnaryOperation"
+    // $ANTLR end "entryRuleXMultiplicativeExpression"
 
 
-    // $ANTLR start "ruleXUnaryOperation"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3230:1: ruleXUnaryOperation returns [EObject current=null] : ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) ;
-    public final EObject ruleXUnaryOperation() throws RecognitionException {
+    // $ANTLR start "ruleXMultiplicativeExpression"
+    // InternalCubeDSL.g:3245: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;
 
-        EObject lv_operand_2_0 = null;
+        EObject this_XUnaryOperation_0 = null;
 
-        EObject this_XCastedExpression_3 = null;
+        EObject lv_rightOperand_3_0 = null;
 
 
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3233:28: ( ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3234:1: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
-            {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3234:1: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
-            int alt58=2;
-            int LA58_0 = input.LA(1);
 
-            if ( ((LA58_0>=69 && LA58_0<=70)||LA58_0==74) ) {
-                alt58=1;
-            }
-            else if ( ((LA58_0>=RULE_ID && LA58_0<=RULE_DECIMAL)||LA58_0==14||LA58_0==37||LA58_0==41||(LA58_0>=45 && LA58_0<=46)||LA58_0==53||LA58_0==81||LA58_0==83||(LA58_0>=87 && LA58_0<=89)||(LA58_0>=92 && LA58_0<=103)||LA58_0==105) ) {
-                alt58=2;
-            }
-            else {
-                if (state.backtracking>0) {state.failed=true; return current;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 58, 0, input);
-
-                throw nvae;
-            }
-            switch (alt58) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3234:2: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
-                    {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3234:2: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3234:3: () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) )
-                    {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3234:3: ()
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3235:5: 
-                    {
-                    if ( state.backtracking==0 ) {
-
-                              current = forceCreateModelElement(
-                                  grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0(),
-                                  current);
-                          
-                    }
-
-                    }
-
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3240:2: ( ( ruleOpUnary ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3241:1: ( ruleOpUnary )
-                    {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3241:1: ( ruleOpUnary )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3242:3: ruleOpUnary
-                    {
-                    if ( state.backtracking==0 ) {
-
-                      			if (current==null) {
-                      	            current = createModelElement(grammarAccess.getXUnaryOperationRule());
-                      	        }
-                              
-                    }
-                    if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
-                      	    
-                    }
-                    pushFollow(FOLLOW_ruleOpUnary_in_ruleXUnaryOperation7674);
-                    ruleOpUnary();
-
-                    state._fsp--;
-                    if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-                       
-                      	        afterParserOrEnumRuleCall();
-                      	    
-                    }
-
-                    }
-
-
-                    }
-
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3255:2: ( (lv_operand_2_0= ruleXUnaryOperation ) )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3256:1: (lv_operand_2_0= ruleXUnaryOperation )
-                    {
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3256:1: (lv_operand_2_0= ruleXUnaryOperation )
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3257:3: lv_operand_2_0= ruleXUnaryOperation
-                    {
-                    if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0()); 
-                      	    
-                    }
-                    pushFollow(FOLLOW_ruleXUnaryOperation_in_ruleXUnaryOperation7695);
-                    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();
-                      	    
-                    }
-
-                    }
-
-
-                    }
-
-
-                    }
-
-
-                    }
-                    break;
-                case 2 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3275:5: this_XCastedExpression_3= ruleXCastedExpression
-                    {
-                    if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1()); 
-                          
-                    }
-                    pushFollow(FOLLOW_ruleXCastedExpression_in_ruleXUnaryOperation7724);
-                    this_XCastedExpression_3=ruleXCastedExpression();
-
-                    state._fsp--;
-                    if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-                       
-                              current = this_XCastedExpression_3; 
-                              afterParserOrEnumRuleCall();
-                          
-                    }
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleXUnaryOperation"
-
-
-    // $ANTLR start "entryRuleOpUnary"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3291:1: entryRuleOpUnary returns [String current=null] : iv_ruleOpUnary= ruleOpUnary EOF ;
-    public final String entryRuleOpUnary() throws RecognitionException {
-        String current = null;
-
-        AntlrDatatypeRuleToken iv_ruleOpUnary = null;
-
+        	enterRule();
 
         try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3292:2: (iv_ruleOpUnary= ruleOpUnary EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3293:2: iv_ruleOpUnary= ruleOpUnary EOF
+            // InternalCubeDSL.g:3251:2: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
+            // InternalCubeDSL.g:3252:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
+            {
+            // InternalCubeDSL.g:3252:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
+            // InternalCubeDSL.g:3253:3: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpUnaryRule()); 
+
+              			newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0());
+              		
             }
-            pushFollow(FOLLOW_ruleOpUnary_in_entryRuleOpUnary7760);
-            iv_ruleOpUnary=ruleOpUnary();
+            pushFollow(FOLLOW_62);
+            this_XUnaryOperation_0=ruleXUnaryOperation();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleOpUnary.getText(); 
+
+              			current = this_XUnaryOperation_0;
+              			afterParserOrEnumRuleCall();
+              		
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpUnary7771); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleOpUnary"
-
-
-    // $ANTLR start "ruleOpUnary"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3300:1: ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '!' | kw= '-' | kw= '+' ) ;
-    public final AntlrDatatypeRuleToken ruleOpUnary() throws RecognitionException {
-        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
-
-        Token kw=null;
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3303:28: ( (kw= '!' | kw= '-' | kw= '+' ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3304:1: (kw= '!' | kw= '-' | kw= '+' )
-            {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3304:1: (kw= '!' | kw= '-' | kw= '+' )
-            int alt59=3;
-            switch ( input.LA(1) ) {
-            case 74:
-                {
-                alt59=1;
-                }
-                break;
-            case 70:
-                {
-                alt59=2;
-                }
-                break;
-            case 69:
-                {
-                alt59=3;
-                }
-                break;
-            default:
-                if (state.backtracking>0) {state.failed=true; return current;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 59, 0, input);
-
-                throw nvae;
-            }
-
-            switch (alt59) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3305:2: kw= '!'
-                    {
-                    kw=(Token)match(input,74,FOLLOW_74_in_ruleOpUnary7809); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0()); 
-                          
-                    }
-
-                    }
-                    break;
-                case 2 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3312:2: kw= '-'
-                    {
-                    kw=(Token)match(input,70,FOLLOW_70_in_ruleOpUnary7828); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1()); 
-                          
-                    }
-
-                    }
-                    break;
-                case 3 :
-                    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3319:2: kw= '+'
-                    {
-                    kw=(Token)match(input,69,FOLLOW_69_in_ruleOpUnary7847); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2()); 
-                          
-                    }
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleOpUnary"
-
-
-    // $ANTLR start "entryRuleXCastedExpression"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3332:1: entryRuleXCastedExpression returns [EObject current=null] : iv_ruleXCastedExpression= ruleXCastedExpression EOF ;
-    public final EObject entryRuleXCastedExpression() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleXCastedExpression = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3333:2: (iv_ruleXCastedExpression= ruleXCastedExpression EOF )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3334:2: iv_ruleXCastedExpression= ruleXCastedExpression EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXCastedExpressionRule()); 
-            }
-            pushFollow(FOLLOW_ruleXCastedExpression_in_entryRuleXCastedExpression7887);
-            iv_ruleXCastedExpression=ruleXCastedExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleXCastedExpression; 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXCastedExpression7897); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleXCastedExpression"
-
-
-    // $ANTLR start "ruleXCastedExpression"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3341: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;
-
-        Token otherlv_2=null;
-        EObject this_XPostfixOperation_0 = null;
-
-        EObject lv_type_3_0 = null;
-
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3344:28: ( (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3345:1: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
-            {
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3345:1: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3346:5: this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
-            {
-            if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0()); 
-                  
-            }
-            pushFollow(FOLLOW_ruleXPostfixOperation_in_ruleXCastedExpression7944);
-            this_XPostfixOperation_0=ruleXPostfixOperation();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               
-                      current = this_XPostfixOperation_0; 
-                      afterParserOrEnumRuleCall();
-                  
-            }
-            // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3354:1: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
-            loop60:
+            // InternalCubeDSL.g:3261:3: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
+            loop58:
             do {
-                int alt60=2;
-                int LA60_0 = input.LA(1);
+                int alt58=2;
+                switch ( input.LA(1) ) {
+                case 40:
+                    {
+                    int LA58_2 = input.LA(2);
 
-                if ( (LA60_0==75) ) {
-                    int LA60_2 = input.LA(2);
-
-                    if ( (synpred19_InternalCubeDSL()) ) {
-                        alt60=1;
+                    if ( (synpred17_InternalCubeDSL()) ) {
+                        alt58=1;
                     }
 
 
+                    }
+                    break;
+                case 74:
+                    {
+                    int LA58_3 = input.LA(2);
+
+                    if ( (synpred17_InternalCubeDSL()) ) {
+                        alt58=1;
+                    }
+
+
+                    }
+                    break;
+                case 75:
+                    {
+                    int LA58_4 = input.LA(2);
+
+                    if ( (synpred17_InternalCubeDSL()) ) {
+                        alt58=1;
+                    }
+
+
+                    }
+                    break;
+                case 76:
+                    {
+                    int LA58_5 = input.LA(2);
+
+                    if ( (synpred17_InternalCubeDSL()) ) {
+                        alt58=1;
+                    }
+
+
+                    }
+                    break;
+
                 }
 
-
-                switch (alt60) {
+                switch (alt58) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3354:2: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalCubeDSL.g:3262:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3354:2: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3354:3: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
+            	    // InternalCubeDSL.g:3262:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) )
+            	    // InternalCubeDSL.g:3263:5: ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3356:5: ( () otherlv_2= 'as' )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3356:6: () otherlv_2= 'as'
+            	    // InternalCubeDSL.g:3273:5: ( () ( ( ruleOpMulti ) ) )
+            	    // InternalCubeDSL.g:3274:6: () ( ( ruleOpMulti ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3356:6: ()
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3357:5: 
+            	    // InternalCubeDSL.g:3274:6: ()
+            	    // InternalCubeDSL.g:3275:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0(),
-            	                  current);
-            	          
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								current);
+            	      						
             	    }
 
             	    }
 
-            	    otherlv_2=(Token)match(input,75,FOLLOW_75_in_ruleXCastedExpression7979); if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	          	newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
-            	          
-            	    }
-
-            	    }
-
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3366:3: ( (lv_type_3_0= ruleJvmTypeReference ) )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3367:1: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalCubeDSL.g:3281:6: ( ( ruleOpMulti ) )
+            	    // InternalCubeDSL.g:3282:7: ( ruleOpMulti )
             	    {
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3367:1: (lv_type_3_0= ruleJvmTypeReference )
-            	    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3368:3: lv_type_3_0= ruleJvmTypeReference
+            	    // InternalCubeDSL.g:3282:7: ( ruleOpMulti )
+            	    // InternalCubeDSL.g:3283:8: ruleOpMulti
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0()); 
-            	      	    
+
+            	      								if (current==null) {
+            	      									current = createModelElement(grammarAccess.getXMultiplicativeExpressionRule());
+            	      								}
+            	      							
             	    }
-            	    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXCastedExpression8002);
-            	    lv_type_3_0=ruleJvmTypeReference();
+            	    if ( state.backtracking==0 ) {
+
+            	      								newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+            	      							
+            	    }
+            	    pushFollow(FOLLOW_43);
+            	    ruleOpMulti();
 
             	    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();
-            	      	    
+            	      								afterParserOrEnumRuleCall();
+            	      							
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalCubeDSL.g:3299:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
+            	    // InternalCubeDSL.g:3300:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
+            	    {
+            	    // InternalCubeDSL.g:3300:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
+            	    // InternalCubeDSL.g:3301:6: lv_rightOperand_3_0= ruleXUnaryOperation
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_62);
+            	    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,
+            	      							"org.eclipse.xtext.xbase.Xbase.XUnaryOperation");
+            	      						afterParserOrEnumRuleCall();
+            	      					
             	    }
 
             	    }
@@ -9985,7 +9315,7 @@
             	    break;
 
             	default :
-            	    break loop60;
+            	    break loop58;
                 }
             } while (true);
 
@@ -9996,14 +9326,734 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXMultiplicativeExpression"
+
+
+    // $ANTLR start "entryRuleOpMulti"
+    // InternalCubeDSL.g:3323:1: entryRuleOpMulti returns [String current=null] : iv_ruleOpMulti= ruleOpMulti EOF ;
+    public final String entryRuleOpMulti() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpMulti = null;
+
+
+        try {
+            // InternalCubeDSL.g:3323:47: (iv_ruleOpMulti= ruleOpMulti EOF )
+            // InternalCubeDSL.g:3324:2: iv_ruleOpMulti= ruleOpMulti EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpMultiRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleOpMulti=ruleOpMulti();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpMulti.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpMulti"
+
+
+    // $ANTLR start "ruleOpMulti"
+    // InternalCubeDSL.g:3330: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();
+
+        try {
+            // InternalCubeDSL.g:3336:2: ( (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) )
+            // InternalCubeDSL.g:3337:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            {
+            // InternalCubeDSL.g:3337:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            int alt59=4;
+            switch ( input.LA(1) ) {
+            case 40:
+                {
+                alt59=1;
+                }
+                break;
+            case 74:
+                {
+                alt59=2;
+                }
+                break;
+            case 75:
+                {
+                alt59=3;
+                }
+                break;
+            case 76:
+                {
+                alt59=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 59, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt59) {
+                case 1 :
+                    // InternalCubeDSL.g:3338:3: kw= '*'
+                    {
+                    kw=(Token)match(input,40,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskKeyword_0());
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:3344:3: kw= '**'
+                    {
+                    kw=(Token)match(input,74,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1());
+                      		
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // InternalCubeDSL.g:3350:3: kw= '/'
+                    {
+                    kw=(Token)match(input,75,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAccess().getSolidusKeyword_2());
+                      		
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // InternalCubeDSL.g:3356:3: kw= '%'
+                    {
+                    kw=(Token)match(input,76,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAccess().getPercentSignKeyword_3());
+                      		
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpMulti"
+
+
+    // $ANTLR start "entryRuleXUnaryOperation"
+    // InternalCubeDSL.g:3365:1: entryRuleXUnaryOperation returns [EObject current=null] : iv_ruleXUnaryOperation= ruleXUnaryOperation EOF ;
+    public final EObject entryRuleXUnaryOperation() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXUnaryOperation = null;
+
+
+        try {
+            // InternalCubeDSL.g:3365:56: (iv_ruleXUnaryOperation= ruleXUnaryOperation EOF )
+            // InternalCubeDSL.g:3366:2: iv_ruleXUnaryOperation= ruleXUnaryOperation EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXUnaryOperationRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXUnaryOperation=ruleXUnaryOperation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXUnaryOperation; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXUnaryOperation"
+
+
+    // $ANTLR start "ruleXUnaryOperation"
+    // InternalCubeDSL.g:3372: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;
+
+        EObject lv_operand_2_0 = null;
+
+        EObject this_XCastedExpression_3 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalCubeDSL.g:3378:2: ( ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) )
+            // InternalCubeDSL.g:3379:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
+            {
+            // InternalCubeDSL.g:3379:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
+            int alt60=2;
+            int LA60_0 = input.LA(1);
+
+            if ( ((LA60_0>=72 && LA60_0<=73)||LA60_0==77) ) {
+                alt60=1;
+            }
+            else if ( ((LA60_0>=RULE_ID && LA60_0<=RULE_DECIMAL)||LA60_0==14||(LA60_0>=37 && LA60_0<=39)||LA60_0==44||(LA60_0>=48 && LA60_0<=49)||LA60_0==56||LA60_0==84||LA60_0==86||(LA60_0>=90 && LA60_0<=92)||(LA60_0>=95 && LA60_0<=104)||LA60_0==106) ) {
+                alt60=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 60, 0, input);
+
+                throw nvae;
+            }
+            switch (alt60) {
+                case 1 :
+                    // InternalCubeDSL.g:3380:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
+                    {
+                    // InternalCubeDSL.g:3380:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
+                    // InternalCubeDSL.g:3381:4: () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) )
+                    {
+                    // InternalCubeDSL.g:3381:4: ()
+                    // InternalCubeDSL.g:3382:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      					current = forceCreateModelElement(
+                      						grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0(),
+                      						current);
+                      				
+                    }
+
+                    }
+
+                    // InternalCubeDSL.g:3388:4: ( ( ruleOpUnary ) )
+                    // InternalCubeDSL.g:3389:5: ( ruleOpUnary )
+                    {
+                    // InternalCubeDSL.g:3389:5: ( ruleOpUnary )
+                    // InternalCubeDSL.g:3390:6: ruleOpUnary
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getXUnaryOperationRule());
+                      						}
+                      					
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_43);
+                    ruleOpUnary();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalCubeDSL.g:3404:4: ( (lv_operand_2_0= ruleXUnaryOperation ) )
+                    // InternalCubeDSL.g:3405:5: (lv_operand_2_0= ruleXUnaryOperation )
+                    {
+                    // InternalCubeDSL.g:3405:5: (lv_operand_2_0= ruleXUnaryOperation )
+                    // InternalCubeDSL.g:3406:6: lv_operand_2_0= ruleXUnaryOperation
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXUnaryOperationAccess().getOperandXUnaryOperationParserRuleCall_0_2_0());
+                      					
+                    }
+                    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,
+                      							"org.eclipse.xtext.xbase.Xbase.XUnaryOperation");
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:3425:3: this_XCastedExpression_3= ruleXCastedExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      			newCompositeNode(grammarAccess.getXUnaryOperationAccess().getXCastedExpressionParserRuleCall_1());
+                      		
+                    }
+                    pushFollow(FOLLOW_2);
+                    this_XCastedExpression_3=ruleXCastedExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current = this_XCastedExpression_3;
+                      			afterParserOrEnumRuleCall();
+                      		
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXUnaryOperation"
+
+
+    // $ANTLR start "entryRuleOpUnary"
+    // InternalCubeDSL.g:3437:1: entryRuleOpUnary returns [String current=null] : iv_ruleOpUnary= ruleOpUnary EOF ;
+    public final String entryRuleOpUnary() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpUnary = null;
+
+
+        try {
+            // InternalCubeDSL.g:3437:47: (iv_ruleOpUnary= ruleOpUnary EOF )
+            // InternalCubeDSL.g:3438:2: iv_ruleOpUnary= ruleOpUnary EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpUnaryRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleOpUnary=ruleOpUnary();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpUnary.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpUnary"
+
+
+    // $ANTLR start "ruleOpUnary"
+    // InternalCubeDSL.g:3444:1: ruleOpUnary returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '!' | kw= '-' | kw= '+' ) ;
+    public final AntlrDatatypeRuleToken ruleOpUnary() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalCubeDSL.g:3450:2: ( (kw= '!' | kw= '-' | kw= '+' ) )
+            // InternalCubeDSL.g:3451:2: (kw= '!' | kw= '-' | kw= '+' )
+            {
+            // InternalCubeDSL.g:3451:2: (kw= '!' | kw= '-' | kw= '+' )
+            int alt61=3;
+            switch ( input.LA(1) ) {
+            case 77:
+                {
+                alt61=1;
+                }
+                break;
+            case 73:
+                {
+                alt61=2;
+                }
+                break;
+            case 72:
+                {
+                alt61=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 61, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt61) {
+                case 1 :
+                    // InternalCubeDSL.g:3452:3: kw= '!'
+                    {
+                    kw=(Token)match(input,77,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0());
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:3458:3: kw= '-'
+                    {
+                    kw=(Token)match(input,73,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1());
+                      		
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // InternalCubeDSL.g:3464:3: kw= '+'
+                    {
+                    kw=(Token)match(input,72,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpUnaryAccess().getPlusSignKeyword_2());
+                      		
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpUnary"
+
+
+    // $ANTLR start "entryRuleXCastedExpression"
+    // InternalCubeDSL.g:3473:1: entryRuleXCastedExpression returns [EObject current=null] : iv_ruleXCastedExpression= ruleXCastedExpression EOF ;
+    public final EObject entryRuleXCastedExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXCastedExpression = null;
+
+
+        try {
+            // InternalCubeDSL.g:3473:58: (iv_ruleXCastedExpression= ruleXCastedExpression EOF )
+            // InternalCubeDSL.g:3474:2: iv_ruleXCastedExpression= ruleXCastedExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXCastedExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXCastedExpression=ruleXCastedExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXCastedExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXCastedExpression"
+
+
+    // $ANTLR start "ruleXCastedExpression"
+    // InternalCubeDSL.g:3480: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;
+
+        Token otherlv_2=null;
+        EObject this_XPostfixOperation_0 = null;
+
+        EObject lv_type_3_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalCubeDSL.g:3486:2: ( (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
+            // InternalCubeDSL.g:3487:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
+            {
+            // InternalCubeDSL.g:3487:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
+            // InternalCubeDSL.g:3488:3: this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getXCastedExpressionAccess().getXPostfixOperationParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_63);
+            this_XPostfixOperation_0=ruleXPostfixOperation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XPostfixOperation_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalCubeDSL.g:3496:3: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
+            loop62:
+            do {
+                int alt62=2;
+                int LA62_0 = input.LA(1);
+
+                if ( (LA62_0==78) ) {
+                    int LA62_2 = input.LA(2);
+
+                    if ( (synpred18_InternalCubeDSL()) ) {
+                        alt62=1;
+                    }
+
+
+                }
+
+
+                switch (alt62) {
+            	case 1 :
+            	    // InternalCubeDSL.g:3497:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    {
+            	    // InternalCubeDSL.g:3497:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
+            	    // InternalCubeDSL.g:3498:5: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
+            	    {
+            	    // InternalCubeDSL.g:3504:5: ( () otherlv_2= 'as' )
+            	    // InternalCubeDSL.g:3505:6: () otherlv_2= 'as'
+            	    {
+            	    // InternalCubeDSL.g:3505:6: ()
+            	    // InternalCubeDSL.g:3506:7: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0(),
+            	      								current);
+            	      						
+            	    }
+
+            	    }
+
+            	    otherlv_2=(Token)match(input,78,FOLLOW_56); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      						newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalCubeDSL.g:3518:4: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalCubeDSL.g:3519:5: (lv_type_3_0= ruleJvmTypeReference )
+            	    {
+            	    // InternalCubeDSL.g:3519:5: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalCubeDSL.g:3520:6: lv_type_3_0= ruleJvmTypeReference
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_63);
+            	    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,
+            	      							"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+            	      						afterParserOrEnumRuleCall();
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop62;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
         finally {
         }
         return current;
@@ -10012,4 +10062,18628 @@
 
 
     // $ANTLR start "entryRuleXPostfixOperation"
-    // ../org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/parser/antlr/internal/InternalCubeDSL.g:3392:1: entryRuleXPostfixOperation returns [EObject current=null] : iv_ruleXPostfixOperation= ruleXPostfixOperation EOF ;
+    // InternalCubeDSL.g:3542:1: entryRuleXPostfixOperation returns [EObject current=null] : iv_ruleXPostfixOperation= ruleXPostfixOperation EOF ;
+    public final EObject entryRuleXPostfixOperation() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXPostfixOperation = null;
+
+
+        try {
+            // InternalCubeDSL.g:3542:58: (iv_ruleXPostfixOperation= ruleXPostfixOperation EOF )
+            // InternalCubeDSL.g:3543:2: iv_ruleXPostfixOperation= ruleXPostfixOperation EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXPostfixOperationRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXPostfixOperation=ruleXPostfixOperation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXPostfixOperation; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXPostfixOperation"
+
+
+    // $ANTLR start "ruleXPostfixOperation"
+    // InternalCubeDSL.g:3549: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();
+
+        try {
+            // InternalCubeDSL.g:3555:2: ( (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) )
+            // InternalCubeDSL.g:3556:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
+            {
+            // InternalCubeDSL.g:3556:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
+            // InternalCubeDSL.g:3557:3: this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_64);
+            this_XMemberFeatureCall_0=ruleXMemberFeatureCall();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XMemberFeatureCall_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalCubeDSL.g:3565:3: ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
+            int alt63=2;
+            int LA63_0 = input.LA(1);
+
+            if ( (LA63_0==79) ) {
+                int LA63_1 = input.LA(2);
+
+                if ( (synpred19_InternalCubeDSL()) ) {
+                    alt63=1;
+                }
+            }
+            else if ( (LA63_0==80) ) {
+                int LA63_2 = input.LA(2);
+
+                if ( (synpred19_InternalCubeDSL()) ) {
+                    alt63=1;
+                }
+            }
+            switch (alt63) {
+                case 1 :
+                    // InternalCubeDSL.g:3566:4: ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) )
+                    {
+                    // InternalCubeDSL.g:3576:4: ( () ( ( ruleOpPostfix ) ) )
+                    // InternalCubeDSL.g:3577:5: () ( ( ruleOpPostfix ) )
+                    {
+                    // InternalCubeDSL.g:3577:5: ()
+                    // InternalCubeDSL.g:3578:6: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						current = forceCreateModelElementAndSet(
+                      							grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0(),
+                      							current);
+                      					
+                    }
+
+                    }
+
+                    // InternalCubeDSL.g:3584:5: ( ( ruleOpPostfix ) )
+                    // InternalCubeDSL.g:3585:6: ( ruleOpPostfix )
+                    {
+                    // InternalCubeDSL.g:3585:6: ( ruleOpPostfix )
+                    // InternalCubeDSL.g:3586:7: ruleOpPostfix
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							if (current==null) {
+                      								current = createModelElement(grammarAccess.getXPostfixOperationRule());
+                      							}
+                      						
+                    }
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleOpPostfix();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							afterParserOrEnumRuleCall();
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXPostfixOperation"
+
+
+    // $ANTLR start "entryRuleOpPostfix"
+    // InternalCubeDSL.g:3606:1: entryRuleOpPostfix returns [String current=null] : iv_ruleOpPostfix= ruleOpPostfix EOF ;
+    public final String entryRuleOpPostfix() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpPostfix = null;
+
+
+        try {
+            // InternalCubeDSL.g:3606:49: (iv_ruleOpPostfix= ruleOpPostfix EOF )
+            // InternalCubeDSL.g:3607:2: iv_ruleOpPostfix= ruleOpPostfix EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpPostfixRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleOpPostfix=ruleOpPostfix();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpPostfix.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpPostfix"
+
+
+    // $ANTLR start "ruleOpPostfix"
+    // InternalCubeDSL.g:3613:1: ruleOpPostfix returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '++' | kw= '--' ) ;
+    public final AntlrDatatypeRuleToken ruleOpPostfix() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalCubeDSL.g:3619:2: ( (kw= '++' | kw= '--' ) )
+            // InternalCubeDSL.g:3620:2: (kw= '++' | kw= '--' )
+            {
+            // InternalCubeDSL.g:3620:2: (kw= '++' | kw= '--' )
+            int alt64=2;
+            int LA64_0 = input.LA(1);
+
+            if ( (LA64_0==79) ) {
+                alt64=1;
+            }
+            else if ( (LA64_0==80) ) {
+                alt64=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 64, 0, input);
+
+                throw nvae;
+            }
+            switch (alt64) {
+                case 1 :
+                    // InternalCubeDSL.g:3621:3: kw= '++'
+                    {
+                    kw=(Token)match(input,79,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0());
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:3627:3: kw= '--'
+                    {
+                    kw=(Token)match(input,80,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpPostfixAccess().getHyphenMinusHyphenMinusKeyword_1());
+                      		
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpPostfix"
+
+
+    // $ANTLR start "entryRuleXMemberFeatureCall"
+    // InternalCubeDSL.g:3636:1: entryRuleXMemberFeatureCall returns [EObject current=null] : iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF ;
+    public final EObject entryRuleXMemberFeatureCall() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXMemberFeatureCall = null;
+
+
+        try {
+            // InternalCubeDSL.g:3636:59: (iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF )
+            // InternalCubeDSL.g:3637:2: iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXMemberFeatureCallRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXMemberFeatureCall=ruleXMemberFeatureCall();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXMemberFeatureCall; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXMemberFeatureCall"
+
+
+    // $ANTLR start "ruleXMemberFeatureCall"
+    // InternalCubeDSL.g:3643: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;
+
+        Token otherlv_2=null;
+        Token lv_explicitStatic_3_0=null;
+        Token otherlv_8=null;
+        Token lv_nullSafe_9_0=null;
+        Token lv_explicitStatic_10_0=null;
+        Token otherlv_11=null;
+        Token otherlv_13=null;
+        Token otherlv_15=null;
+        Token lv_explicitOperationCall_17_0=null;
+        Token otherlv_20=null;
+        Token otherlv_22=null;
+        EObject this_XPrimaryExpression_0 = null;
+
+        EObject lv_value_6_0 = null;
+
+        EObject lv_typeArguments_12_0 = null;
+
+        EObject lv_typeArguments_14_0 = null;
+
+        EObject lv_memberCallArguments_18_0 = null;
+
+        EObject lv_memberCallArguments_19_0 = null;
+
+        EObject lv_memberCallArguments_21_0 = null;
+
+        EObject lv_memberCallArguments_23_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalCubeDSL.g:3649: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 ) )? ) )* ) )
+            // InternalCubeDSL.g:3650: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 ) )? ) )* )
+            {
+            // InternalCubeDSL.g:3650: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 ) )? ) )* )
+            // InternalCubeDSL.g:3651: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());
+              		
+            }
+            pushFollow(FOLLOW_65);
+            this_XPrimaryExpression_0=ruleXPrimaryExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XPrimaryExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalCubeDSL.g:3659: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 ) )? ) )*
+            loop73:
+            do {
+                int alt73=3;
+                switch ( input.LA(1) ) {
+                case 36:
+                    {
+                    int LA73_2 = input.LA(2);
+
+                    if ( (synpred20_InternalCubeDSL()) ) {
+                        alt73=1;
+                    }
+                    else if ( (synpred21_InternalCubeDSL()) ) {
+                        alt73=2;
+                    }
+
+
+                    }
+                    break;
+                case 81:
+                    {
+                    int LA73_3 = input.LA(2);
+
+                    if ( (synpred20_InternalCubeDSL()) ) {
+                        alt73=1;
+                    }
+                    else if ( (synpred21_InternalCubeDSL()) ) {
+                        alt73=2;
+                    }
+
+
+                    }
+                    break;
+                case 82:
+                    {
+                    int LA73_4 = input.LA(2);
+
+                    if ( (synpred21_InternalCubeDSL()) ) {
+                        alt73=2;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt73) {
+            	case 1 :
+            	    // InternalCubeDSL.g:3660:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
+            	    {
+            	    // InternalCubeDSL.g:3660:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
+            	    // InternalCubeDSL.g:3661:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) )
+            	    {
+            	    // InternalCubeDSL.g:3661:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
+            	    // InternalCubeDSL.g:3662:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+            	    {
+            	    // InternalCubeDSL.g:3682:6: ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+            	    // InternalCubeDSL.g:3683:7: () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
+            	    {
+            	    // InternalCubeDSL.g:3683:7: ()
+            	    // InternalCubeDSL.g:3684:8: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								current = forceCreateModelElementAndSet(
+            	      									grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0(),
+            	      									current);
+            	      							
+            	    }
+
+            	    }
+
+            	    // InternalCubeDSL.g:3690:7: (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) )
+            	    int alt65=2;
+            	    int LA65_0 = input.LA(1);
+
+            	    if ( (LA65_0==36) ) {
+            	        alt65=1;
+            	    }
+            	    else if ( (LA65_0==81) ) {
+            	        alt65=2;
+            	    }
+            	    else {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        NoViableAltException nvae =
+            	            new NoViableAltException("", 65, 0, input);
+
+            	        throw nvae;
+            	    }
+            	    switch (alt65) {
+            	        case 1 :
+            	            // InternalCubeDSL.g:3691:8: otherlv_2= '.'
+            	            {
+            	            otherlv_2=(Token)match(input,36,FOLLOW_66); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              								newLeafNode(otherlv_2, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0());
+            	              							
+            	            }
+
+            	            }
+            	            break;
+            	        case 2 :
+            	            // InternalCubeDSL.g:3696:8: ( (lv_explicitStatic_3_0= '::' ) )
+            	            {
+            	            // InternalCubeDSL.g:3696:8: ( (lv_explicitStatic_3_0= '::' ) )
+            	            // InternalCubeDSL.g:3697:9: (lv_explicitStatic_3_0= '::' )
+            	            {
+            	            // InternalCubeDSL.g:3697:9: (lv_explicitStatic_3_0= '::' )
+            	            // InternalCubeDSL.g:3698:10: lv_explicitStatic_3_0= '::'
+            	            {
+            	            lv_explicitStatic_3_0=(Token)match(input,81,FOLLOW_66); if (state.failed) return current;
+            	            if ( state.backtracking==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, "::");
+            	              									
+            	            }
+
+            	            }
+
+
+            	            }
+
+
+            	            }
+            	            break;
+
+            	    }
+
+            	    // InternalCubeDSL.g:3711:7: ( ( ruleFeatureCallID ) )
+            	    // InternalCubeDSL.g:3712:8: ( ruleFeatureCallID )
+            	    {
+            	    // InternalCubeDSL.g:3712:8: ( ruleFeatureCallID )
+            	    // InternalCubeDSL.g:3713:9: ruleFeatureCallID
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      									if (current==null) {
+            	      										current = createModelElement(grammarAccess.getXMemberFeatureCallRule());
+            	      									}
+            	      								
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0());
+            	      								
+            	    }
+            	    pushFollow(FOLLOW_42);
+            	    ruleFeatureCallID();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      									afterParserOrEnumRuleCall();
+            	      								
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    if ( state.backtracking==0 ) {
+
+            	      							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getOpSingleAssignParserRuleCall_1_0_0_0_3());
+            	      						
+            	    }
+            	    pushFollow(FOLLOW_43);
+            	    ruleOpSingleAssign();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      							afterParserOrEnumRuleCall();
+            	      						
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalCubeDSL.g:3736:5: ( (lv_value_6_0= ruleXAssignment ) )
+            	    // InternalCubeDSL.g:3737:6: (lv_value_6_0= ruleXAssignment )
+            	    {
+            	    // InternalCubeDSL.g:3737:6: (lv_value_6_0= ruleXAssignment )
+            	    // InternalCubeDSL.g:3738:7: lv_value_6_0= ruleXAssignment
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0());
+            	      						
+            	    }
+            	    pushFollow(FOLLOW_65);
+            	    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,
+            	      								"org.eclipse.xtext.xbase.Xbase.XAssignment");
+            	      							afterParserOrEnumRuleCall();
+            	      						
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // InternalCubeDSL.g:3757: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 ) )? )
+            	    {
+            	    // InternalCubeDSL.g:3757: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 ) )? )
+            	    // InternalCubeDSL.g:3758: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 ) )?
+            	    {
+            	    // InternalCubeDSL.g:3758:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) )
+            	    // InternalCubeDSL.g:3759:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
+            	    {
+            	    // InternalCubeDSL.g:3779:6: ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
+            	    // InternalCubeDSL.g:3780:7: () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
+            	    {
+            	    // InternalCubeDSL.g:3780:7: ()
+            	    // InternalCubeDSL.g:3781:8: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								current = forceCreateModelElementAndSet(
+            	      									grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0(),
+            	      									current);
+            	      							
+            	    }
+
+            	    }
+
+            	    // InternalCubeDSL.g:3787:7: (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
+            	    int alt66=3;
+            	    switch ( input.LA(1) ) {
+            	    case 36:
+            	        {
+            	        alt66=1;
+            	        }
+            	        break;
+            	    case 82:
+            	        {
+            	        alt66=2;
+            	        }
+            	        break;
+            	    case 81:
+            	        {
+            	        alt66=3;
+            	        }
+            	        break;
+            	    default:
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        NoViableAltException nvae =
+            	            new NoViableAltException("", 66, 0, input);
+
+            	        throw nvae;
+            	    }
+
+            	    switch (alt66) {
+            	        case 1 :
+            	            // InternalCubeDSL.g:3788:8: otherlv_8= '.'
+            	            {
+            	            otherlv_8=(Token)match(input,36,FOLLOW_67); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              								newLeafNode(otherlv_8, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0());
+            	              							
+            	            }
+
+            	            }
+            	            break;
+            	        case 2 :
+            	            // InternalCubeDSL.g:3793:8: ( (lv_nullSafe_9_0= '?.' ) )
+            	            {
+            	            // InternalCubeDSL.g:3793:8: ( (lv_nullSafe_9_0= '?.' ) )
+            	            // InternalCubeDSL.g:3794:9: (lv_nullSafe_9_0= '?.' )
+            	            {
+            	            // InternalCubeDSL.g:3794:9: (lv_nullSafe_9_0= '?.' )
+            	            // InternalCubeDSL.g:3795:10: lv_nullSafe_9_0= '?.'
+            	            {
+            	            lv_nullSafe_9_0=(Token)match(input,82,FOLLOW_67); if (state.failed) return current;
+            	            if ( state.backtracking==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, "?.");
+            	              									
+            	            }
+
+            	            }
+
+
+            	            }
+
+
+            	            }
+            	            break;
+            	        case 3 :
+            	            // InternalCubeDSL.g:3808:8: ( (lv_explicitStatic_10_0= '::' ) )
+            	            {
+            	            // InternalCubeDSL.g:3808:8: ( (lv_explicitStatic_10_0= '::' ) )
+            	            // InternalCubeDSL.g:3809:9: (lv_explicitStatic_10_0= '::' )
+            	            {
+            	            // InternalCubeDSL.g:3809:9: (lv_explicitStatic_10_0= '::' )
+            	            // InternalCubeDSL.g:3810:10: lv_explicitStatic_10_0= '::'
+            	            {
+            	            lv_explicitStatic_10_0=(Token)match(input,81,FOLLOW_67); if (state.failed) return current;
+            	            if ( state.backtracking==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, "::");
+            	              									
+            	            }
+
+            	            }
+
+
+            	            }
+
+
+            	            }
+            	            break;
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalCubeDSL.g:3825:5: (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )?
+            	    int alt68=2;
+            	    int LA68_0 = input.LA(1);
+
+            	    if ( (LA68_0==56) ) {
+            	        alt68=1;
+            	    }
+            	    switch (alt68) {
+            	        case 1 :
+            	            // InternalCubeDSL.g:3826:6: otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>'
+            	            {
+            	            otherlv_11=(Token)match(input,56,FOLLOW_68); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              						newLeafNode(otherlv_11, grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0());
+            	              					
+            	            }
+            	            // InternalCubeDSL.g:3830:6: ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) )
+            	            // InternalCubeDSL.g:3831:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
+            	            {
+            	            // InternalCubeDSL.g:3831:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
+            	            // InternalCubeDSL.g:3832:8: lv_typeArguments_12_0= ruleJvmArgumentTypeReference
+            	            {
+            	            if ( state.backtracking==0 ) {
+
+            	              								newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0());
+            	              							
+            	            }
+            	            pushFollow(FOLLOW_69);
+            	            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,
+            	              									"org.eclipse.xtext.xbase.Xtype.JvmArgumentTypeReference");
+            	              								afterParserOrEnumRuleCall();
+            	              							
+            	            }
+
+            	            }
+
+
+            	            }
+
+            	            // InternalCubeDSL.g:3849:6: (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )*
+            	            loop67:
+            	            do {
+            	                int alt67=2;
+            	                int LA67_0 = input.LA(1);
+
+            	                if ( (LA67_0==45) ) {
+            	                    alt67=1;
+            	                }
+
+
+            	                switch (alt67) {
+            	            	case 1 :
+            	            	    // InternalCubeDSL.g:3850:7: otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
+            	            	    {
+            	            	    otherlv_13=(Token)match(input,45,FOLLOW_68); if (state.failed) return current;
+            	            	    if ( state.backtracking==0 ) {
+
+            	            	      							newLeafNode(otherlv_13, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0());
+            	            	      						
+            	            	    }
+            	            	    // InternalCubeDSL.g:3854:7: ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
+            	            	    // InternalCubeDSL.g:3855:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
+            	            	    {
+            	            	    // InternalCubeDSL.g:3855:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
+            	            	    // InternalCubeDSL.g:3856:9: lv_typeArguments_14_0= ruleJvmArgumentTypeReference
+            	            	    {
+            	            	    if ( state.backtracking==0 ) {
+
+            	            	      									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0());
+            	            	      								
+            	            	    }
+            	            	    pushFollow(FOLLOW_69);
+            	            	    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 loop67;
+            	                }
+            	            } while (true);
+
+            	            otherlv_15=(Token)match(input,57,FOLLOW_67); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              						newLeafNode(otherlv_15, grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3());
+            	              					
+            	            }
+
+            	            }
+            	            break;
+
+            	    }
+
+            	    // InternalCubeDSL.g:3879:5: ( ( ruleIdOrSuper ) )
+            	    // InternalCubeDSL.g:3880:6: ( ruleIdOrSuper )
+            	    {
+            	    // InternalCubeDSL.g:3880:6: ( ruleIdOrSuper )
+            	    // InternalCubeDSL.g:3881: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_70);
+            	    ruleIdOrSuper();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      							afterParserOrEnumRuleCall();
+            	      						
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalCubeDSL.g:3895: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 alt71=2;
+            	    alt71 = dfa71.predict(input);
+            	    switch (alt71) {
+            	        case 1 :
+            	            // InternalCubeDSL.g:3896: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= ')'
+            	            {
+            	            // InternalCubeDSL.g:3896:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) )
+            	            // InternalCubeDSL.g:3897:7: ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' )
+            	            {
+            	            // InternalCubeDSL.g:3901:7: (lv_explicitOperationCall_17_0= '(' )
+            	            // InternalCubeDSL.g:3902:8: lv_explicitOperationCall_17_0= '('
+            	            {
+            	            lv_explicitOperationCall_17_0=(Token)match(input,44,FOLLOW_71); 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, "(");
+            	              							
+            	            }
+
+            	            }
+
+
+            	            }
+
+            	            // InternalCubeDSL.g:3914:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?
+            	            int alt70=3;
+            	            alt70 = dfa70.predict(input);
+            	            switch (alt70) {
+            	                case 1 :
+            	                    // InternalCubeDSL.g:3915:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
+            	                    {
+            	                    // InternalCubeDSL.g:3915:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
+            	                    // InternalCubeDSL.g:3916:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure )
+            	                    {
+            	                    // InternalCubeDSL.g:3941:8: (lv_memberCallArguments_18_0= ruleXShortClosure )
+            	                    // InternalCubeDSL.g:3942:9: lv_memberCallArguments_18_0= ruleXShortClosure
+            	                    {
+            	                    if ( state.backtracking==0 ) {
+
+            	                      									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0());
+            	                      								
+            	                    }
+            	                    pushFollow(FOLLOW_41);
+            	                    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 :
+            	                    // InternalCubeDSL.g:3960:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
+            	                    {
+            	                    // InternalCubeDSL.g:3960:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
+            	                    // InternalCubeDSL.g:3961:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
+            	                    {
+            	                    // InternalCubeDSL.g:3961:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) )
+            	                    // InternalCubeDSL.g:3962:9: (lv_memberCallArguments_19_0= ruleXExpression )
+            	                    {
+            	                    // InternalCubeDSL.g:3962:9: (lv_memberCallArguments_19_0= ruleXExpression )
+            	                    // InternalCubeDSL.g:3963:10: lv_memberCallArguments_19_0= ruleXExpression
+            	                    {
+            	                    if ( state.backtracking==0 ) {
+
+            	                      										newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0());
+            	                      									
+            	                    }
+            	                    pushFollow(FOLLOW_40);
+            	                    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();
+            	                      									
+            	                    }
+
+            	                    }
+
+
+            	                    }
+
+            	                    // InternalCubeDSL.g:3980:8: (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
+            	                    loop69:
+            	                    do {
+            	                        int alt69=2;
+            	                        int LA69_0 = input.LA(1);
+
+            	                        if ( (LA69_0==45) ) {
+            	                            alt69=1;
+            	                        }
+
+
+            	                        switch (alt69) {
+            	                    	case 1 :
+            	                    	    // InternalCubeDSL.g:3981:9: otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) )
+            	                    	    {
+            	                    	    otherlv_20=(Token)match(input,45,FOLLOW_43); if (state.failed) return current;
+            	                    	    if ( state.backtracking==0 ) {
+
+            	                    	      									newLeafNode(otherlv_20, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0());
+            	                    	      								
+            	                    	    }
+            	                    	    // InternalCubeDSL.g:3985:9: ( (lv_memberCallArguments_21_0= ruleXExpression ) )
+            	                    	    // InternalCubeDSL.g:3986:10: (lv_memberCallArguments_21_0= ruleXExpression )
+            	                    	    {
+            	                    	    // InternalCubeDSL.g:3986:10: (lv_memberCallArguments_21_0= ruleXExpression )
+            	                    	    // InternalCubeDSL.g:3987:11: lv_memberCallArguments_21_0= ruleXExpression
+            	                    	    {
+            	                    	    if ( state.backtracking==0 ) {
+
+            	                    	      											newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0());
+            	                    	      										
+            	                    	    }
+            	                    	    pushFollow(FOLLOW_40);
+            	                    	    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 loop69;
+            	                        }
+            	                    } while (true);
+
+
+            	                    }
+
+
+            	                    }
+            	                    break;
+
+            	            }
+
+            	            otherlv_22=(Token)match(input,46,FOLLOW_72); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              						newLeafNode(otherlv_22, grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2());
+            	              					
+            	            }
+
+            	            }
+            	            break;
+
+            	    }
+
+            	    // InternalCubeDSL.g:4012:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
+            	    int alt72=2;
+            	    alt72 = dfa72.predict(input);
+            	    switch (alt72) {
+            	        case 1 :
+            	            // InternalCubeDSL.g:4013:6: ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure )
+            	            {
+            	            // InternalCubeDSL.g:4019:6: (lv_memberCallArguments_23_0= ruleXClosure )
+            	            // InternalCubeDSL.g:4020:7: lv_memberCallArguments_23_0= ruleXClosure
+            	            {
+            	            if ( state.backtracking==0 ) {
+
+            	              							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0());
+            	              						
+            	            }
+            	            pushFollow(FOLLOW_65);
+            	            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 loop73;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXMemberFeatureCall"
+
+
+    // $ANTLR start "entryRuleXPrimaryExpression"
+    // InternalCubeDSL.g:4043:1: entryRuleXPrimaryExpression returns [EObject current=null] : iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF ;
+    public final EObject entryRuleXPrimaryExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXPrimaryExpression = null;
+
+
+        try {
+            // InternalCubeDSL.g:4043:59: (iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF )
+            // InternalCubeDSL.g:4044: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"
+    // InternalCubeDSL.g:4050: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 {
+            // InternalCubeDSL.g:4056: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 ) )
+            // InternalCubeDSL.g:4057: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 )
+            {
+            // InternalCubeDSL.g:4057: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 alt74=15;
+            alt74 = dfa74.predict(input);
+            switch (alt74) {
+                case 1 :
+                    // InternalCubeDSL.g:4058: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 :
+                    // InternalCubeDSL.g:4067: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 :
+                    // InternalCubeDSL.g:4076: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 :
+                    // InternalCubeDSL.g:4085:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
+                    {
+                    // InternalCubeDSL.g:4085:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
+                    // InternalCubeDSL.g:4086: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 :
+                    // InternalCubeDSL.g:4103: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 :
+                    // InternalCubeDSL.g:4112: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 :
+                    // InternalCubeDSL.g:4121: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 :
+                    // InternalCubeDSL.g:4130:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
+                    {
+                    // InternalCubeDSL.g:4130:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
+                    // InternalCubeDSL.g:4131: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 :
+                    // InternalCubeDSL.g:4154: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 :
+                    // InternalCubeDSL.g:4163: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 :
+                    // InternalCubeDSL.g:4172: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 :
+                    // InternalCubeDSL.g:4181: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 :
+                    // InternalCubeDSL.g:4190: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 :
+                    // InternalCubeDSL.g:4199: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 :
+                    // InternalCubeDSL.g:4208: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"
+    // InternalCubeDSL.g:4220:1: entryRuleXLiteral returns [EObject current=null] : iv_ruleXLiteral= ruleXLiteral EOF ;
+    public final EObject entryRuleXLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXLiteral = null;
+
+
+        try {
+            // InternalCubeDSL.g:4220:49: (iv_ruleXLiteral= ruleXLiteral EOF )
+            // InternalCubeDSL.g:4221: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"
+    // InternalCubeDSL.g:4227: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 {
+            // InternalCubeDSL.g:4233: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 ) )
+            // InternalCubeDSL.g:4234: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 )
+            {
+            // InternalCubeDSL.g:4234: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 alt75=7;
+            int LA75_0 = input.LA(1);
+
+            if ( (LA75_0==48) ) {
+                alt75=1;
+            }
+            else if ( (LA75_0==49) && (synpred27_InternalCubeDSL())) {
+                alt75=2;
+            }
+            else if ( ((LA75_0>=98 && LA75_0<=99)) ) {
+                alt75=3;
+            }
+            else if ( ((LA75_0>=RULE_HEX && LA75_0<=RULE_DECIMAL)) ) {
+                alt75=4;
+            }
+            else if ( (LA75_0==100) ) {
+                alt75=5;
+            }
+            else if ( (LA75_0==RULE_STRING) ) {
+                alt75=6;
+            }
+            else if ( (LA75_0==101) ) {
+                alt75=7;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 75, 0, input);
+
+                throw nvae;
+            }
+            switch (alt75) {
+                case 1 :
+                    // InternalCubeDSL.g:4235: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 :
+                    // InternalCubeDSL.g:4244:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
+                    {
+                    // InternalCubeDSL.g:4244:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
+                    // InternalCubeDSL.g:4245: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 :
+                    // InternalCubeDSL.g:4261: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 :
+                    // InternalCubeDSL.g:4270: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 :
+                    // InternalCubeDSL.g:4279: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 :
+                    // InternalCubeDSL.g:4288: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 :
+                    // InternalCubeDSL.g:4297: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"
+    // InternalCubeDSL.g:4309:1: entryRuleXCollectionLiteral returns [EObject current=null] : iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF ;
+    public final EObject entryRuleXCollectionLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXCollectionLiteral = null;
+
+
+        try {
+            // InternalCubeDSL.g:4309:59: (iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF )
+            // InternalCubeDSL.g:4310: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"
+    // InternalCubeDSL.g:4316: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 {
+            // InternalCubeDSL.g:4322:2: ( (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) )
+            // InternalCubeDSL.g:4323:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
+            {
+            // InternalCubeDSL.g:4323:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
+            int alt76=2;
+            int LA76_0 = input.LA(1);
+
+            if ( (LA76_0==48) ) {
+                int LA76_1 = input.LA(2);
+
+                if ( (LA76_1==49) ) {
+                    alt76=2;
+                }
+                else if ( (LA76_1==14) ) {
+                    alt76=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 76, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 76, 0, input);
+
+                throw nvae;
+            }
+            switch (alt76) {
+                case 1 :
+                    // InternalCubeDSL.g:4324: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 :
+                    // InternalCubeDSL.g:4333: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"
+    // InternalCubeDSL.g:4345:1: entryRuleXSetLiteral returns [EObject current=null] : iv_ruleXSetLiteral= ruleXSetLiteral EOF ;
+    public final EObject entryRuleXSetLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXSetLiteral = null;
+
+
+        try {
+            // InternalCubeDSL.g:4345:52: (iv_ruleXSetLiteral= ruleXSetLiteral EOF )
+            // InternalCubeDSL.g:4346: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"
+    // InternalCubeDSL.g:4352: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 {
+            // InternalCubeDSL.g:4358:2: ( ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) )
+            // InternalCubeDSL.g:4359:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
+            {
+            // InternalCubeDSL.g:4359:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
+            // InternalCubeDSL.g:4360:3: () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}'
+            {
+            // InternalCubeDSL.g:4360:3: ()
+            // InternalCubeDSL.g:4361:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,48,FOLLOW_10); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,14,FOLLOW_73); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2());
+              		
+            }
+            // InternalCubeDSL.g:4375:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
+            int alt78=2;
+            int LA78_0 = input.LA(1);
+
+            if ( ((LA78_0>=RULE_ID && LA78_0<=RULE_DECIMAL)||LA78_0==14||(LA78_0>=37 && LA78_0<=39)||LA78_0==44||(LA78_0>=48 && LA78_0<=49)||LA78_0==56||(LA78_0>=72 && LA78_0<=73)||LA78_0==77||LA78_0==84||LA78_0==86||(LA78_0>=90 && LA78_0<=92)||(LA78_0>=95 && LA78_0<=104)||LA78_0==106) ) {
+                alt78=1;
+            }
+            switch (alt78) {
+                case 1 :
+                    // InternalCubeDSL.g:4376:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    {
+                    // InternalCubeDSL.g:4376:4: ( (lv_elements_3_0= ruleXExpression ) )
+                    // InternalCubeDSL.g:4377:5: (lv_elements_3_0= ruleXExpression )
+                    {
+                    // InternalCubeDSL.g:4377:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalCubeDSL.g:4378:6: lv_elements_3_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_74);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalCubeDSL.g:4395:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    loop77:
+                    do {
+                        int alt77=2;
+                        int LA77_0 = input.LA(1);
+
+                        if ( (LA77_0==45) ) {
+                            alt77=1;
+                        }
+
+
+                        switch (alt77) {
+                    	case 1 :
+                    	    // InternalCubeDSL.g:4396:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
+                    	    {
+                    	    otherlv_4=(Token)match(input,45,FOLLOW_43); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_4, grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0());
+                    	      				
+                    	    }
+                    	    // InternalCubeDSL.g:4400:5: ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalCubeDSL.g:4401:6: (lv_elements_5_0= ruleXExpression )
+                    	    {
+                    	    // InternalCubeDSL.g:4401:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalCubeDSL.g:4402:7: lv_elements_5_0= ruleXExpression
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_74);
+                    	    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 loop77;
+                        }
+                    } 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"
+    // InternalCubeDSL.g:4429:1: entryRuleXListLiteral returns [EObject current=null] : iv_ruleXListLiteral= ruleXListLiteral EOF ;
+    public final EObject entryRuleXListLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXListLiteral = null;
+
+
+        try {
+            // InternalCubeDSL.g:4429:53: (iv_ruleXListLiteral= ruleXListLiteral EOF )
+            // InternalCubeDSL.g:4430: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"
+    // InternalCubeDSL.g:4436: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 {
+            // InternalCubeDSL.g:4442:2: ( ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) )
+            // InternalCubeDSL.g:4443:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
+            {
+            // InternalCubeDSL.g:4443:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
+            // InternalCubeDSL.g:4444:3: () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']'
+            {
+            // InternalCubeDSL.g:4444:3: ()
+            // InternalCubeDSL.g:4445:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXListLiteralAccess().getXListLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,48,FOLLOW_44); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,49,FOLLOW_45); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2());
+              		
+            }
+            // InternalCubeDSL.g:4459:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
+            int alt80=2;
+            int LA80_0 = input.LA(1);
+
+            if ( ((LA80_0>=RULE_ID && LA80_0<=RULE_DECIMAL)||LA80_0==14||(LA80_0>=37 && LA80_0<=39)||LA80_0==44||(LA80_0>=48 && LA80_0<=49)||LA80_0==56||(LA80_0>=72 && LA80_0<=73)||LA80_0==77||LA80_0==84||LA80_0==86||(LA80_0>=90 && LA80_0<=92)||(LA80_0>=95 && LA80_0<=104)||LA80_0==106) ) {
+                alt80=1;
+            }
+            switch (alt80) {
+                case 1 :
+                    // InternalCubeDSL.g:4460:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    {
+                    // InternalCubeDSL.g:4460:4: ( (lv_elements_3_0= ruleXExpression ) )
+                    // InternalCubeDSL.g:4461:5: (lv_elements_3_0= ruleXExpression )
+                    {
+                    // InternalCubeDSL.g:4461:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalCubeDSL.g:4462:6: lv_elements_3_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_46);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalCubeDSL.g:4479:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    loop79:
+                    do {
+                        int alt79=2;
+                        int LA79_0 = input.LA(1);
+
+                        if ( (LA79_0==45) ) {
+                            alt79=1;
+                        }
+
+
+                        switch (alt79) {
+                    	case 1 :
+                    	    // InternalCubeDSL.g:4480:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
+                    	    {
+                    	    otherlv_4=(Token)match(input,45,FOLLOW_43); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_4, grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0());
+                    	      				
+                    	    }
+                    	    // InternalCubeDSL.g:4484:5: ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalCubeDSL.g:4485:6: (lv_elements_5_0= ruleXExpression )
+                    	    {
+                    	    // InternalCubeDSL.g:4485:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalCubeDSL.g:4486:7: lv_elements_5_0= ruleXExpression
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_46);
+                    	    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 loop79;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,50,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"
+    // InternalCubeDSL.g:4513:1: entryRuleXClosure returns [EObject current=null] : iv_ruleXClosure= ruleXClosure EOF ;
+    public final EObject entryRuleXClosure() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXClosure = null;
+
+
+        try {
+            // InternalCubeDSL.g:4513:49: (iv_ruleXClosure= ruleXClosure EOF )
+            // InternalCubeDSL.g:4514: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"
+    // InternalCubeDSL.g:4520: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 {
+            // InternalCubeDSL.g:4526: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= ']' ) )
+            // InternalCubeDSL.g:4527: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= ']' )
+            {
+            // InternalCubeDSL.g:4527: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= ']' )
+            // InternalCubeDSL.g:4528: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= ']'
+            {
+            // InternalCubeDSL.g:4528:3: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) )
+            // InternalCubeDSL.g:4529:4: ( ( () '[' ) )=> ( () otherlv_1= '[' )
+            {
+            // InternalCubeDSL.g:4535:4: ( () otherlv_1= '[' )
+            // InternalCubeDSL.g:4536:5: () otherlv_1= '['
+            {
+            // InternalCubeDSL.g:4536:5: ()
+            // InternalCubeDSL.g:4537:6: 
+            {
+            if ( state.backtracking==0 ) {
+
+              						current = forceCreateModelElement(
+              							grammarAccess.getXClosureAccess().getXClosureAction_0_0_0(),
+              							current);
+              					
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,49,FOLLOW_75); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_1, grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1());
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalCubeDSL.g:4549:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?
+            int alt83=2;
+            alt83 = dfa83.predict(input);
+            switch (alt83) {
+                case 1 :
+                    // InternalCubeDSL.g:4550:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
+                    {
+                    // InternalCubeDSL.g:4573:4: ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
+                    // InternalCubeDSL.g:4574:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) )
+                    {
+                    // InternalCubeDSL.g:4574:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )?
+                    int alt82=2;
+                    int LA82_0 = input.LA(1);
+
+                    if ( (LA82_0==RULE_ID||LA82_0==44||LA82_0==69) ) {
+                        alt82=1;
+                    }
+                    switch (alt82) {
+                        case 1 :
+                            // InternalCubeDSL.g:4575:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
+                            {
+                            // InternalCubeDSL.g:4575:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) )
+                            // InternalCubeDSL.g:4576:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
+                            {
+                            // InternalCubeDSL.g:4576:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
+                            // InternalCubeDSL.g:4577:8: lv_declaredFormalParameters_2_0= ruleJvmFormalParameter
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0());
+                              							
+                            }
+                            pushFollow(FOLLOW_76);
+                            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();
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+                            // InternalCubeDSL.g:4594:6: (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
+                            loop81:
+                            do {
+                                int alt81=2;
+                                int LA81_0 = input.LA(1);
+
+                                if ( (LA81_0==45) ) {
+                                    alt81=1;
+                                }
+
+
+                                switch (alt81) {
+                            	case 1 :
+                            	    // InternalCubeDSL.g:4595:7: otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
+                            	    {
+                            	    otherlv_3=(Token)match(input,45,FOLLOW_56); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      							newLeafNode(otherlv_3, grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0());
+                            	      						
+                            	    }
+                            	    // InternalCubeDSL.g:4599:7: ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
+                            	    // InternalCubeDSL.g:4600:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
+                            	    {
+                            	    // InternalCubeDSL.g:4600:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
+                            	    // InternalCubeDSL.g:4601:9: lv_declaredFormalParameters_4_0= ruleJvmFormalParameter
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+
+                            	      									newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0());
+                            	      								
+                            	    }
+                            	    pushFollow(FOLLOW_76);
+                            	    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 loop81;
+                                }
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+                    // InternalCubeDSL.g:4620:5: ( (lv_explicitSyntax_5_0= '|' ) )
+                    // InternalCubeDSL.g:4621:6: (lv_explicitSyntax_5_0= '|' )
+                    {
+                    // InternalCubeDSL.g:4621:6: (lv_explicitSyntax_5_0= '|' )
+                    // InternalCubeDSL.g:4622:7: lv_explicitSyntax_5_0= '|'
+                    {
+                    lv_explicitSyntax_5_0=(Token)match(input,83,FOLLOW_77); 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;
+
+            }
+
+            // InternalCubeDSL.g:4636:3: ( (lv_expression_6_0= ruleXExpressionInClosure ) )
+            // InternalCubeDSL.g:4637:4: (lv_expression_6_0= ruleXExpressionInClosure )
+            {
+            // InternalCubeDSL.g:4637:4: (lv_expression_6_0= ruleXExpressionInClosure )
+            // InternalCubeDSL.g:4638:5: lv_expression_6_0= ruleXExpressionInClosure
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_78);
+            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,50,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"
+    // InternalCubeDSL.g:4663:1: entryRuleXExpressionInClosure returns [EObject current=null] : iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF ;
+    public final EObject entryRuleXExpressionInClosure() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXExpressionInClosure = null;
+
+
+        try {
+            // InternalCubeDSL.g:4663:61: (iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF )
+            // InternalCubeDSL.g:4664: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"
+    // InternalCubeDSL.g:4670: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 {
+            // InternalCubeDSL.g:4676:2: ( ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) )
+            // InternalCubeDSL.g:4677:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
+            {
+            // InternalCubeDSL.g:4677:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
+            // InternalCubeDSL.g:4678:3: () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
+            {
+            // InternalCubeDSL.g:4678:3: ()
+            // InternalCubeDSL.g:4679:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalCubeDSL.g:4685:3: ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
+            loop85:
+            do {
+                int alt85=2;
+                int LA85_0 = input.LA(1);
+
+                if ( ((LA85_0>=RULE_ID && LA85_0<=RULE_DECIMAL)||LA85_0==14||(LA85_0>=37 && LA85_0<=39)||LA85_0==44||(LA85_0>=48 && LA85_0<=49)||LA85_0==56||(LA85_0>=72 && LA85_0<=73)||LA85_0==77||LA85_0==84||LA85_0==86||(LA85_0>=90 && LA85_0<=104)||LA85_0==106) ) {
+                    alt85=1;
+                }
+
+
+                switch (alt85) {
+            	case 1 :
+            	    // InternalCubeDSL.g:4686:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )?
+            	    {
+            	    // InternalCubeDSL.g:4686:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) )
+            	    // InternalCubeDSL.g:4687:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
+            	    {
+            	    // InternalCubeDSL.g:4687:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalCubeDSL.g:4688:6: lv_expressions_1_0= ruleXExpressionOrVarDeclaration
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_79);
+            	    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();
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalCubeDSL.g:4705:4: (otherlv_2= ';' )?
+            	    int alt84=2;
+            	    int LA84_0 = input.LA(1);
+
+            	    if ( (LA84_0==42) ) {
+            	        alt84=1;
+            	    }
+            	    switch (alt84) {
+            	        case 1 :
+            	            // InternalCubeDSL.g:4706:5: otherlv_2= ';'
+            	            {
+            	            otherlv_2=(Token)match(input,42,FOLLOW_80); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              					newLeafNode(otherlv_2, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
+            	              				
+            	            }
+
+            	            }
+            	            break;
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop85;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXExpressionInClosure"
+
+
+    // $ANTLR start "entryRuleXShortClosure"
+    // InternalCubeDSL.g:4716:1: entryRuleXShortClosure returns [EObject current=null] : iv_ruleXShortClosure= ruleXShortClosure EOF ;
+    public final EObject entryRuleXShortClosure() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXShortClosure = null;
+
+
+        try {
+            // InternalCubeDSL.g:4716:54: (iv_ruleXShortClosure= ruleXShortClosure EOF )
+            // InternalCubeDSL.g:4717: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"
+    // InternalCubeDSL.g:4723: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 {
+            // InternalCubeDSL.g:4729:2: ( ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) )
+            // InternalCubeDSL.g:4730:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
+            {
+            // InternalCubeDSL.g:4730:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalCubeDSL.g:4731:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) )
+            {
+            // InternalCubeDSL.g:4731:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) )
+            // InternalCubeDSL.g:4732:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
+            {
+            // InternalCubeDSL.g:4757:4: ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
+            // InternalCubeDSL.g:4758:5: () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) )
+            {
+            // InternalCubeDSL.g:4758:5: ()
+            // InternalCubeDSL.g:4759:6: 
+            {
+            if ( state.backtracking==0 ) {
+
+              						current = forceCreateModelElement(
+              							grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0(),
+              							current);
+              					
+            }
+
+            }
+
+            // InternalCubeDSL.g:4765:5: ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )?
+            int alt87=2;
+            int LA87_0 = input.LA(1);
+
+            if ( (LA87_0==RULE_ID||LA87_0==44||LA87_0==69) ) {
+                alt87=1;
+            }
+            switch (alt87) {
+                case 1 :
+                    // InternalCubeDSL.g:4766:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
+                    {
+                    // InternalCubeDSL.g:4766:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) )
+                    // InternalCubeDSL.g:4767:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
+                    {
+                    // InternalCubeDSL.g:4767:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
+                    // InternalCubeDSL.g:4768:8: lv_declaredFormalParameters_1_0= ruleJvmFormalParameter
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      								newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0());
+                      							
+                    }
+                    pushFollow(FOLLOW_76);
+                    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();
+                      							
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalCubeDSL.g:4785:6: (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
+                    loop86:
+                    do {
+                        int alt86=2;
+                        int LA86_0 = input.LA(1);
+
+                        if ( (LA86_0==45) ) {
+                            alt86=1;
+                        }
+
+
+                        switch (alt86) {
+                    	case 1 :
+                    	    // InternalCubeDSL.g:4786:7: otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
+                    	    {
+                    	    otherlv_2=(Token)match(input,45,FOLLOW_56); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newLeafNode(otherlv_2, grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0());
+                    	      						
+                    	    }
+                    	    // InternalCubeDSL.g:4790:7: ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
+                    	    // InternalCubeDSL.g:4791:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
+                    	    {
+                    	    // InternalCubeDSL.g:4791:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
+                    	    // InternalCubeDSL.g:4792:9: lv_declaredFormalParameters_3_0= ruleJvmFormalParameter
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      									newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0());
+                    	      								
+                    	    }
+                    	    pushFollow(FOLLOW_76);
+                    	    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 loop86;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalCubeDSL.g:4811:5: ( (lv_explicitSyntax_4_0= '|' ) )
+            // InternalCubeDSL.g:4812:6: (lv_explicitSyntax_4_0= '|' )
+            {
+            // InternalCubeDSL.g:4812:6: (lv_explicitSyntax_4_0= '|' )
+            // InternalCubeDSL.g:4813:7: lv_explicitSyntax_4_0= '|'
+            {
+            lv_explicitSyntax_4_0=(Token)match(input,83,FOLLOW_43); 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, "|");
+              						
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            // InternalCubeDSL.g:4827:3: ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalCubeDSL.g:4828:4: (lv_expression_5_0= ruleXExpression )
+            {
+            // InternalCubeDSL.g:4828:4: (lv_expression_5_0= ruleXExpression )
+            // InternalCubeDSL.g:4829: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"
+    // InternalCubeDSL.g:4850:1: entryRuleXParenthesizedExpression returns [EObject current=null] : iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF ;
+    public final EObject entryRuleXParenthesizedExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXParenthesizedExpression = null;
+
+
+        try {
+            // InternalCubeDSL.g:4850:65: (iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF )
+            // InternalCubeDSL.g:4851: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"
+    // InternalCubeDSL.g:4857: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 {
+            // InternalCubeDSL.g:4863:2: ( (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) )
+            // InternalCubeDSL.g:4864:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
+            {
+            // InternalCubeDSL.g:4864:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
+            // InternalCubeDSL.g:4865:3: otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')'
+            {
+            otherlv_0=(Token)match(input,44,FOLLOW_43); 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_41);
+            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,46,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"
+    // InternalCubeDSL.g:4885:1: entryRuleXIfExpression returns [EObject current=null] : iv_ruleXIfExpression= ruleXIfExpression EOF ;
+    public final EObject entryRuleXIfExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXIfExpression = null;
+
+
+        try {
+            // InternalCubeDSL.g:4885:54: (iv_ruleXIfExpression= ruleXIfExpression EOF )
+            // InternalCubeDSL.g:4886: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"
+    // InternalCubeDSL.g:4892: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 {
+            // InternalCubeDSL.g:4898: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 ) ) )? ) )
+            // InternalCubeDSL.g:4899: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 ) ) )? )
+            {
+            // InternalCubeDSL.g:4899: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 ) ) )? )
+            // InternalCubeDSL.g:4900: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 ) ) )?
+            {
+            // InternalCubeDSL.g:4900:3: ()
+            // InternalCubeDSL.g:4901:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,84,FOLLOW_81); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXIfExpressionAccess().getIfKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,44,FOLLOW_43); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2());
+              		
+            }
+            // InternalCubeDSL.g:4915:3: ( (lv_if_3_0= ruleXExpression ) )
+            // InternalCubeDSL.g:4916:4: (lv_if_3_0= ruleXExpression )
+            {
+            // InternalCubeDSL.g:4916:4: (lv_if_3_0= ruleXExpression )
+            // InternalCubeDSL.g:4917:5: lv_if_3_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0());
+              				
+            }
+            pushFollow(FOLLOW_41);
+            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,46,FOLLOW_43); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4());
+              		
+            }
+            // InternalCubeDSL.g:4938:3: ( (lv_then_5_0= ruleXExpression ) )
+            // InternalCubeDSL.g:4939:4: (lv_then_5_0= ruleXExpression )
+            {
+            // InternalCubeDSL.g:4939:4: (lv_then_5_0= ruleXExpression )
+            // InternalCubeDSL.g:4940:5: lv_then_5_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0());
+              				
+            }
+            pushFollow(FOLLOW_82);
+            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();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalCubeDSL.g:4957:3: ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
+            int alt88=2;
+            int LA88_0 = input.LA(1);
+
+            if ( (LA88_0==85) ) {
+                int LA88_1 = input.LA(2);
+
+                if ( (synpred31_InternalCubeDSL()) ) {
+                    alt88=1;
+                }
+            }
+            switch (alt88) {
+                case 1 :
+                    // InternalCubeDSL.g:4958:4: ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) )
+                    {
+                    // InternalCubeDSL.g:4958:4: ( ( 'else' )=>otherlv_6= 'else' )
+                    // InternalCubeDSL.g:4959:5: ( 'else' )=>otherlv_6= 'else'
+                    {
+                    otherlv_6=(Token)match(input,85,FOLLOW_43); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_6, grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0());
+                      				
+                    }
+
+                    }
+
+                    // InternalCubeDSL.g:4965:4: ( (lv_else_7_0= ruleXExpression ) )
+                    // InternalCubeDSL.g:4966:5: (lv_else_7_0= ruleXExpression )
+                    {
+                    // InternalCubeDSL.g:4966:5: (lv_else_7_0= ruleXExpression )
+                    // InternalCubeDSL.g:4967: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"
+    // InternalCubeDSL.g:4989:1: entryRuleXSwitchExpression returns [EObject current=null] : iv_ruleXSwitchExpression= ruleXSwitchExpression EOF ;
+    public final EObject entryRuleXSwitchExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXSwitchExpression = null;
+
+
+        try {
+            // InternalCubeDSL.g:4989:58: (iv_ruleXSwitchExpression= ruleXSwitchExpression EOF )
+            // InternalCubeDSL.g:4990: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"
+    // InternalCubeDSL.g:4996: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 {
+            // InternalCubeDSL.g:5002: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= '}' ) )
+            // InternalCubeDSL.g:5003: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= '}' )
+            {
+            // InternalCubeDSL.g:5003: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= '}' )
+            // InternalCubeDSL.g:5004: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= '}'
+            {
+            // InternalCubeDSL.g:5004:3: ()
+            // InternalCubeDSL.g:5005:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,86,FOLLOW_83); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1());
+              		
+            }
+            // InternalCubeDSL.g:5015: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 alt90=2;
+            alt90 = dfa90.predict(input);
+            switch (alt90) {
+                case 1 :
+                    // InternalCubeDSL.g:5016:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
+                    {
+                    // InternalCubeDSL.g:5016:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
+                    // InternalCubeDSL.g:5017:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')'
+                    {
+                    // InternalCubeDSL.g:5017:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
+                    // InternalCubeDSL.g:5018:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+                    {
+                    // InternalCubeDSL.g:5028:6: (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+                    // InternalCubeDSL.g:5029:7: otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
+                    {
+                    otherlv_2=(Token)match(input,44,FOLLOW_56); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							newLeafNode(otherlv_2, grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0());
+                      						
+                    }
+                    // InternalCubeDSL.g:5033:7: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
+                    // InternalCubeDSL.g:5034:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+                    {
+                    // InternalCubeDSL.g:5034:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+                    // InternalCubeDSL.g:5035:9: lv_declaredParam_3_0= ruleJvmFormalParameter
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      									newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0_0_0_1_0());
+                      								
+                    }
+                    pushFollow(FOLLOW_84);
+                    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,87,FOLLOW_43); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							newLeafNode(otherlv_4, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2());
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalCubeDSL.g:5058:5: ( (lv_switch_5_0= ruleXExpression ) )
+                    // InternalCubeDSL.g:5059:6: (lv_switch_5_0= ruleXExpression )
+                    {
+                    // InternalCubeDSL.g:5059:6: (lv_switch_5_0= ruleXExpression )
+                    // InternalCubeDSL.g:5060:7: lv_switch_5_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_0_1_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_41);
+                    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,46,FOLLOW_10); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_6, grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2());
+                      				
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:5083:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
+                    {
+                    // InternalCubeDSL.g:5083:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
+                    // InternalCubeDSL.g:5084:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) )
+                    {
+                    // InternalCubeDSL.g:5084:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?
+                    int alt89=2;
+                    alt89 = dfa89.predict(input);
+                    switch (alt89) {
+                        case 1 :
+                            // InternalCubeDSL.g:5085:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
+                            {
+                            // InternalCubeDSL.g:5094:6: ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
+                            // InternalCubeDSL.g:5095:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':'
+                            {
+                            // InternalCubeDSL.g:5095:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) )
+                            // InternalCubeDSL.g:5096:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
+                            {
+                            // InternalCubeDSL.g:5096:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
+                            // InternalCubeDSL.g:5097:9: lv_declaredParam_7_0= ruleJvmFormalParameter
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              									newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_1_0_0_0_0());
+                              								
+                            }
+                            pushFollow(FOLLOW_84);
+                            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,87,FOLLOW_43); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              							newLeafNode(otherlv_8, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1());
+                              						
+                            }
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // InternalCubeDSL.g:5120:5: ( (lv_switch_9_0= ruleXExpression ) )
+                    // InternalCubeDSL.g:5121:6: (lv_switch_9_0= ruleXExpression )
+                    {
+                    // InternalCubeDSL.g:5121:6: (lv_switch_9_0= ruleXExpression )
+                    // InternalCubeDSL.g:5122:7: lv_switch_9_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_10);
+                    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_85); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_10, grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3());
+              		
+            }
+            // InternalCubeDSL.g:5145:3: ( (lv_cases_11_0= ruleXCasePart ) )*
+            loop91:
+            do {
+                int alt91=2;
+                int LA91_0 = input.LA(1);
+
+                if ( (LA91_0==RULE_ID||(LA91_0>=44 && LA91_0<=45)||LA91_0==69||LA91_0==87||LA91_0==89) ) {
+                    alt91=1;
+                }
+
+
+                switch (alt91) {
+            	case 1 :
+            	    // InternalCubeDSL.g:5146:4: (lv_cases_11_0= ruleXCasePart )
+            	    {
+            	    // InternalCubeDSL.g:5146:4: (lv_cases_11_0= ruleXCasePart )
+            	    // InternalCubeDSL.g:5147:5: lv_cases_11_0= ruleXCasePart
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      					newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0());
+            	      				
+            	    }
+            	    pushFollow(FOLLOW_85);
+            	    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 loop91;
+                }
+            } while (true);
+
+            // InternalCubeDSL.g:5164:3: (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )?
+            int alt92=2;
+            int LA92_0 = input.LA(1);
+
+            if ( (LA92_0==88) ) {
+                alt92=1;
+            }
+            switch (alt92) {
+                case 1 :
+                    // InternalCubeDSL.g:5165:4: otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) )
+                    {
+                    otherlv_12=(Token)match(input,88,FOLLOW_84); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_12, grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0());
+                      			
+                    }
+                    otherlv_13=(Token)match(input,87,FOLLOW_43); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_13, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1());
+                      			
+                    }
+                    // InternalCubeDSL.g:5173:4: ( (lv_default_14_0= ruleXExpression ) )
+                    // InternalCubeDSL.g:5174:5: (lv_default_14_0= ruleXExpression )
+                    {
+                    // InternalCubeDSL.g:5174:5: (lv_default_14_0= ruleXExpression )
+                    // InternalCubeDSL.g:5175:6: lv_default_14_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_12);
+                    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"
+    // InternalCubeDSL.g:5201:1: entryRuleXCasePart returns [EObject current=null] : iv_ruleXCasePart= ruleXCasePart EOF ;
+    public final EObject entryRuleXCasePart() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXCasePart = null;
+
+
+        try {
+            // InternalCubeDSL.g:5201:50: (iv_ruleXCasePart= ruleXCasePart EOF )
+            // InternalCubeDSL.g:5202: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"
+    // InternalCubeDSL.g:5208: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 {
+            // InternalCubeDSL.g:5214: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= ',' ) ) ) ) )
+            // InternalCubeDSL.g:5215: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= ',' ) ) ) )
+            {
+            // InternalCubeDSL.g:5215: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= ',' ) ) ) )
+            // InternalCubeDSL.g:5216: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= ',' ) ) )
+            {
+            // InternalCubeDSL.g:5216:3: ()
+            // InternalCubeDSL.g:5217:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXCasePartAccess().getXCasePartAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalCubeDSL.g:5223:3: ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )?
+            int alt93=2;
+            int LA93_0 = input.LA(1);
+
+            if ( (LA93_0==RULE_ID||LA93_0==44||LA93_0==69) ) {
+                alt93=1;
+            }
+            switch (alt93) {
+                case 1 :
+                    // InternalCubeDSL.g:5224:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
+                    {
+                    // InternalCubeDSL.g:5224:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
+                    // InternalCubeDSL.g:5225:5: lv_typeGuard_1_0= ruleJvmTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      					newCompositeNode(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_1_0());
+                      				
+                    }
+                    pushFollow(FOLLOW_86);
+                    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;
+
+            }
+
+            // InternalCubeDSL.g:5242:3: (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )?
+            int alt94=2;
+            int LA94_0 = input.LA(1);
+
+            if ( (LA94_0==89) ) {
+                alt94=1;
+            }
+            switch (alt94) {
+                case 1 :
+                    // InternalCubeDSL.g:5243:4: otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) )
+                    {
+                    otherlv_2=(Token)match(input,89,FOLLOW_43); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_2, grammarAccess.getXCasePartAccess().getCaseKeyword_2_0());
+                      			
+                    }
+                    // InternalCubeDSL.g:5247:4: ( (lv_case_3_0= ruleXExpression ) )
+                    // InternalCubeDSL.g:5248:5: (lv_case_3_0= ruleXExpression )
+                    {
+                    // InternalCubeDSL.g:5248:5: (lv_case_3_0= ruleXExpression )
+                    // InternalCubeDSL.g:5249:6: lv_case_3_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_2_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_87);
+                    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;
+
+            }
+
+            // InternalCubeDSL.g:5267:3: ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) )
+            int alt95=2;
+            int LA95_0 = input.LA(1);
+
+            if ( (LA95_0==87) ) {
+                alt95=1;
+            }
+            else if ( (LA95_0==45) ) {
+                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 :
+                    // InternalCubeDSL.g:5268:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
+                    {
+                    // InternalCubeDSL.g:5268:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
+                    // InternalCubeDSL.g:5269:5: otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) )
+                    {
+                    otherlv_4=(Token)match(input,87,FOLLOW_43); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_4, grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0());
+                      				
+                    }
+                    // InternalCubeDSL.g:5273:5: ( (lv_then_5_0= ruleXExpression ) )
+                    // InternalCubeDSL.g:5274:6: (lv_then_5_0= ruleXExpression )
+                    {
+                    // InternalCubeDSL.g:5274:6: (lv_then_5_0= ruleXExpression )
+                    // InternalCubeDSL.g:5275: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 :
+                    // InternalCubeDSL.g:5294:4: ( (lv_fallThrough_6_0= ',' ) )
+                    {
+                    // InternalCubeDSL.g:5294:4: ( (lv_fallThrough_6_0= ',' ) )
+                    // InternalCubeDSL.g:5295:5: (lv_fallThrough_6_0= ',' )
+                    {
+                    // InternalCubeDSL.g:5295:5: (lv_fallThrough_6_0= ',' )
+                    // InternalCubeDSL.g:5296:6: lv_fallThrough_6_0= ','
+                    {
+                    lv_fallThrough_6_0=(Token)match(input,45,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"
+    // InternalCubeDSL.g:5313:1: entryRuleXForLoopExpression returns [EObject current=null] : iv_ruleXForLoopExpression= ruleXForLoopExpression EOF ;
+    public final EObject entryRuleXForLoopExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXForLoopExpression = null;
+
+
+        try {
+            // InternalCubeDSL.g:5313:59: (iv_ruleXForLoopExpression= ruleXForLoopExpression EOF )
+            // InternalCubeDSL.g:5314: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"
+    // InternalCubeDSL.g:5320: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 {
+            // InternalCubeDSL.g:5326: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 ) ) ) )
+            // InternalCubeDSL.g:5327: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 ) ) )
+            {
+            // InternalCubeDSL.g:5327: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 ) ) )
+            // InternalCubeDSL.g:5328: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 ) )
+            {
+            // InternalCubeDSL.g:5328:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
+            // InternalCubeDSL.g:5329:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+            {
+            // InternalCubeDSL.g:5342:4: ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+            // InternalCubeDSL.g:5343:5: () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
+            {
+            // InternalCubeDSL.g:5343:5: ()
+            // InternalCubeDSL.g:5344:6: 
+            {
+            if ( state.backtracking==0 ) {
+
+              						current = forceCreateModelElement(
+              							grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0(),
+              							current);
+              					
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,90,FOLLOW_81); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_1, grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1());
+              				
+            }
+            otherlv_2=(Token)match(input,44,FOLLOW_56); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_2, grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2());
+              				
+            }
+            // InternalCubeDSL.g:5358:5: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
+            // InternalCubeDSL.g:5359:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+            {
+            // InternalCubeDSL.g:5359:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+            // InternalCubeDSL.g:5360:7: lv_declaredParam_3_0= ruleJvmFormalParameter
+            {
+            if ( state.backtracking==0 ) {
+
+              							newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_0_0_3_0());
+              						
+            }
+            pushFollow(FOLLOW_84);
+            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,87,FOLLOW_43); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_4, grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4());
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalCubeDSL.g:5383:3: ( (lv_forExpression_5_0= ruleXExpression ) )
+            // InternalCubeDSL.g:5384:4: (lv_forExpression_5_0= ruleXExpression )
+            {
+            // InternalCubeDSL.g:5384:4: (lv_forExpression_5_0= ruleXExpression )
+            // InternalCubeDSL.g:5385:5: lv_forExpression_5_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_1_0());
+              				
+            }
+            pushFollow(FOLLOW_41);
+            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,46,FOLLOW_43); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_6, grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2());
+              		
+            }
+            // InternalCubeDSL.g:5406:3: ( (lv_eachExpression_7_0= ruleXExpression ) )
+            // InternalCubeDSL.g:5407:4: (lv_eachExpression_7_0= ruleXExpression )
+            {
+            // InternalCubeDSL.g:5407:4: (lv_eachExpression_7_0= ruleXExpression )
+            // InternalCubeDSL.g:5408: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"
+    // InternalCubeDSL.g:5429:1: entryRuleXBasicForLoopExpression returns [EObject current=null] : iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF ;
+    public final EObject entryRuleXBasicForLoopExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXBasicForLoopExpression = null;
+
+
+        try {
+            // InternalCubeDSL.g:5429:64: (iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF )
+            // InternalCubeDSL.g:5430: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"
+    // InternalCubeDSL.g:5436: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 {
+            // InternalCubeDSL.g:5442: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 ) ) ) )
+            // InternalCubeDSL.g:5443: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 ) ) )
+            {
+            // InternalCubeDSL.g:5443: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 ) ) )
+            // InternalCubeDSL.g:5444: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 ) )
+            {
+            // InternalCubeDSL.g:5444:3: ()
+            // InternalCubeDSL.g:5445:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,90,FOLLOW_81); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,44,FOLLOW_88); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2());
+              		
+            }
+            // InternalCubeDSL.g:5459:3: ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )?
+            int alt97=2;
+            int LA97_0 = input.LA(1);
+
+            if ( ((LA97_0>=RULE_ID && LA97_0<=RULE_DECIMAL)||LA97_0==14||(LA97_0>=37 && LA97_0<=39)||LA97_0==44||(LA97_0>=48 && LA97_0<=49)||LA97_0==56||(LA97_0>=72 && LA97_0<=73)||LA97_0==77||LA97_0==84||LA97_0==86||(LA97_0>=90 && LA97_0<=104)||LA97_0==106) ) {
+                alt97=1;
+            }
+            switch (alt97) {
+                case 1 :
+                    // InternalCubeDSL.g:5460:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
+                    {
+                    // InternalCubeDSL.g:5460:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) )
+                    // InternalCubeDSL.g:5461:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
+                    {
+                    // InternalCubeDSL.g:5461:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
+                    // InternalCubeDSL.g:5462:6: lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_89);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalCubeDSL.g:5479:4: (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
+                    loop96:
+                    do {
+                        int alt96=2;
+                        int LA96_0 = input.LA(1);
+
+                        if ( (LA96_0==45) ) {
+                            alt96=1;
+                        }
+
+
+                        switch (alt96) {
+                    	case 1 :
+                    	    // InternalCubeDSL.g:5480:5: otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
+                    	    {
+                    	    otherlv_4=(Token)match(input,45,FOLLOW_90); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_4, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0());
+                    	      				
+                    	    }
+                    	    // InternalCubeDSL.g:5484:5: ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
+                    	    // InternalCubeDSL.g:5485:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
+                    	    {
+                    	    // InternalCubeDSL.g:5485:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
+                    	    // InternalCubeDSL.g:5486:7: lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_89);
+                    	    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 loop96;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,42,FOLLOW_91); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_6, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4());
+              		
+            }
+            // InternalCubeDSL.g:5509:3: ( (lv_expression_7_0= ruleXExpression ) )?
+            int alt98=2;
+            int LA98_0 = input.LA(1);
+
+            if ( ((LA98_0>=RULE_ID && LA98_0<=RULE_DECIMAL)||LA98_0==14||(LA98_0>=37 && LA98_0<=39)||LA98_0==44||(LA98_0>=48 && LA98_0<=49)||LA98_0==56||(LA98_0>=72 && LA98_0<=73)||LA98_0==77||LA98_0==84||LA98_0==86||(LA98_0>=90 && LA98_0<=92)||(LA98_0>=95 && LA98_0<=104)||LA98_0==106) ) {
+                alt98=1;
+            }
+            switch (alt98) {
+                case 1 :
+                    // InternalCubeDSL.g:5510:4: (lv_expression_7_0= ruleXExpression )
+                    {
+                    // InternalCubeDSL.g:5510:4: (lv_expression_7_0= ruleXExpression )
+                    // InternalCubeDSL.g:5511:5: lv_expression_7_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      					newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionXExpressionParserRuleCall_5_0());
+                      				
+                    }
+                    pushFollow(FOLLOW_92);
+                    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,42,FOLLOW_39); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_8, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6());
+              		
+            }
+            // InternalCubeDSL.g:5532:3: ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )?
+            int alt100=2;
+            int LA100_0 = input.LA(1);
+
+            if ( ((LA100_0>=RULE_ID && LA100_0<=RULE_DECIMAL)||LA100_0==14||(LA100_0>=37 && LA100_0<=39)||LA100_0==44||(LA100_0>=48 && LA100_0<=49)||LA100_0==56||(LA100_0>=72 && LA100_0<=73)||LA100_0==77||LA100_0==84||LA100_0==86||(LA100_0>=90 && LA100_0<=92)||(LA100_0>=95 && LA100_0<=104)||LA100_0==106) ) {
+                alt100=1;
+            }
+            switch (alt100) {
+                case 1 :
+                    // InternalCubeDSL.g:5533:4: ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
+                    {
+                    // InternalCubeDSL.g:5533:4: ( (lv_updateExpressions_9_0= ruleXExpression ) )
+                    // InternalCubeDSL.g:5534:5: (lv_updateExpressions_9_0= ruleXExpression )
+                    {
+                    // InternalCubeDSL.g:5534:5: (lv_updateExpressions_9_0= ruleXExpression )
+                    // InternalCubeDSL.g:5535:6: lv_updateExpressions_9_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_0_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_40);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalCubeDSL.g:5552:4: (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
+                    loop99:
+                    do {
+                        int alt99=2;
+                        int LA99_0 = input.LA(1);
+
+                        if ( (LA99_0==45) ) {
+                            alt99=1;
+                        }
+
+
+                        switch (alt99) {
+                    	case 1 :
+                    	    // InternalCubeDSL.g:5553:5: otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) )
+                    	    {
+                    	    otherlv_10=(Token)match(input,45,FOLLOW_43); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_10, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0());
+                    	      				
+                    	    }
+                    	    // InternalCubeDSL.g:5557:5: ( (lv_updateExpressions_11_0= ruleXExpression ) )
+                    	    // InternalCubeDSL.g:5558:6: (lv_updateExpressions_11_0= ruleXExpression )
+                    	    {
+                    	    // InternalCubeDSL.g:5558:6: (lv_updateExpressions_11_0= ruleXExpression )
+                    	    // InternalCubeDSL.g:5559:7: lv_updateExpressions_11_0= ruleXExpression
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_1_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_40);
+                    	    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 loop99;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_12=(Token)match(input,46,FOLLOW_43); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_12, grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8());
+              		
+            }
+            // InternalCubeDSL.g:5582:3: ( (lv_eachExpression_13_0= ruleXExpression ) )
+            // InternalCubeDSL.g:5583:4: (lv_eachExpression_13_0= ruleXExpression )
+            {
+            // InternalCubeDSL.g:5583:4: (lv_eachExpression_13_0= ruleXExpression )
+            // InternalCubeDSL.g:5584: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"
+    // InternalCubeDSL.g:5605:1: entryRuleXWhileExpression returns [EObject current=null] : iv_ruleXWhileExpression= ruleXWhileExpression EOF ;
+    public final EObject entryRuleXWhileExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXWhileExpression = null;
+
+
+        try {
+            // InternalCubeDSL.g:5605:57: (iv_ruleXWhileExpression= ruleXWhileExpression EOF )
+            // InternalCubeDSL.g:5606: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"
+    // InternalCubeDSL.g:5612: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 {
+            // InternalCubeDSL.g:5618:2: ( ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) )
+            // InternalCubeDSL.g:5619:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
+            {
+            // InternalCubeDSL.g:5619:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
+            // InternalCubeDSL.g:5620:3: () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) )
+            {
+            // InternalCubeDSL.g:5620:3: ()
+            // InternalCubeDSL.g:5621:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,91,FOLLOW_81); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,44,FOLLOW_43); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2());
+              		
+            }
+            // InternalCubeDSL.g:5635:3: ( (lv_predicate_3_0= ruleXExpression ) )
+            // InternalCubeDSL.g:5636:4: (lv_predicate_3_0= ruleXExpression )
+            {
+            // InternalCubeDSL.g:5636:4: (lv_predicate_3_0= ruleXExpression )
+            // InternalCubeDSL.g:5637:5: lv_predicate_3_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0());
+              				
+            }
+            pushFollow(FOLLOW_41);
+            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,46,FOLLOW_43); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4());
+              		
+            }
+            // InternalCubeDSL.g:5658:3: ( (lv_body_5_0= ruleXExpression ) )
+            // InternalCubeDSL.g:5659:4: (lv_body_5_0= ruleXExpression )
+            {
+            // InternalCubeDSL.g:5659:4: (lv_body_5_0= ruleXExpression )
+            // InternalCubeDSL.g:5660: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"
+    // InternalCubeDSL.g:5681:1: entryRuleXDoWhileExpression returns [EObject current=null] : iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF ;
+    public final EObject entryRuleXDoWhileExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXDoWhileExpression = null;
+
+
+        try {
+            // InternalCubeDSL.g:5681:59: (iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF )
+            // InternalCubeDSL.g:5682: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"
+    // InternalCubeDSL.g:5688: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 {
+            // InternalCubeDSL.g:5694:2: ( ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) )
+            // InternalCubeDSL.g:5695:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
+            {
+            // InternalCubeDSL.g:5695:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
+            // InternalCubeDSL.g:5696:3: () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')'
+            {
+            // InternalCubeDSL.g:5696:3: ()
+            // InternalCubeDSL.g:5697:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,92,FOLLOW_43); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1());
+              		
+            }
+            // InternalCubeDSL.g:5707:3: ( (lv_body_2_0= ruleXExpression ) )
+            // InternalCubeDSL.g:5708:4: (lv_body_2_0= ruleXExpression )
+            {
+            // InternalCubeDSL.g:5708:4: (lv_body_2_0= ruleXExpression )
+            // InternalCubeDSL.g:5709:5: lv_body_2_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_93);
+            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,91,FOLLOW_81); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_3, grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3());
+              		
+            }
+            otherlv_4=(Token)match(input,44,FOLLOW_43); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4());
+              		
+            }
+            // InternalCubeDSL.g:5734:3: ( (lv_predicate_5_0= ruleXExpression ) )
+            // InternalCubeDSL.g:5735:4: (lv_predicate_5_0= ruleXExpression )
+            {
+            // InternalCubeDSL.g:5735:4: (lv_predicate_5_0= ruleXExpression )
+            // InternalCubeDSL.g:5736:5: lv_predicate_5_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0());
+              				
+            }
+            pushFollow(FOLLOW_41);
+            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,46,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"
+    // InternalCubeDSL.g:5761:1: entryRuleXBlockExpression returns [EObject current=null] : iv_ruleXBlockExpression= ruleXBlockExpression EOF ;
+    public final EObject entryRuleXBlockExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXBlockExpression = null;
+
+
+        try {
+            // InternalCubeDSL.g:5761:57: (iv_ruleXBlockExpression= ruleXBlockExpression EOF )
+            // InternalCubeDSL.g:5762: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"
+    // InternalCubeDSL.g:5768: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 {
+            // InternalCubeDSL.g:5774:2: ( ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) )
+            // InternalCubeDSL.g:5775:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
+            {
+            // InternalCubeDSL.g:5775:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
+            // InternalCubeDSL.g:5776:3: () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}'
+            {
+            // InternalCubeDSL.g:5776:3: ()
+            // InternalCubeDSL.g:5777:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,14,FOLLOW_94); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1());
+              		
+            }
+            // InternalCubeDSL.g:5787:3: ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )*
+            loop102:
+            do {
+                int alt102=2;
+                int LA102_0 = input.LA(1);
+
+                if ( ((LA102_0>=RULE_ID && LA102_0<=RULE_DECIMAL)||LA102_0==14||(LA102_0>=37 && LA102_0<=39)||LA102_0==44||(LA102_0>=48 && LA102_0<=49)||LA102_0==56||(LA102_0>=72 && LA102_0<=73)||LA102_0==77||LA102_0==84||LA102_0==86||(LA102_0>=90 && LA102_0<=104)||LA102_0==106) ) {
+                    alt102=1;
+                }
+
+
+                switch (alt102) {
+            	case 1 :
+            	    // InternalCubeDSL.g:5788:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )?
+            	    {
+            	    // InternalCubeDSL.g:5788:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) )
+            	    // InternalCubeDSL.g:5789:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
+            	    {
+            	    // InternalCubeDSL.g:5789:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalCubeDSL.g:5790:6: lv_expressions_2_0= ruleXExpressionOrVarDeclaration
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_95);
+            	    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();
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalCubeDSL.g:5807:4: (otherlv_3= ';' )?
+            	    int alt101=2;
+            	    int LA101_0 = input.LA(1);
+
+            	    if ( (LA101_0==42) ) {
+            	        alt101=1;
+            	    }
+            	    switch (alt101) {
+            	        case 1 :
+            	            // InternalCubeDSL.g:5808:5: otherlv_3= ';'
+            	            {
+            	            otherlv_3=(Token)match(input,42,FOLLOW_94); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              					newLeafNode(otherlv_3, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
+            	              				
+            	            }
+
+            	            }
+            	            break;
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop102;
+                }
+            } 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"
+    // InternalCubeDSL.g:5822:1: entryRuleXExpressionOrVarDeclaration returns [EObject current=null] : iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF ;
+    public final EObject entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXExpressionOrVarDeclaration = null;
+
+
+        try {
+            // InternalCubeDSL.g:5822:68: (iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF )
+            // InternalCubeDSL.g:5823: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"
+    // InternalCubeDSL.g:5829: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 {
+            // InternalCubeDSL.g:5835:2: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) )
+            // InternalCubeDSL.g:5836:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
+            {
+            // InternalCubeDSL.g:5836:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
+            int alt103=2;
+            int LA103_0 = input.LA(1);
+
+            if ( ((LA103_0>=93 && LA103_0<=94)) ) {
+                alt103=1;
+            }
+            else if ( ((LA103_0>=RULE_ID && LA103_0<=RULE_DECIMAL)||LA103_0==14||(LA103_0>=37 && LA103_0<=39)||LA103_0==44||(LA103_0>=48 && LA103_0<=49)||LA103_0==56||(LA103_0>=72 && LA103_0<=73)||LA103_0==77||LA103_0==84||LA103_0==86||(LA103_0>=90 && LA103_0<=92)||(LA103_0>=95 && LA103_0<=104)||LA103_0==106) ) {
+                alt103=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 103, 0, input);
+
+                throw nvae;
+            }
+            switch (alt103) {
+                case 1 :
+                    // InternalCubeDSL.g:5837: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 :
+                    // InternalCubeDSL.g:5846: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"
+    // InternalCubeDSL.g:5858:1: entryRuleXVariableDeclaration returns [EObject current=null] : iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF ;
+    public final EObject entryRuleXVariableDeclaration() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXVariableDeclaration = null;
+
+
+        try {
+            // InternalCubeDSL.g:5858:61: (iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF )
+            // InternalCubeDSL.g:5859: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"
+    // InternalCubeDSL.g:5865: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 {
+            // InternalCubeDSL.g:5871: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 ) ) )? ) )
+            // InternalCubeDSL.g:5872: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 ) ) )? )
+            {
+            // InternalCubeDSL.g:5872: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 ) ) )? )
+            // InternalCubeDSL.g:5873: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 ) ) )?
+            {
+            // InternalCubeDSL.g:5873:3: ()
+            // InternalCubeDSL.g:5874:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalCubeDSL.g:5880:3: ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' )
+            int alt104=2;
+            int LA104_0 = input.LA(1);
+
+            if ( (LA104_0==93) ) {
+                alt104=1;
+            }
+            else if ( (LA104_0==94) ) {
+                alt104=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 104, 0, input);
+
+                throw nvae;
+            }
+            switch (alt104) {
+                case 1 :
+                    // InternalCubeDSL.g:5881:4: ( (lv_writeable_1_0= 'var' ) )
+                    {
+                    // InternalCubeDSL.g:5881:4: ( (lv_writeable_1_0= 'var' ) )
+                    // InternalCubeDSL.g:5882:5: (lv_writeable_1_0= 'var' )
+                    {
+                    // InternalCubeDSL.g:5882:5: (lv_writeable_1_0= 'var' )
+                    // InternalCubeDSL.g:5883:6: lv_writeable_1_0= 'var'
+                    {
+                    lv_writeable_1_0=(Token)match(input,93,FOLLOW_56); 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 :
+                    // InternalCubeDSL.g:5896:4: otherlv_2= 'val'
+                    {
+                    otherlv_2=(Token)match(input,94,FOLLOW_56); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_2, grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalCubeDSL.g:5901:3: ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) )
+            int alt105=2;
+            int LA105_0 = input.LA(1);
+
+            if ( (LA105_0==RULE_ID) ) {
+                int LA105_1 = input.LA(2);
+
+                if ( (synpred35_InternalCubeDSL()) ) {
+                    alt105=1;
+                }
+                else if ( (true) ) {
+                    alt105=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 105, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA105_0==44) && (synpred35_InternalCubeDSL())) {
+                alt105=1;
+            }
+            else if ( (LA105_0==69) && (synpred35_InternalCubeDSL())) {
+                alt105=1;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 105, 0, input);
+
+                throw nvae;
+            }
+            switch (alt105) {
+                case 1 :
+                    // InternalCubeDSL.g:5902:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
+                    {
+                    // InternalCubeDSL.g:5902:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
+                    // InternalCubeDSL.g:5903:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
+                    {
+                    // InternalCubeDSL.g:5916:5: ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
+                    // InternalCubeDSL.g:5917:6: ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) )
+                    {
+                    // InternalCubeDSL.g:5917:6: ( (lv_type_3_0= ruleJvmTypeReference ) )
+                    // InternalCubeDSL.g:5918:7: (lv_type_3_0= ruleJvmTypeReference )
+                    {
+                    // InternalCubeDSL.g:5918:7: (lv_type_3_0= ruleJvmTypeReference )
+                    // InternalCubeDSL.g:5919: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();
+                      							
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalCubeDSL.g:5936:6: ( (lv_name_4_0= ruleValidID ) )
+                    // InternalCubeDSL.g:5937:7: (lv_name_4_0= ruleValidID )
+                    {
+                    // InternalCubeDSL.g:5937:7: (lv_name_4_0= ruleValidID )
+                    // InternalCubeDSL.g:5938:8: lv_name_4_0= ruleValidID
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      								newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0());
+                      							
+                    }
+                    pushFollow(FOLLOW_96);
+                    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 :
+                    // InternalCubeDSL.g:5958:4: ( (lv_name_5_0= ruleValidID ) )
+                    {
+                    // InternalCubeDSL.g:5958:4: ( (lv_name_5_0= ruleValidID ) )
+                    // InternalCubeDSL.g:5959:5: (lv_name_5_0= ruleValidID )
+                    {
+                    // InternalCubeDSL.g:5959:5: (lv_name_5_0= ruleValidID )
+                    // InternalCubeDSL.g:5960:6: lv_name_5_0= ruleValidID
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_96);
+                    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;
+
+            }
+
+            // InternalCubeDSL.g:5978:3: (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
+            int alt106=2;
+            int LA106_0 = input.LA(1);
+
+            if ( (LA106_0==47) ) {
+                alt106=1;
+            }
+            switch (alt106) {
+                case 1 :
+                    // InternalCubeDSL.g:5979:4: otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) )
+                    {
+                    otherlv_6=(Token)match(input,47,FOLLOW_43); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_6, grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0());
+                      			
+                    }
+                    // InternalCubeDSL.g:5983:4: ( (lv_right_7_0= ruleXExpression ) )
+                    // InternalCubeDSL.g:5984:5: (lv_right_7_0= ruleXExpression )
+                    {
+                    // InternalCubeDSL.g:5984:5: (lv_right_7_0= ruleXExpression )
+                    // InternalCubeDSL.g:5985: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"
+    // InternalCubeDSL.g:6007:1: entryRuleJvmFormalParameter returns [EObject current=null] : iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF ;
+    public final EObject entryRuleJvmFormalParameter() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmFormalParameter = null;
+
+
+        try {
+            // InternalCubeDSL.g:6007:59: (iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF )
+            // InternalCubeDSL.g:6008: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"
+    // InternalCubeDSL.g:6014: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 {
+            // InternalCubeDSL.g:6020:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) )
+            // InternalCubeDSL.g:6021:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
+            {
+            // InternalCubeDSL.g:6021:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalCubeDSL.g:6022:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) )
+            {
+            // InternalCubeDSL.g:6022:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )?
+            int alt107=2;
+            int LA107_0 = input.LA(1);
+
+            if ( (LA107_0==RULE_ID) ) {
+                int LA107_1 = input.LA(2);
+
+                if ( (LA107_1==RULE_ID||LA107_1==36||LA107_1==49||LA107_1==56) ) {
+                    alt107=1;
+                }
+            }
+            else if ( (LA107_0==44||LA107_0==69) ) {
+                alt107=1;
+            }
+            switch (alt107) {
+                case 1 :
+                    // InternalCubeDSL.g:6023:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+                    {
+                    // InternalCubeDSL.g:6023:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+                    // InternalCubeDSL.g:6024: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;
+
+            }
+
+            // InternalCubeDSL.g:6041:3: ( (lv_name_1_0= ruleValidID ) )
+            // InternalCubeDSL.g:6042:4: (lv_name_1_0= ruleValidID )
+            {
+            // InternalCubeDSL.g:6042:4: (lv_name_1_0= ruleValidID )
+            // InternalCubeDSL.g:6043: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"
+    // InternalCubeDSL.g:6064:1: entryRuleFullJvmFormalParameter returns [EObject current=null] : iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF ;
+    public final EObject entryRuleFullJvmFormalParameter() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFullJvmFormalParameter = null;
+
+
+        try {
+            // InternalCubeDSL.g:6064:63: (iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF )
+            // InternalCubeDSL.g:6065: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"
+    // InternalCubeDSL.g:6071: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 {
+            // InternalCubeDSL.g:6077:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) )
+            // InternalCubeDSL.g:6078:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
+            {
+            // InternalCubeDSL.g:6078:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalCubeDSL.g:6079:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) )
+            {
+            // InternalCubeDSL.g:6079:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )
+            // InternalCubeDSL.g:6080:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+            {
+            // InternalCubeDSL.g:6080:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+            // InternalCubeDSL.g:6081: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();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalCubeDSL.g:6098:3: ( (lv_name_1_0= ruleValidID ) )
+            // InternalCubeDSL.g:6099:4: (lv_name_1_0= ruleValidID )
+            {
+            // InternalCubeDSL.g:6099:4: (lv_name_1_0= ruleValidID )
+            // InternalCubeDSL.g:6100: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"
+    // InternalCubeDSL.g:6121:1: entryRuleXFeatureCall returns [EObject current=null] : iv_ruleXFeatureCall= ruleXFeatureCall EOF ;
+    public final EObject entryRuleXFeatureCall() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXFeatureCall = null;
+
+
+        try {
+            // InternalCubeDSL.g:6121:53: (iv_ruleXFeatureCall= ruleXFeatureCall EOF )
+            // InternalCubeDSL.g:6122: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"
+    // InternalCubeDSL.g:6128: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 {
+            // InternalCubeDSL.g:6134: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 ) )? ) )
+            // InternalCubeDSL.g:6135: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 ) )? )
+            {
+            // InternalCubeDSL.g:6135: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 ) )? )
+            // InternalCubeDSL.g:6136: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 ) )?
+            {
+            // InternalCubeDSL.g:6136:3: ()
+            // InternalCubeDSL.g:6137:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalCubeDSL.g:6143:3: (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?
+            int alt109=2;
+            int LA109_0 = input.LA(1);
+
+            if ( (LA109_0==56) ) {
+                alt109=1;
+            }
+            switch (alt109) {
+                case 1 :
+                    // InternalCubeDSL.g:6144:4: otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>'
+                    {
+                    otherlv_1=(Token)match(input,56,FOLLOW_68); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_1, grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0());
+                      			
+                    }
+                    // InternalCubeDSL.g:6148:4: ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) )
+                    // InternalCubeDSL.g:6149:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
+                    {
+                    // InternalCubeDSL.g:6149:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalCubeDSL.g:6150:6: lv_typeArguments_2_0= ruleJvmArgumentTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_69);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalCubeDSL.g:6167:4: (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )*
+                    loop108:
+                    do {
+                        int alt108=2;
+                        int LA108_0 = input.LA(1);
+
+                        if ( (LA108_0==45) ) {
+                            alt108=1;
+                        }
+
+
+                        switch (alt108) {
+                    	case 1 :
+                    	    // InternalCubeDSL.g:6168:5: otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    {
+                    	    otherlv_3=(Token)match(input,45,FOLLOW_68); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_3, grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0());
+                    	      				
+                    	    }
+                    	    // InternalCubeDSL.g:6172:5: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalCubeDSL.g:6173:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    	    {
+                    	    // InternalCubeDSL.g:6173:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalCubeDSL.g:6174:7: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_69);
+                    	    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 loop108;
+                        }
+                    } while (true);
+
+                    otherlv_5=(Token)match(input,57,FOLLOW_67); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_5, grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalCubeDSL.g:6197:3: ( ( ruleIdOrSuper ) )
+            // InternalCubeDSL.g:6198:4: ( ruleIdOrSuper )
+            {
+            // InternalCubeDSL.g:6198:4: ( ruleIdOrSuper )
+            // InternalCubeDSL.g:6199: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_97);
+            ruleIdOrSuper();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalCubeDSL.g:6213: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 alt112=2;
+            alt112 = dfa112.predict(input);
+            switch (alt112) {
+                case 1 :
+                    // InternalCubeDSL.g:6214: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= ')'
+                    {
+                    // InternalCubeDSL.g:6214:4: ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) )
+                    // InternalCubeDSL.g:6215:5: ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' )
+                    {
+                    // InternalCubeDSL.g:6219:5: (lv_explicitOperationCall_7_0= '(' )
+                    // InternalCubeDSL.g:6220:6: lv_explicitOperationCall_7_0= '('
+                    {
+                    lv_explicitOperationCall_7_0=(Token)match(input,44,FOLLOW_71); 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, "(");
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalCubeDSL.g:6232:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?
+                    int alt111=3;
+                    alt111 = dfa111.predict(input);
+                    switch (alt111) {
+                        case 1 :
+                            // InternalCubeDSL.g:6233:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
+                            {
+                            // InternalCubeDSL.g:6233:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
+                            // InternalCubeDSL.g:6234:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure )
+                            {
+                            // InternalCubeDSL.g:6259:6: (lv_featureCallArguments_8_0= ruleXShortClosure )
+                            // InternalCubeDSL.g:6260:7: lv_featureCallArguments_8_0= ruleXShortClosure
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              							newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_3_1_0_0());
+                              						
+                            }
+                            pushFollow(FOLLOW_41);
+                            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 :
+                            // InternalCubeDSL.g:6278:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
+                            {
+                            // InternalCubeDSL.g:6278:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
+                            // InternalCubeDSL.g:6279:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
+                            {
+                            // InternalCubeDSL.g:6279:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) )
+                            // InternalCubeDSL.g:6280:7: (lv_featureCallArguments_9_0= ruleXExpression )
+                            {
+                            // InternalCubeDSL.g:6280:7: (lv_featureCallArguments_9_0= ruleXExpression )
+                            // InternalCubeDSL.g:6281:8: lv_featureCallArguments_9_0= ruleXExpression
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_0_0());
+                              							
+                            }
+                            pushFollow(FOLLOW_40);
+                            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();
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+                            // InternalCubeDSL.g:6298:6: (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
+                            loop110:
+                            do {
+                                int alt110=2;
+                                int LA110_0 = input.LA(1);
+
+                                if ( (LA110_0==45) ) {
+                                    alt110=1;
+                                }
+
+
+                                switch (alt110) {
+                            	case 1 :
+                            	    // InternalCubeDSL.g:6299:7: otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) )
+                            	    {
+                            	    otherlv_10=(Token)match(input,45,FOLLOW_43); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      							newLeafNode(otherlv_10, grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0());
+                            	      						
+                            	    }
+                            	    // InternalCubeDSL.g:6303:7: ( (lv_featureCallArguments_11_0= ruleXExpression ) )
+                            	    // InternalCubeDSL.g:6304:8: (lv_featureCallArguments_11_0= ruleXExpression )
+                            	    {
+                            	    // InternalCubeDSL.g:6304:8: (lv_featureCallArguments_11_0= ruleXExpression )
+                            	    // InternalCubeDSL.g:6305:9: lv_featureCallArguments_11_0= ruleXExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+
+                            	      									newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_1_1_0());
+                            	      								
+                            	    }
+                            	    pushFollow(FOLLOW_40);
+                            	    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 loop110;
+                                }
+                            } while (true);
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_12=(Token)match(input,46,FOLLOW_98); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_12, grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalCubeDSL.g:6330:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?
+            int alt113=2;
+            alt113 = dfa113.predict(input);
+            switch (alt113) {
+                case 1 :
+                    // InternalCubeDSL.g:6331:4: ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure )
+                    {
+                    // InternalCubeDSL.g:6337:4: (lv_featureCallArguments_13_0= ruleXClosure )
+                    // InternalCubeDSL.g:6338: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"
+    // InternalCubeDSL.g:6359:1: entryRuleFeatureCallID returns [String current=null] : iv_ruleFeatureCallID= ruleFeatureCallID EOF ;
+    public final String entryRuleFeatureCallID() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleFeatureCallID = null;
+
+
+        try {
+            // InternalCubeDSL.g:6359:53: (iv_ruleFeatureCallID= ruleFeatureCallID EOF )
+            // InternalCubeDSL.g:6360: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"
+    // InternalCubeDSL.g:6366: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 {
+            // InternalCubeDSL.g:6372:2: ( (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) )
+            // InternalCubeDSL.g:6373:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
+            {
+            // InternalCubeDSL.g:6373:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
+            int alt114=5;
+            switch ( input.LA(1) ) {
+            case RULE_ID:
+                {
+                alt114=1;
+                }
+                break;
+            case 95:
+                {
+                alt114=2;
+                }
+                break;
+            case 38:
+                {
+                alt114=3;
+                }
+                break;
+            case 37:
+                {
+                alt114=4;
+                }
+                break;
+            case 39:
+                {
+                alt114=5;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 114, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt114) {
+                case 1 :
+                    // InternalCubeDSL.g:6374: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 :
+                    // InternalCubeDSL.g:6385:3: kw= 'extends'
+                    {
+                    kw=(Token)match(input,95,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1());
+                      		
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // InternalCubeDSL.g:6391:3: kw= 'static'
+                    {
+                    kw=(Token)match(input,38,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2());
+                      		
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // InternalCubeDSL.g:6397:3: kw= 'import'
+                    {
+                    kw=(Token)match(input,37,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getImportKeyword_3());
+                      		
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // InternalCubeDSL.g:6403:3: kw= 'extension'
+                    {
+                    kw=(Token)match(input,39,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"
+    // InternalCubeDSL.g:6412:1: entryRuleIdOrSuper returns [String current=null] : iv_ruleIdOrSuper= ruleIdOrSuper EOF ;
+    public final String entryRuleIdOrSuper() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleIdOrSuper = null;
+
+
+        try {
+            // InternalCubeDSL.g:6412:49: (iv_ruleIdOrSuper= ruleIdOrSuper EOF )
+            // InternalCubeDSL.g:6413: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"
+    // InternalCubeDSL.g:6419: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 {
+            // InternalCubeDSL.g:6425:2: ( (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) )
+            // InternalCubeDSL.g:6426:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
+            {
+            // InternalCubeDSL.g:6426:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
+            int alt115=2;
+            int LA115_0 = input.LA(1);
+
+            if ( (LA115_0==RULE_ID||(LA115_0>=37 && LA115_0<=39)||LA115_0==95) ) {
+                alt115=1;
+            }
+            else if ( (LA115_0==96) ) {
+                alt115=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 115, 0, input);
+
+                throw nvae;
+            }
+            switch (alt115) {
+                case 1 :
+                    // InternalCubeDSL.g:6427: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 :
+                    // InternalCubeDSL.g:6438:3: kw= 'super'
+                    {
+                    kw=(Token)match(input,96,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"
+    // InternalCubeDSL.g:6447:1: entryRuleXConstructorCall returns [EObject current=null] : iv_ruleXConstructorCall= ruleXConstructorCall EOF ;
+    public final EObject entryRuleXConstructorCall() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXConstructorCall = null;
+
+
+        try {
+            // InternalCubeDSL.g:6447:57: (iv_ruleXConstructorCall= ruleXConstructorCall EOF )
+            // InternalCubeDSL.g:6448: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"
+    // InternalCubeDSL.g:6454: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 {
+            // InternalCubeDSL.g:6460: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 ) )? ) )
+            // InternalCubeDSL.g:6461: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 ) )? )
+            {
+            // InternalCubeDSL.g:6461: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 ) )? )
+            // InternalCubeDSL.g:6462: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 ) )?
+            {
+            // InternalCubeDSL.g:6462:3: ()
+            // InternalCubeDSL.g:6463:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,97,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXConstructorCallAccess().getNewKeyword_1());
+              		
+            }
+            // InternalCubeDSL.g:6473:3: ( ( ruleQualifiedName ) )
+            // InternalCubeDSL.g:6474:4: ( ruleQualifiedName )
+            {
+            // InternalCubeDSL.g:6474:4: ( ruleQualifiedName )
+            // InternalCubeDSL.g:6475: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_99);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalCubeDSL.g:6489:3: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?
+            int alt117=2;
+            alt117 = dfa117.predict(input);
+            switch (alt117) {
+                case 1 :
+                    // InternalCubeDSL.g:6490:4: ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>'
+                    {
+                    // InternalCubeDSL.g:6490:4: ( ( '<' )=>otherlv_3= '<' )
+                    // InternalCubeDSL.g:6491:5: ( '<' )=>otherlv_3= '<'
+                    {
+                    otherlv_3=(Token)match(input,56,FOLLOW_68); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_3, grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0());
+                      				
+                    }
+
+                    }
+
+                    // InternalCubeDSL.g:6497:4: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    // InternalCubeDSL.g:6498:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    {
+                    // InternalCubeDSL.g:6498:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    // InternalCubeDSL.g:6499:6: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_69);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalCubeDSL.g:6516:4: (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )*
+                    loop116:
+                    do {
+                        int alt116=2;
+                        int LA116_0 = input.LA(1);
+
+                        if ( (LA116_0==45) ) {
+                            alt116=1;
+                        }
+
+
+                        switch (alt116) {
+                    	case 1 :
+                    	    // InternalCubeDSL.g:6517:5: otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
+                    	    {
+                    	    otherlv_5=(Token)match(input,45,FOLLOW_68); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_5, grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0());
+                    	      				
+                    	    }
+                    	    // InternalCubeDSL.g:6521:5: ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalCubeDSL.g:6522:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
+                    	    {
+                    	    // InternalCubeDSL.g:6522:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
+                    	    // InternalCubeDSL.g:6523:7: lv_typeArguments_6_0= ruleJvmArgumentTypeReference
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_69);
+                    	    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 loop116;
+                        }
+                    } while (true);
+
+                    otherlv_7=(Token)match(input,57,FOLLOW_97); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_7, grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalCubeDSL.g:6546: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 alt120=2;
+            alt120 = dfa120.predict(input);
+            switch (alt120) {
+                case 1 :
+                    // InternalCubeDSL.g:6547: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= ')'
+                    {
+                    // InternalCubeDSL.g:6547:4: ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) )
+                    // InternalCubeDSL.g:6548:5: ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' )
+                    {
+                    // InternalCubeDSL.g:6552:5: (lv_explicitConstructorCall_8_0= '(' )
+                    // InternalCubeDSL.g:6553:6: lv_explicitConstructorCall_8_0= '('
+                    {
+                    lv_explicitConstructorCall_8_0=(Token)match(input,44,FOLLOW_71); 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, "(");
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalCubeDSL.g:6565:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?
+                    int alt119=3;
+                    alt119 = dfa119.predict(input);
+                    switch (alt119) {
+                        case 1 :
+                            // InternalCubeDSL.g:6566:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
+                            {
+                            // InternalCubeDSL.g:6566:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
+                            // InternalCubeDSL.g:6567:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure )
+                            {
+                            // InternalCubeDSL.g:6592:6: (lv_arguments_9_0= ruleXShortClosure )
+                            // InternalCubeDSL.g:6593:7: lv_arguments_9_0= ruleXShortClosure
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              							newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_4_1_0_0());
+                              						
+                            }
+                            pushFollow(FOLLOW_41);
+                            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 :
+                            // InternalCubeDSL.g:6611:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
+                            {
+                            // InternalCubeDSL.g:6611:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
+                            // InternalCubeDSL.g:6612:6: ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
+                            {
+                            // InternalCubeDSL.g:6612:6: ( (lv_arguments_10_0= ruleXExpression ) )
+                            // InternalCubeDSL.g:6613:7: (lv_arguments_10_0= ruleXExpression )
+                            {
+                            // InternalCubeDSL.g:6613:7: (lv_arguments_10_0= ruleXExpression )
+                            // InternalCubeDSL.g:6614:8: lv_arguments_10_0= ruleXExpression
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0_0());
+                              							
+                            }
+                            pushFollow(FOLLOW_40);
+                            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();
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+                            // InternalCubeDSL.g:6631:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
+                            loop118:
+                            do {
+                                int alt118=2;
+                                int LA118_0 = input.LA(1);
+
+                                if ( (LA118_0==45) ) {
+                                    alt118=1;
+                                }
+
+
+                                switch (alt118) {
+                            	case 1 :
+                            	    // InternalCubeDSL.g:6632:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) )
+                            	    {
+                            	    otherlv_11=(Token)match(input,45,FOLLOW_43); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      							newLeafNode(otherlv_11, grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0());
+                            	      						
+                            	    }
+                            	    // InternalCubeDSL.g:6636:7: ( (lv_arguments_12_0= ruleXExpression ) )
+                            	    // InternalCubeDSL.g:6637:8: (lv_arguments_12_0= ruleXExpression )
+                            	    {
+                            	    // InternalCubeDSL.g:6637:8: (lv_arguments_12_0= ruleXExpression )
+                            	    // InternalCubeDSL.g:6638:9: lv_arguments_12_0= ruleXExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+
+                            	      									newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_1_1_0());
+                            	      								
+                            	    }
+                            	    pushFollow(FOLLOW_40);
+                            	    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 loop118;
+                                }
+                            } while (true);
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_13=(Token)match(input,46,FOLLOW_98); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_13, grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalCubeDSL.g:6663:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
+            int alt121=2;
+            alt121 = dfa121.predict(input);
+            switch (alt121) {
+                case 1 :
+                    // InternalCubeDSL.g:6664:4: ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure )
+                    {
+                    // InternalCubeDSL.g:6670:4: (lv_arguments_14_0= ruleXClosure )
+                    // InternalCubeDSL.g:6671: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"
+    // InternalCubeDSL.g:6692:1: entryRuleXBooleanLiteral returns [EObject current=null] : iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF ;
+    public final EObject entryRuleXBooleanLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXBooleanLiteral = null;
+
+
+        try {
+            // InternalCubeDSL.g:6692:56: (iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF )
+            // InternalCubeDSL.g:6693: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"
+    // InternalCubeDSL.g:6699: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 {
+            // InternalCubeDSL.g:6705:2: ( ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) )
+            // InternalCubeDSL.g:6706:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
+            {
+            // InternalCubeDSL.g:6706:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
+            // InternalCubeDSL.g:6707:3: () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
+            {
+            // InternalCubeDSL.g:6707:3: ()
+            // InternalCubeDSL.g:6708:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalCubeDSL.g:6714:3: (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
+            int alt122=2;
+            int LA122_0 = input.LA(1);
+
+            if ( (LA122_0==98) ) {
+                alt122=1;
+            }
+            else if ( (LA122_0==99) ) {
+                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 :
+                    // InternalCubeDSL.g:6715:4: otherlv_1= 'false'
+                    {
+                    otherlv_1=(Token)match(input,98,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_1, grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0());
+                      			
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:6720:4: ( (lv_isTrue_2_0= 'true' ) )
+                    {
+                    // InternalCubeDSL.g:6720:4: ( (lv_isTrue_2_0= 'true' ) )
+                    // InternalCubeDSL.g:6721:5: (lv_isTrue_2_0= 'true' )
+                    {
+                    // InternalCubeDSL.g:6721:5: (lv_isTrue_2_0= 'true' )
+                    // InternalCubeDSL.g:6722:6: lv_isTrue_2_0= 'true'
+                    {
+                    lv_isTrue_2_0=(Token)match(input,99,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"
+    // InternalCubeDSL.g:6739:1: entryRuleXNullLiteral returns [EObject current=null] : iv_ruleXNullLiteral= ruleXNullLiteral EOF ;
+    public final EObject entryRuleXNullLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXNullLiteral = null;
+
+
+        try {
+            // InternalCubeDSL.g:6739:53: (iv_ruleXNullLiteral= ruleXNullLiteral EOF )
+            // InternalCubeDSL.g:6740: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"
+    // InternalCubeDSL.g:6746:1: ruleXNullLiteral returns [EObject current=null] : ( () otherlv_1= 'null' ) ;
+    public final EObject ruleXNullLiteral() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalCubeDSL.g:6752:2: ( ( () otherlv_1= 'null' ) )
+            // InternalCubeDSL.g:6753:2: ( () otherlv_1= 'null' )
+            {
+            // InternalCubeDSL.g:6753:2: ( () otherlv_1= 'null' )
+            // InternalCubeDSL.g:6754:3: () otherlv_1= 'null'
+            {
+            // InternalCubeDSL.g:6754:3: ()
+            // InternalCubeDSL.g:6755:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,100,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"
+    // InternalCubeDSL.g:6769:1: entryRuleXNumberLiteral returns [EObject current=null] : iv_ruleXNumberLiteral= ruleXNumberLiteral EOF ;
+    public final EObject entryRuleXNumberLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXNumberLiteral = null;
+
+
+        try {
+            // InternalCubeDSL.g:6769:55: (iv_ruleXNumberLiteral= ruleXNumberLiteral EOF )
+            // InternalCubeDSL.g:6770: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"
+    // InternalCubeDSL.g:6776: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 {
+            // InternalCubeDSL.g:6782:2: ( ( () ( (lv_value_1_0= ruleNumber ) ) ) )
+            // InternalCubeDSL.g:6783:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
+            {
+            // InternalCubeDSL.g:6783:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
+            // InternalCubeDSL.g:6784:3: () ( (lv_value_1_0= ruleNumber ) )
+            {
+            // InternalCubeDSL.g:6784:3: ()
+            // InternalCubeDSL.g:6785:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalCubeDSL.g:6791:3: ( (lv_value_1_0= ruleNumber ) )
+            // InternalCubeDSL.g:6792:4: (lv_value_1_0= ruleNumber )
+            {
+            // InternalCubeDSL.g:6792:4: (lv_value_1_0= ruleNumber )
+            // InternalCubeDSL.g:6793: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"
+    // InternalCubeDSL.g:6814:1: entryRuleXStringLiteral returns [EObject current=null] : iv_ruleXStringLiteral= ruleXStringLiteral EOF ;
+    public final EObject entryRuleXStringLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXStringLiteral = null;
+
+
+        try {
+            // InternalCubeDSL.g:6814:55: (iv_ruleXStringLiteral= ruleXStringLiteral EOF )
+            // InternalCubeDSL.g:6815: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"
+    // InternalCubeDSL.g:6821: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 {
+            // InternalCubeDSL.g:6827:2: ( ( () ( (lv_value_1_0= RULE_STRING ) ) ) )
+            // InternalCubeDSL.g:6828:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
+            {
+            // InternalCubeDSL.g:6828:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
+            // InternalCubeDSL.g:6829:3: () ( (lv_value_1_0= RULE_STRING ) )
+            {
+            // InternalCubeDSL.g:6829:3: ()
+            // InternalCubeDSL.g:6830:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalCubeDSL.g:6836:3: ( (lv_value_1_0= RULE_STRING ) )
+            // InternalCubeDSL.g:6837:4: (lv_value_1_0= RULE_STRING )
+            {
+            // InternalCubeDSL.g:6837:4: (lv_value_1_0= RULE_STRING )
+            // InternalCubeDSL.g:6838: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"
+    // InternalCubeDSL.g:6858:1: entryRuleXTypeLiteral returns [EObject current=null] : iv_ruleXTypeLiteral= ruleXTypeLiteral EOF ;
+    public final EObject entryRuleXTypeLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXTypeLiteral = null;
+
+
+        try {
+            // InternalCubeDSL.g:6858:53: (iv_ruleXTypeLiteral= ruleXTypeLiteral EOF )
+            // InternalCubeDSL.g:6859: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"
+    // InternalCubeDSL.g:6865: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 {
+            // InternalCubeDSL.g:6871:2: ( ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) )
+            // InternalCubeDSL.g:6872:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
+            {
+            // InternalCubeDSL.g:6872:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
+            // InternalCubeDSL.g:6873:3: () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')'
+            {
+            // InternalCubeDSL.g:6873:3: ()
+            // InternalCubeDSL.g:6874:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,101,FOLLOW_81); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,44,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
+              		
+            }
+            // InternalCubeDSL.g:6888:3: ( ( ruleQualifiedName ) )
+            // InternalCubeDSL.g:6889:4: ( ruleQualifiedName )
+            {
+            // InternalCubeDSL.g:6889:4: ( ruleQualifiedName )
+            // InternalCubeDSL.g:6890: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_100);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalCubeDSL.g:6904:3: ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )*
+            loop123:
+            do {
+                int alt123=2;
+                int LA123_0 = input.LA(1);
+
+                if ( (LA123_0==49) ) {
+                    alt123=1;
+                }
+
+
+                switch (alt123) {
+            	case 1 :
+            	    // InternalCubeDSL.g:6905:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
+            	    {
+            	    // InternalCubeDSL.g:6905:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
+            	    // InternalCubeDSL.g:6906:5: lv_arrayDimensions_4_0= ruleArrayBrackets
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      					newCompositeNode(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0());
+            	      				
+            	    }
+            	    pushFollow(FOLLOW_100);
+            	    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 loop123;
+                }
+            } while (true);
+
+            otherlv_5=(Token)match(input,46,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"
+    // InternalCubeDSL.g:6931:1: entryRuleXThrowExpression returns [EObject current=null] : iv_ruleXThrowExpression= ruleXThrowExpression EOF ;
+    public final EObject entryRuleXThrowExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXThrowExpression = null;
+
+
+        try {
+            // InternalCubeDSL.g:6931:57: (iv_ruleXThrowExpression= ruleXThrowExpression EOF )
+            // InternalCubeDSL.g:6932: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"
+    // InternalCubeDSL.g:6938: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 {
+            // InternalCubeDSL.g:6944:2: ( ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) )
+            // InternalCubeDSL.g:6945:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
+            {
+            // InternalCubeDSL.g:6945:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
+            // InternalCubeDSL.g:6946:3: () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) )
+            {
+            // InternalCubeDSL.g:6946:3: ()
+            // InternalCubeDSL.g:6947:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,102,FOLLOW_43); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1());
+              		
+            }
+            // InternalCubeDSL.g:6957:3: ( (lv_expression_2_0= ruleXExpression ) )
+            // InternalCubeDSL.g:6958:4: (lv_expression_2_0= ruleXExpression )
+            {
+            // InternalCubeDSL.g:6958:4: (lv_expression_2_0= ruleXExpression )
+            // InternalCubeDSL.g:6959: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"
+    // InternalCubeDSL.g:6980:1: entryRuleXReturnExpression returns [EObject current=null] : iv_ruleXReturnExpression= ruleXReturnExpression EOF ;
+    public final EObject entryRuleXReturnExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXReturnExpression = null;
+
+
+        try {
+            // InternalCubeDSL.g:6980:58: (iv_ruleXReturnExpression= ruleXReturnExpression EOF )
+            // InternalCubeDSL.g:6981: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"
+    // InternalCubeDSL.g:6987: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 {
+            // InternalCubeDSL.g:6993: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 ) )? ) )
+            // InternalCubeDSL.g:6994: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 ) )? )
+            {
+            // InternalCubeDSL.g:6994: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 ) )? )
+            // InternalCubeDSL.g:6995: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 ) )?
+            {
+            // InternalCubeDSL.g:6995:3: ()
+            // InternalCubeDSL.g:6996:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,103,FOLLOW_101); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1());
+              		
+            }
+            // InternalCubeDSL.g:7006: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 alt124=2;
+            alt124 = dfa124.predict(input);
+            switch (alt124) {
+                case 1 :
+                    // InternalCubeDSL.g:7007: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 )
+                    {
+                    // InternalCubeDSL.g:7008:4: (lv_expression_2_0= ruleXExpression )
+                    // InternalCubeDSL.g:7009: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"
+    // InternalCubeDSL.g:7030:1: entryRuleXTryCatchFinallyExpression returns [EObject current=null] : iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF ;
+    public final EObject entryRuleXTryCatchFinallyExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXTryCatchFinallyExpression = null;
+
+
+        try {
+            // InternalCubeDSL.g:7030:67: (iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF )
+            // InternalCubeDSL.g:7031: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"
+    // InternalCubeDSL.g:7037: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 {
+            // InternalCubeDSL.g:7043: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 ) ) ) ) ) )
+            // InternalCubeDSL.g:7044: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 ) ) ) ) )
+            {
+            // InternalCubeDSL.g:7044: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 ) ) ) ) )
+            // InternalCubeDSL.g:7045: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 ) ) ) )
+            {
+            // InternalCubeDSL.g:7045:3: ()
+            // InternalCubeDSL.g:7046:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,104,FOLLOW_43); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1());
+              		
+            }
+            // InternalCubeDSL.g:7056:3: ( (lv_expression_2_0= ruleXExpression ) )
+            // InternalCubeDSL.g:7057:4: (lv_expression_2_0= ruleXExpression )
+            {
+            // InternalCubeDSL.g:7057:4: (lv_expression_2_0= ruleXExpression )
+            // InternalCubeDSL.g:7058:5: lv_expression_2_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_102);
+            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();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalCubeDSL.g:7075: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 alt127=2;
+            int LA127_0 = input.LA(1);
+
+            if ( (LA127_0==107) ) {
+                alt127=1;
+            }
+            else if ( (LA127_0==105) ) {
+                alt127=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 127, 0, input);
+
+                throw nvae;
+            }
+            switch (alt127) {
+                case 1 :
+                    // InternalCubeDSL.g:7076:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
+                    {
+                    // InternalCubeDSL.g:7076:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
+                    // InternalCubeDSL.g:7077:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
+                    {
+                    // InternalCubeDSL.g:7077:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+
+                    int cnt125=0;
+                    loop125:
+                    do {
+                        int alt125=2;
+                        int LA125_0 = input.LA(1);
+
+                        if ( (LA125_0==107) ) {
+                            int LA125_2 = input.LA(2);
+
+                            if ( (synpred44_InternalCubeDSL()) ) {
+                                alt125=1;
+                            }
+
+
+                        }
+
+
+                        switch (alt125) {
+                    	case 1 :
+                    	    // InternalCubeDSL.g:7078:6: ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause )
+                    	    {
+                    	    // InternalCubeDSL.g:7079:6: (lv_catchClauses_3_0= ruleXCatchClause )
+                    	    // InternalCubeDSL.g:7080:7: lv_catchClauses_3_0= ruleXCatchClause
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_103);
+                    	    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 ( cnt125 >= 1 ) break loop125;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(125, input);
+                                throw eee;
+                        }
+                        cnt125++;
+                    } while (true);
+
+                    // InternalCubeDSL.g:7097:5: ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
+                    int alt126=2;
+                    int LA126_0 = input.LA(1);
+
+                    if ( (LA126_0==105) ) {
+                        int LA126_1 = input.LA(2);
+
+                        if ( (synpred45_InternalCubeDSL()) ) {
+                            alt126=1;
+                        }
+                    }
+                    switch (alt126) {
+                        case 1 :
+                            // InternalCubeDSL.g:7098:6: ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) )
+                            {
+                            // InternalCubeDSL.g:7098:6: ( ( 'finally' )=>otherlv_4= 'finally' )
+                            // InternalCubeDSL.g:7099:7: ( 'finally' )=>otherlv_4= 'finally'
+                            {
+                            otherlv_4=(Token)match(input,105,FOLLOW_43); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              							newLeafNode(otherlv_4, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0());
+                              						
+                            }
+
+                            }
+
+                            // InternalCubeDSL.g:7105:6: ( (lv_finallyExpression_5_0= ruleXExpression ) )
+                            // InternalCubeDSL.g:7106:7: (lv_finallyExpression_5_0= ruleXExpression )
+                            {
+                            // InternalCubeDSL.g:7106:7: (lv_finallyExpression_5_0= ruleXExpression )
+                            // InternalCubeDSL.g:7107: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 :
+                    // InternalCubeDSL.g:7127:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
+                    {
+                    // InternalCubeDSL.g:7127:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
+                    // InternalCubeDSL.g:7128:5: otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) )
+                    {
+                    otherlv_6=(Token)match(input,105,FOLLOW_43); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_6, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0());
+                      				
+                    }
+                    // InternalCubeDSL.g:7132:5: ( (lv_finallyExpression_7_0= ruleXExpression ) )
+                    // InternalCubeDSL.g:7133:6: (lv_finallyExpression_7_0= ruleXExpression )
+                    {
+                    // InternalCubeDSL.g:7133:6: (lv_finallyExpression_7_0= ruleXExpression )
+                    // InternalCubeDSL.g:7134: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"
+    // InternalCubeDSL.g:7157:1: entryRuleXSynchronizedExpression returns [EObject current=null] : iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF ;
+    public final EObject entryRuleXSynchronizedExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXSynchronizedExpression = null;
+
+
+        try {
+            // InternalCubeDSL.g:7157:64: (iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF )
+            // InternalCubeDSL.g:7158: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"
+    // InternalCubeDSL.g:7164: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 {
+            // InternalCubeDSL.g:7170:2: ( ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) ) )
+            // InternalCubeDSL.g:7171:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
+            {
+            // InternalCubeDSL.g:7171:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalCubeDSL.g:7172:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) )
+            {
+            // InternalCubeDSL.g:7172:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) )
+            // InternalCubeDSL.g:7173:4: ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' )
+            {
+            // InternalCubeDSL.g:7180:4: ( () otherlv_1= 'synchronized' otherlv_2= '(' )
+            // InternalCubeDSL.g:7181:5: () otherlv_1= 'synchronized' otherlv_2= '('
+            {
+            // InternalCubeDSL.g:7181:5: ()
+            // InternalCubeDSL.g:7182:6: 
+            {
+            if ( state.backtracking==0 ) {
+
+              						current = forceCreateModelElement(
+              							grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0(),
+              							current);
+              					
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,106,FOLLOW_81); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_1, grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1());
+              				
+            }
+            otherlv_2=(Token)match(input,44,FOLLOW_43); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_2, grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2());
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalCubeDSL.g:7198:3: ( (lv_param_3_0= ruleXExpression ) )
+            // InternalCubeDSL.g:7199:4: (lv_param_3_0= ruleXExpression )
+            {
+            // InternalCubeDSL.g:7199:4: (lv_param_3_0= ruleXExpression )
+            // InternalCubeDSL.g:7200:5: lv_param_3_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0());
+              				
+            }
+            pushFollow(FOLLOW_41);
+            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,46,FOLLOW_43); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2());
+              		
+            }
+            // InternalCubeDSL.g:7221:3: ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalCubeDSL.g:7222:4: (lv_expression_5_0= ruleXExpression )
+            {
+            // InternalCubeDSL.g:7222:4: (lv_expression_5_0= ruleXExpression )
+            // InternalCubeDSL.g:7223: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"
+    // InternalCubeDSL.g:7244:1: entryRuleXCatchClause returns [EObject current=null] : iv_ruleXCatchClause= ruleXCatchClause EOF ;
+    public final EObject entryRuleXCatchClause() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXCatchClause = null;
+
+
+        try {
+            // InternalCubeDSL.g:7244:53: (iv_ruleXCatchClause= ruleXCatchClause EOF )
+            // InternalCubeDSL.g:7245: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"
+    // InternalCubeDSL.g:7251: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 {
+            // InternalCubeDSL.g:7257:2: ( ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) )
+            // InternalCubeDSL.g:7258:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
+            {
+            // InternalCubeDSL.g:7258:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
+            // InternalCubeDSL.g:7259:3: ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) )
+            {
+            // InternalCubeDSL.g:7259:3: ( ( 'catch' )=>otherlv_0= 'catch' )
+            // InternalCubeDSL.g:7260:4: ( 'catch' )=>otherlv_0= 'catch'
+            {
+            otherlv_0=(Token)match(input,107,FOLLOW_81); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              				newLeafNode(otherlv_0, grammarAccess.getXCatchClauseAccess().getCatchKeyword_0());
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,44,FOLLOW_56); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1());
+              		
+            }
+            // InternalCubeDSL.g:7270:3: ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) )
+            // InternalCubeDSL.g:7271:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
+            {
+            // InternalCubeDSL.g:7271:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
+            // InternalCubeDSL.g:7272:5: lv_declaredParam_2_0= ruleFullJvmFormalParameter
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_41);
+            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,46,FOLLOW_43); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_3, grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3());
+              		
+            }
+            // InternalCubeDSL.g:7293:3: ( (lv_expression_4_0= ruleXExpression ) )
+            // InternalCubeDSL.g:7294:4: (lv_expression_4_0= ruleXExpression )
+            {
+            // InternalCubeDSL.g:7294:4: (lv_expression_4_0= ruleXExpression )
+            // InternalCubeDSL.g:7295: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"
+    // InternalCubeDSL.g:7316:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
+    public final String entryRuleQualifiedName() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;
+
+
+        try {
+            // InternalCubeDSL.g:7316:53: (iv_ruleQualifiedName= ruleQualifiedName EOF )
+            // InternalCubeDSL.g:7317: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"
+    // InternalCubeDSL.g:7323: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 {
+            // InternalCubeDSL.g:7329:2: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
+            // InternalCubeDSL.g:7330:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
+            {
+            // InternalCubeDSL.g:7330:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
+            // InternalCubeDSL.g:7331:3: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_33);
+            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();
+              		
+            }
+            // InternalCubeDSL.g:7341:3: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
+            loop128:
+            do {
+                int alt128=2;
+                int LA128_0 = input.LA(1);
+
+                if ( (LA128_0==36) ) {
+                    int LA128_2 = input.LA(2);
+
+                    if ( (LA128_2==RULE_ID) ) {
+                        int LA128_3 = input.LA(3);
+
+                        if ( (synpred48_InternalCubeDSL()) ) {
+                            alt128=1;
+                        }
+
+
+                    }
+
+
+                }
+
+
+                switch (alt128) {
+            	case 1 :
+            	    // InternalCubeDSL.g:7342:4: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
+            	    {
+            	    // InternalCubeDSL.g:7342:4: ( ( '.' )=>kw= '.' )
+            	    // InternalCubeDSL.g:7343:5: ( '.' )=>kw= '.'
+            	    {
+            	    kw=(Token)match(input,36,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_33);
+            	    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 loop128;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleQualifiedName"
+
+
+    // $ANTLR start "entryRuleNumber"
+    // InternalCubeDSL.g:7365: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 {
+            // InternalCubeDSL.g:7367:2: (iv_ruleNumber= ruleNumber EOF )
+            // InternalCubeDSL.g:7368: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"
+    // InternalCubeDSL.g:7377: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 {
+            // InternalCubeDSL.g:7384: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 ) )? ) ) )
+            // InternalCubeDSL.g:7385: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 ) )? ) )
+            {
+            // InternalCubeDSL.g:7385: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 alt132=2;
+            int LA132_0 = input.LA(1);
+
+            if ( (LA132_0==RULE_HEX) ) {
+                alt132=1;
+            }
+            else if ( ((LA132_0>=RULE_INT && LA132_0<=RULE_DECIMAL)) ) {
+                alt132=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 132, 0, input);
+
+                throw nvae;
+            }
+            switch (alt132) {
+                case 1 :
+                    // InternalCubeDSL.g:7386: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 :
+                    // InternalCubeDSL.g:7394:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
+                    {
+                    // InternalCubeDSL.g:7394:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
+                    // InternalCubeDSL.g:7395:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
+                    {
+                    // InternalCubeDSL.g:7395:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL )
+                    int alt129=2;
+                    int LA129_0 = input.LA(1);
+
+                    if ( (LA129_0==RULE_INT) ) {
+                        alt129=1;
+                    }
+                    else if ( (LA129_0==RULE_DECIMAL) ) {
+                        alt129=2;
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 129, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt129) {
+                        case 1 :
+                            // InternalCubeDSL.g:7396:5: this_INT_1= RULE_INT
+                            {
+                            this_INT_1=(Token)match(input,RULE_INT,FOLLOW_33); 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 :
+                            // InternalCubeDSL.g:7404:5: this_DECIMAL_2= RULE_DECIMAL
+                            {
+                            this_DECIMAL_2=(Token)match(input,RULE_DECIMAL,FOLLOW_33); 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;
+
+                    }
+
+                    // InternalCubeDSL.g:7412:4: (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
+                    int alt131=2;
+                    int LA131_0 = input.LA(1);
+
+                    if ( (LA131_0==36) ) {
+                        int LA131_1 = input.LA(2);
+
+                        if ( ((LA131_1>=RULE_INT && LA131_1<=RULE_DECIMAL)) ) {
+                            alt131=1;
+                        }
+                    }
+                    switch (alt131) {
+                        case 1 :
+                            // InternalCubeDSL.g:7413:5: kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
+                            {
+                            kw=(Token)match(input,36,FOLLOW_104); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              					current.merge(kw);
+                              					newLeafNode(kw, grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0());
+                              				
+                            }
+                            // InternalCubeDSL.g:7418:5: (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
+                            int alt130=2;
+                            int LA130_0 = input.LA(1);
+
+                            if ( (LA130_0==RULE_INT) ) {
+                                alt130=1;
+                            }
+                            else if ( (LA130_0==RULE_DECIMAL) ) {
+                                alt130=2;
+                            }
+                            else {
+                                if (state.backtracking>0) {state.failed=true; return current;}
+                                NoViableAltException nvae =
+                                    new NoViableAltException("", 130, 0, input);
+
+                                throw nvae;
+                            }
+                            switch (alt130) {
+                                case 1 :
+                                    // InternalCubeDSL.g:7419: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 :
+                                    // InternalCubeDSL.g:7427: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"
+    // InternalCubeDSL.g:7444:1: entryRuleJvmTypeReference returns [EObject current=null] : iv_ruleJvmTypeReference= ruleJvmTypeReference EOF ;
+    public final EObject entryRuleJvmTypeReference() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmTypeReference = null;
+
+
+        try {
+            // InternalCubeDSL.g:7444:57: (iv_ruleJvmTypeReference= ruleJvmTypeReference EOF )
+            // InternalCubeDSL.g:7445: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"
+    // InternalCubeDSL.g:7451: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 {
+            // InternalCubeDSL.g:7457:2: ( ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) )
+            // InternalCubeDSL.g:7458:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
+            {
+            // InternalCubeDSL.g:7458:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
+            int alt134=2;
+            int LA134_0 = input.LA(1);
+
+            if ( (LA134_0==RULE_ID) ) {
+                alt134=1;
+            }
+            else if ( (LA134_0==44||LA134_0==69) ) {
+                alt134=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 134, 0, input);
+
+                throw nvae;
+            }
+            switch (alt134) {
+                case 1 :
+                    // InternalCubeDSL.g:7459:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
+                    {
+                    // InternalCubeDSL.g:7459:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
+                    // InternalCubeDSL.g:7460:4: this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      				newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0());
+                      			
+                    }
+                    pushFollow(FOLLOW_98);
+                    this_JvmParameterizedTypeReference_0=ruleJvmParameterizedTypeReference();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = this_JvmParameterizedTypeReference_0;
+                      				afterParserOrEnumRuleCall();
+                      			
+                    }
+                    // InternalCubeDSL.g:7468:4: ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
+                    loop133:
+                    do {
+                        int alt133=2;
+                        int LA133_0 = input.LA(1);
+
+                        if ( (LA133_0==49) ) {
+                            int LA133_2 = input.LA(2);
+
+                            if ( (LA133_2==50) ) {
+                                int LA133_3 = input.LA(3);
+
+                                if ( (synpred49_InternalCubeDSL()) ) {
+                                    alt133=1;
+                                }
+
+
+                            }
+
+
+                        }
+
+
+                        switch (alt133) {
+                    	case 1 :
+                    	    // InternalCubeDSL.g:7469:5: ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets )
+                    	    {
+                    	    // InternalCubeDSL.g:7475:5: ( () ruleArrayBrackets )
+                    	    // InternalCubeDSL.g:7476:6: () ruleArrayBrackets
+                    	    {
+                    	    // InternalCubeDSL.g:7476:6: ()
+                    	    // InternalCubeDSL.g:7477: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_98);
+                    	    ruleArrayBrackets();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      						afterParserOrEnumRuleCall();
+                    	      					
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop133;
+                        }
+                    } while (true);
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:7494: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"
+    // InternalCubeDSL.g:7506:1: entryRuleArrayBrackets returns [String current=null] : iv_ruleArrayBrackets= ruleArrayBrackets EOF ;
+    public final String entryRuleArrayBrackets() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleArrayBrackets = null;
+
+
+        try {
+            // InternalCubeDSL.g:7506:53: (iv_ruleArrayBrackets= ruleArrayBrackets EOF )
+            // InternalCubeDSL.g:7507: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"
+    // InternalCubeDSL.g:7513:1: ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '[' kw= ']' ) ;
+    public final AntlrDatatypeRuleToken ruleArrayBrackets() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalCubeDSL.g:7519:2: ( (kw= '[' kw= ']' ) )
+            // InternalCubeDSL.g:7520:2: (kw= '[' kw= ']' )
+            {
+            // InternalCubeDSL.g:7520:2: (kw= '[' kw= ']' )
+            // InternalCubeDSL.g:7521:3: kw= '[' kw= ']'
+            {
+            kw=(Token)match(input,49,FOLLOW_78); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current.merge(kw);
+              			newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0());
+              		
+            }
+            kw=(Token)match(input,50,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"
+    // InternalCubeDSL.g:7535:1: entryRuleXFunctionTypeRef returns [EObject current=null] : iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF ;
+    public final EObject entryRuleXFunctionTypeRef() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXFunctionTypeRef = null;
+
+
+        try {
+            // InternalCubeDSL.g:7535:57: (iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF )
+            // InternalCubeDSL.g:7536: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"
+    // InternalCubeDSL.g:7542: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 {
+            // InternalCubeDSL.g:7548:2: ( ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) )
+            // InternalCubeDSL.g:7549:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
+            {
+            // InternalCubeDSL.g:7549:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
+            // InternalCubeDSL.g:7550:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) )
+            {
+            // InternalCubeDSL.g:7550:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )?
+            int alt137=2;
+            int LA137_0 = input.LA(1);
+
+            if ( (LA137_0==44) ) {
+                alt137=1;
+            }
+            switch (alt137) {
+                case 1 :
+                    // InternalCubeDSL.g:7551:4: otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')'
+                    {
+                    otherlv_0=(Token)match(input,44,FOLLOW_105); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
+                      			
+                    }
+                    // InternalCubeDSL.g:7555:4: ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )?
+                    int alt136=2;
+                    int LA136_0 = input.LA(1);
+
+                    if ( (LA136_0==RULE_ID||LA136_0==44||LA136_0==69) ) {
+                        alt136=1;
+                    }
+                    switch (alt136) {
+                        case 1 :
+                            // InternalCubeDSL.g:7556:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
+                            {
+                            // InternalCubeDSL.g:7556:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) )
+                            // InternalCubeDSL.g:7557:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
+                            {
+                            // InternalCubeDSL.g:7557:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
+                            // InternalCubeDSL.g:7558:7: lv_paramTypes_1_0= ruleJvmTypeReference
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              							newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0());
+                              						
+                            }
+                            pushFollow(FOLLOW_40);
+                            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();
+                              						
+                            }
+
+                            }
+
+
+                            }
+
+                            // InternalCubeDSL.g:7575:5: (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
+                            loop135:
+                            do {
+                                int alt135=2;
+                                int LA135_0 = input.LA(1);
+
+                                if ( (LA135_0==45) ) {
+                                    alt135=1;
+                                }
+
+
+                                switch (alt135) {
+                            	case 1 :
+                            	    // InternalCubeDSL.g:7576:6: otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
+                            	    {
+                            	    otherlv_2=(Token)match(input,45,FOLLOW_56); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      						newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
+                            	      					
+                            	    }
+                            	    // InternalCubeDSL.g:7580:6: ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
+                            	    // InternalCubeDSL.g:7581:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
+                            	    {
+                            	    // InternalCubeDSL.g:7581:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
+                            	    // InternalCubeDSL.g:7582:8: lv_paramTypes_3_0= ruleJvmTypeReference
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+
+                            	      								newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0());
+                            	      							
+                            	    }
+                            	    pushFollow(FOLLOW_40);
+                            	    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 loop135;
+                                }
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_4=(Token)match(input,46,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,69,FOLLOW_56); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
+              		
+            }
+            // InternalCubeDSL.g:7610:3: ( (lv_returnType_6_0= ruleJvmTypeReference ) )
+            // InternalCubeDSL.g:7611:4: (lv_returnType_6_0= ruleJvmTypeReference )
+            {
+            // InternalCubeDSL.g:7611:4: (lv_returnType_6_0= ruleJvmTypeReference )
+            // InternalCubeDSL.g:7612: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"
+    // InternalCubeDSL.g:7633:1: entryRuleJvmParameterizedTypeReference returns [EObject current=null] : iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF ;
+    public final EObject entryRuleJvmParameterizedTypeReference() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmParameterizedTypeReference = null;
+
+
+        try {
+            // InternalCubeDSL.g:7633:70: (iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF )
+            // InternalCubeDSL.g:7634: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"
+    // InternalCubeDSL.g:7640: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 {
+            // InternalCubeDSL.g:7646: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= '>' )? )* )? ) )
+            // InternalCubeDSL.g:7647: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= '>' )? )* )? )
+            {
+            // InternalCubeDSL.g:7647: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= '>' )? )* )? )
+            // InternalCubeDSL.g:7648: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= '>' )? )* )?
+            {
+            // InternalCubeDSL.g:7648:3: ( ( ruleQualifiedName ) )
+            // InternalCubeDSL.g:7649:4: ( ruleQualifiedName )
+            {
+            // InternalCubeDSL.g:7649:4: ( ruleQualifiedName )
+            // InternalCubeDSL.g:7650: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();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalCubeDSL.g:7664: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 alt142=2;
+            alt142 = dfa142.predict(input);
+            switch (alt142) {
+                case 1 :
+                    // InternalCubeDSL.g:7665: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= '>' )? )*
+                    {
+                    // InternalCubeDSL.g:7665:4: ( ( '<' )=>otherlv_1= '<' )
+                    // InternalCubeDSL.g:7666:5: ( '<' )=>otherlv_1= '<'
+                    {
+                    otherlv_1=(Token)match(input,56,FOLLOW_68); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
+                      				
+                    }
+
+                    }
+
+                    // InternalCubeDSL.g:7672:4: ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) )
+                    // InternalCubeDSL.g:7673:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
+                    {
+                    // InternalCubeDSL.g:7673:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalCubeDSL.g:7674:6: lv_arguments_2_0= ruleJvmArgumentTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_69);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalCubeDSL.g:7691:4: (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )*
+                    loop138:
+                    do {
+                        int alt138=2;
+                        int LA138_0 = input.LA(1);
+
+                        if ( (LA138_0==45) ) {
+                            alt138=1;
+                        }
+
+
+                        switch (alt138) {
+                    	case 1 :
+                    	    // InternalCubeDSL.g:7692:5: otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    {
+                    	    otherlv_3=(Token)match(input,45,FOLLOW_68); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
+                    	      				
+                    	    }
+                    	    // InternalCubeDSL.g:7696:5: ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalCubeDSL.g:7697:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
+                    	    {
+                    	    // InternalCubeDSL.g:7697:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalCubeDSL.g:7698:7: lv_arguments_4_0= ruleJvmArgumentTypeReference
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_69);
+                    	    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 loop138;
+                        }
+                    } while (true);
+
+                    otherlv_5=(Token)match(input,57,FOLLOW_33); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
+                      			
+                    }
+                    // InternalCubeDSL.g:7720:4: ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
+                    loop141:
+                    do {
+                        int alt141=2;
+                        int LA141_0 = input.LA(1);
+
+                        if ( (LA141_0==36) ) {
+                            int LA141_2 = input.LA(2);
+
+                            if ( (LA141_2==RULE_ID) ) {
+                                int LA141_3 = input.LA(3);
+
+                                if ( (synpred51_InternalCubeDSL()) ) {
+                                    alt141=1;
+                                }
+
+
+                            }
+
+
+                        }
+
+
+                        switch (alt141) {
+                    	case 1 :
+                    	    // InternalCubeDSL.g:7721:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
+                    	    {
+                    	    // InternalCubeDSL.g:7721:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) )
+                    	    // InternalCubeDSL.g:7722:6: ( ( () '.' ) )=> ( () otherlv_7= '.' )
+                    	    {
+                    	    // InternalCubeDSL.g:7728:6: ( () otherlv_7= '.' )
+                    	    // InternalCubeDSL.g:7729:7: () otherlv_7= '.'
+                    	    {
+                    	    // InternalCubeDSL.g:7729:7: ()
+                    	    // InternalCubeDSL.g:7730:8: 
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      								current = forceCreateModelElementAndSet(
+                    	      									grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0(),
+                    	      									current);
+                    	      							
+                    	    }
+
+                    	    }
+
+                    	    otherlv_7=(Token)match(input,36,FOLLOW_4); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newLeafNode(otherlv_7, grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1());
+                    	      						
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    // InternalCubeDSL.g:7742:5: ( ( ruleValidID ) )
+                    	    // InternalCubeDSL.g:7743:6: ( ruleValidID )
+                    	    {
+                    	    // InternalCubeDSL.g:7743:6: ( ruleValidID )
+                    	    // InternalCubeDSL.g:7744: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();
+                    	      						
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    // InternalCubeDSL.g:7758:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
+                    	    int alt140=2;
+                    	    alt140 = dfa140.predict(input);
+                    	    switch (alt140) {
+                    	        case 1 :
+                    	            // InternalCubeDSL.g:7759:6: ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>'
+                    	            {
+                    	            // InternalCubeDSL.g:7759:6: ( ( '<' )=>otherlv_9= '<' )
+                    	            // InternalCubeDSL.g:7760:7: ( '<' )=>otherlv_9= '<'
+                    	            {
+                    	            otherlv_9=(Token)match(input,56,FOLLOW_68); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              							newLeafNode(otherlv_9, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0());
+                    	              						
+                    	            }
+
+                    	            }
+
+                    	            // InternalCubeDSL.g:7766:6: ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) )
+                    	            // InternalCubeDSL.g:7767:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
+                    	            {
+                    	            // InternalCubeDSL.g:7767:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
+                    	            // InternalCubeDSL.g:7768:8: lv_arguments_10_0= ruleJvmArgumentTypeReference
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+
+                    	              								newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0());
+                    	              							
+                    	            }
+                    	            pushFollow(FOLLOW_69);
+                    	            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();
+                    	              							
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+                    	            // InternalCubeDSL.g:7785:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )*
+                    	            loop139:
+                    	            do {
+                    	                int alt139=2;
+                    	                int LA139_0 = input.LA(1);
+
+                    	                if ( (LA139_0==45) ) {
+                    	                    alt139=1;
+                    	                }
+
+
+                    	                switch (alt139) {
+                    	            	case 1 :
+                    	            	    // InternalCubeDSL.g:7786:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
+                    	            	    {
+                    	            	    otherlv_11=(Token)match(input,45,FOLLOW_68); if (state.failed) return current;
+                    	            	    if ( state.backtracking==0 ) {
+
+                    	            	      							newLeafNode(otherlv_11, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0());
+                    	            	      						
+                    	            	    }
+                    	            	    // InternalCubeDSL.g:7790:7: ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
+                    	            	    // InternalCubeDSL.g:7791:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
+                    	            	    {
+                    	            	    // InternalCubeDSL.g:7791:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
+                    	            	    // InternalCubeDSL.g:7792:9: lv_arguments_12_0= ruleJvmArgumentTypeReference
+                    	            	    {
+                    	            	    if ( state.backtracking==0 ) {
+
+                    	            	      									newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0());
+                    	            	      								
+                    	            	    }
+                    	            	    pushFollow(FOLLOW_69);
+                    	            	    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 loop139;
+                    	                }
+                    	            } while (true);
+
+                    	            otherlv_13=(Token)match(input,57,FOLLOW_33); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              						newLeafNode(otherlv_13, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3());
+                    	              					
+                    	            }
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop141;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleJvmParameterizedTypeReference"
+
+
+    // $ANTLR start "entryRuleJvmArgumentTypeReference"
+    // InternalCubeDSL.g:7821:1: entryRuleJvmArgumentTypeReference returns [EObject current=null] : iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF ;
+    public final EObject entryRuleJvmArgumentTypeReference() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmArgumentTypeReference = null;
+
+
+        try {
+            // InternalCubeDSL.g:7821:65: (iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF )
+            // InternalCubeDSL.g:7822: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"
+    // InternalCubeDSL.g:7828: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 {
+            // InternalCubeDSL.g:7834:2: ( (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) )
+            // InternalCubeDSL.g:7835:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
+            {
+            // InternalCubeDSL.g:7835:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
+            int alt143=2;
+            int LA143_0 = input.LA(1);
+
+            if ( (LA143_0==RULE_ID||LA143_0==44||LA143_0==69) ) {
+                alt143=1;
+            }
+            else if ( (LA143_0==108) ) {
+                alt143=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 143, 0, input);
+
+                throw nvae;
+            }
+            switch (alt143) {
+                case 1 :
+                    // InternalCubeDSL.g:7836: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 :
+                    // InternalCubeDSL.g:7845: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"
+    // InternalCubeDSL.g:7857:1: entryRuleJvmWildcardTypeReference returns [EObject current=null] : iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF ;
+    public final EObject entryRuleJvmWildcardTypeReference() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmWildcardTypeReference = null;
+
+
+        try {
+            // InternalCubeDSL.g:7857:65: (iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF )
+            // InternalCubeDSL.g:7858: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"
+    // InternalCubeDSL.g:7864: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 {
+            // InternalCubeDSL.g:7870:2: ( ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) )
+            // InternalCubeDSL.g:7871:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
+            {
+            // InternalCubeDSL.g:7871:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
+            // InternalCubeDSL.g:7872:3: () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
+            {
+            // InternalCubeDSL.g:7872:3: ()
+            // InternalCubeDSL.g:7873:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,108,FOLLOW_109); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
+              		
+            }
+            // InternalCubeDSL.g:7883:3: ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
+            int alt146=3;
+            int LA146_0 = input.LA(1);
+
+            if ( (LA146_0==95) ) {
+                alt146=1;
+            }
+            else if ( (LA146_0==96) ) {
+                alt146=2;
+            }
+            switch (alt146) {
+                case 1 :
+                    // InternalCubeDSL.g:7884:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
+                    {
+                    // InternalCubeDSL.g:7884:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
+                    // InternalCubeDSL.g:7885:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
+                    {
+                    // InternalCubeDSL.g:7885:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
+                    // InternalCubeDSL.g:7886:6: (lv_constraints_2_0= ruleJvmUpperBound )
+                    {
+                    // InternalCubeDSL.g:7886:6: (lv_constraints_2_0= ruleJvmUpperBound )
+                    // InternalCubeDSL.g:7887: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();
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalCubeDSL.g:7904:5: ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
+                    loop144:
+                    do {
+                        int alt144=2;
+                        int LA144_0 = input.LA(1);
+
+                        if ( (LA144_0==109) ) {
+                            alt144=1;
+                        }
+
+
+                        switch (alt144) {
+                    	case 1 :
+                    	    // InternalCubeDSL.g:7905:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
+                    	    {
+                    	    // InternalCubeDSL.g:7905:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
+                    	    // InternalCubeDSL.g:7906: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 loop144;
+                        }
+                    } while (true);
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:7925:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
+                    {
+                    // InternalCubeDSL.g:7925:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
+                    // InternalCubeDSL.g:7926:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
+                    {
+                    // InternalCubeDSL.g:7926:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) )
+                    // InternalCubeDSL.g:7927:6: (lv_constraints_4_0= ruleJvmLowerBound )
+                    {
+                    // InternalCubeDSL.g:7927:6: (lv_constraints_4_0= ruleJvmLowerBound )
+                    // InternalCubeDSL.g:7928: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();
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalCubeDSL.g:7945:5: ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
+                    loop145:
+                    do {
+                        int alt145=2;
+                        int LA145_0 = input.LA(1);
+
+                        if ( (LA145_0==109) ) {
+                            alt145=1;
+                        }
+
+
+                        switch (alt145) {
+                    	case 1 :
+                    	    // InternalCubeDSL.g:7946:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
+                    	    {
+                    	    // InternalCubeDSL.g:7946:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
+                    	    // InternalCubeDSL.g:7947: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 loop145;
+                        }
+                    } while (true);
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleJvmWildcardTypeReference"
+
+
+    // $ANTLR start "entryRuleJvmUpperBound"
+    // InternalCubeDSL.g:7970:1: entryRuleJvmUpperBound returns [EObject current=null] : iv_ruleJvmUpperBound= ruleJvmUpperBound EOF ;
+    public final EObject entryRuleJvmUpperBound() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmUpperBound = null;
+
+
+        try {
+            // InternalCubeDSL.g:7970:54: (iv_ruleJvmUpperBound= ruleJvmUpperBound EOF )
+            // InternalCubeDSL.g:7971: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"
+    // InternalCubeDSL.g:7977: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 {
+            // InternalCubeDSL.g:7983:2: ( (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalCubeDSL.g:7984:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            {
+            // InternalCubeDSL.g:7984:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalCubeDSL.g:7985:3: otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            {
+            otherlv_0=(Token)match(input,95,FOLLOW_56); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
+              		
+            }
+            // InternalCubeDSL.g:7989:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalCubeDSL.g:7990:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            {
+            // InternalCubeDSL.g:7990:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalCubeDSL.g:7991: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"
+    // InternalCubeDSL.g:8012:1: entryRuleJvmUpperBoundAnded returns [EObject current=null] : iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF ;
+    public final EObject entryRuleJvmUpperBoundAnded() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmUpperBoundAnded = null;
+
+
+        try {
+            // InternalCubeDSL.g:8012:59: (iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF )
+            // InternalCubeDSL.g:8013: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"
+    // InternalCubeDSL.g:8019: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 {
+            // InternalCubeDSL.g:8025:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalCubeDSL.g:8026:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            {
+            // InternalCubeDSL.g:8026:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalCubeDSL.g:8027:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            {
+            otherlv_0=(Token)match(input,109,FOLLOW_56); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0());
+              		
+            }
+            // InternalCubeDSL.g:8031:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalCubeDSL.g:8032:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            {
+            // InternalCubeDSL.g:8032:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalCubeDSL.g:8033: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"
+    // InternalCubeDSL.g:8054:1: entryRuleJvmLowerBound returns [EObject current=null] : iv_ruleJvmLowerBound= ruleJvmLowerBound EOF ;
+    public final EObject entryRuleJvmLowerBound() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmLowerBound = null;
+
+
+        try {
+            // InternalCubeDSL.g:8054:54: (iv_ruleJvmLowerBound= ruleJvmLowerBound EOF )
+            // InternalCubeDSL.g:8055: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"
+    // InternalCubeDSL.g:8061: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 {
+            // InternalCubeDSL.g:8067:2: ( (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalCubeDSL.g:8068:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            {
+            // InternalCubeDSL.g:8068:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalCubeDSL.g:8069:3: otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            {
+            otherlv_0=(Token)match(input,96,FOLLOW_56); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0());
+              		
+            }
+            // InternalCubeDSL.g:8073:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalCubeDSL.g:8074:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            {
+            // InternalCubeDSL.g:8074:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalCubeDSL.g:8075: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"
+    // InternalCubeDSL.g:8096:1: entryRuleJvmLowerBoundAnded returns [EObject current=null] : iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF ;
+    public final EObject entryRuleJvmLowerBoundAnded() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmLowerBoundAnded = null;
+
+
+        try {
+            // InternalCubeDSL.g:8096:59: (iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF )
+            // InternalCubeDSL.g:8097: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"
+    // InternalCubeDSL.g:8103: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 {
+            // InternalCubeDSL.g:8109:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalCubeDSL.g:8110:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            {
+            // InternalCubeDSL.g:8110:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalCubeDSL.g:8111:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            {
+            otherlv_0=(Token)match(input,109,FOLLOW_56); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0());
+              		
+            }
+            // InternalCubeDSL.g:8115:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalCubeDSL.g:8116:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            {
+            // InternalCubeDSL.g:8116:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalCubeDSL.g:8117: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"
+    // InternalCubeDSL.g:8138:1: entryRuleQualifiedNameWithWildcard returns [String current=null] : iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF ;
+    public final String entryRuleQualifiedNameWithWildcard() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleQualifiedNameWithWildcard = null;
+
+
+        try {
+            // InternalCubeDSL.g:8138:65: (iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF )
+            // InternalCubeDSL.g:8139: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"
+    // InternalCubeDSL.g:8145: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 {
+            // InternalCubeDSL.g:8151:2: ( (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) )
+            // InternalCubeDSL.g:8152:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
+            {
+            // InternalCubeDSL.g:8152:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
+            // InternalCubeDSL.g:8153: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,36,FOLLOW_112); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current.merge(kw);
+              			newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1());
+              		
+            }
+            kw=(Token)match(input,40,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"
+    // InternalCubeDSL.g:8177:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
+    public final String entryRuleValidID() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleValidID = null;
+
+
+        try {
+            // InternalCubeDSL.g:8177:47: (iv_ruleValidID= ruleValidID EOF )
+            // InternalCubeDSL.g:8178: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"
+    // InternalCubeDSL.g:8184: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 {
+            // InternalCubeDSL.g:8190:2: (this_ID_0= RULE_ID )
+            // InternalCubeDSL.g:8191: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"
+    // InternalCubeDSL.g:8201:1: entryRuleXImportSection returns [EObject current=null] : iv_ruleXImportSection= ruleXImportSection EOF ;
+    public final EObject entryRuleXImportSection() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXImportSection = null;
+
+
+        try {
+            // InternalCubeDSL.g:8201:55: (iv_ruleXImportSection= ruleXImportSection EOF )
+            // InternalCubeDSL.g:8202: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"
+    // InternalCubeDSL.g:8208: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 {
+            // InternalCubeDSL.g:8214:2: ( ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ )
+            // InternalCubeDSL.g:8215:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
+            {
+            // InternalCubeDSL.g:8215:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
+            int cnt147=0;
+            loop147:
+            do {
+                int alt147=2;
+                int LA147_0 = input.LA(1);
+
+                if ( (LA147_0==37) ) {
+                    alt147=1;
+                }
+
+
+                switch (alt147) {
+            	case 1 :
+            	    // InternalCubeDSL.g:8216:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
+            	    {
+            	    // InternalCubeDSL.g:8216:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
+            	    // InternalCubeDSL.g:8217: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 ( cnt147 >= 1 ) break loop147;
+            	    if (state.backtracking>0) {state.failed=true; return current;}
+                        EarlyExitException eee =
+                            new EarlyExitException(147, input);
+                        throw eee;
+                }
+                cnt147++;
+            } while (true);
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXImportSection"
+
+
+    // $ANTLR start "entryRuleQualifiedNameInStaticImport"
+    // InternalCubeDSL.g:8237:1: entryRuleQualifiedNameInStaticImport returns [String current=null] : iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF ;
+    public final String entryRuleQualifiedNameInStaticImport() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleQualifiedNameInStaticImport = null;
+
+
+        try {
+            // InternalCubeDSL.g:8237:67: (iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF )
+            // InternalCubeDSL.g:8238: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"
+    // InternalCubeDSL.g:8244: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 {
+            // InternalCubeDSL.g:8250:2: ( (this_ValidID_0= ruleValidID kw= '.' )+ )
+            // InternalCubeDSL.g:8251:2: (this_ValidID_0= ruleValidID kw= '.' )+
+            {
+            // InternalCubeDSL.g:8251:2: (this_ValidID_0= ruleValidID kw= '.' )+
+            int cnt148=0;
+            loop148:
+            do {
+                int alt148=2;
+                int LA148_0 = input.LA(1);
+
+                if ( (LA148_0==RULE_ID) ) {
+                    int LA148_2 = input.LA(2);
+
+                    if ( (LA148_2==36) ) {
+                        alt148=1;
+                    }
+
+
+                }
+
+
+                switch (alt148) {
+            	case 1 :
+            	    // InternalCubeDSL.g:8252: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,36,FOLLOW_114); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      			current.merge(kw);
+            	      			newLeafNode(kw, grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1());
+            	      		
+            	    }
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt148 >= 1 ) break loop148;
+            	    if (state.backtracking>0) {state.failed=true; return current;}
+                        EarlyExitException eee =
+                            new EarlyExitException(148, input);
+                        throw eee;
+                }
+                cnt148++;
+            } while (true);
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleQualifiedNameInStaticImport"
+
+
+    // $ANTLR start "ruleCubeAggregatorEnum"
+    // InternalCubeDSL.g:8271:1: ruleCubeAggregatorEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'sum' ) | (enumLiteral_1= 'count' ) | (enumLiteral_2= 'min' ) | (enumLiteral_3= 'max' ) | (enumLiteral_4= 'avg' ) | (enumLiteral_5= 'distinct-count' ) ) ;
+    public final Enumerator ruleCubeAggregatorEnum() 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;
+
+
+        	enterRule();
+
+        try {
+            // InternalCubeDSL.g:8277:2: ( ( (enumLiteral_0= 'sum' ) | (enumLiteral_1= 'count' ) | (enumLiteral_2= 'min' ) | (enumLiteral_3= 'max' ) | (enumLiteral_4= 'avg' ) | (enumLiteral_5= 'distinct-count' ) ) )
+            // InternalCubeDSL.g:8278:2: ( (enumLiteral_0= 'sum' ) | (enumLiteral_1= 'count' ) | (enumLiteral_2= 'min' ) | (enumLiteral_3= 'max' ) | (enumLiteral_4= 'avg' ) | (enumLiteral_5= 'distinct-count' ) )
+            {
+            // InternalCubeDSL.g:8278:2: ( (enumLiteral_0= 'sum' ) | (enumLiteral_1= 'count' ) | (enumLiteral_2= 'min' ) | (enumLiteral_3= 'max' ) | (enumLiteral_4= 'avg' ) | (enumLiteral_5= 'distinct-count' ) )
+            int alt149=6;
+            switch ( input.LA(1) ) {
+            case 110:
+                {
+                alt149=1;
+                }
+                break;
+            case 111:
+                {
+                alt149=2;
+                }
+                break;
+            case 112:
+                {
+                alt149=3;
+                }
+                break;
+            case 113:
+                {
+                alt149=4;
+                }
+                break;
+            case 114:
+                {
+                alt149=5;
+                }
+                break;
+            case 115:
+                {
+                alt149=6;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 149, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt149) {
+                case 1 :
+                    // InternalCubeDSL.g:8279:3: (enumLiteral_0= 'sum' )
+                    {
+                    // InternalCubeDSL.g:8279:3: (enumLiteral_0= 'sum' )
+                    // InternalCubeDSL.g:8280:4: enumLiteral_0= 'sum'
+                    {
+                    enumLiteral_0=(Token)match(input,110,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeAggregatorEnumAccess().getSUMEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_0, grammarAccess.getCubeAggregatorEnumAccess().getSUMEnumLiteralDeclaration_0());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:8287:3: (enumLiteral_1= 'count' )
+                    {
+                    // InternalCubeDSL.g:8287:3: (enumLiteral_1= 'count' )
+                    // InternalCubeDSL.g:8288:4: enumLiteral_1= 'count'
+                    {
+                    enumLiteral_1=(Token)match(input,111,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeAggregatorEnumAccess().getCOUNTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_1, grammarAccess.getCubeAggregatorEnumAccess().getCOUNTEnumLiteralDeclaration_1());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalCubeDSL.g:8295:3: (enumLiteral_2= 'min' )
+                    {
+                    // InternalCubeDSL.g:8295:3: (enumLiteral_2= 'min' )
+                    // InternalCubeDSL.g:8296:4: enumLiteral_2= 'min'
+                    {
+                    enumLiteral_2=(Token)match(input,112,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeAggregatorEnumAccess().getMINEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_2, grammarAccess.getCubeAggregatorEnumAccess().getMINEnumLiteralDeclaration_2());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalCubeDSL.g:8303:3: (enumLiteral_3= 'max' )
+                    {
+                    // InternalCubeDSL.g:8303:3: (enumLiteral_3= 'max' )
+                    // InternalCubeDSL.g:8304:4: enumLiteral_3= 'max'
+                    {
+                    enumLiteral_3=(Token)match(input,113,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeAggregatorEnumAccess().getMAXEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_3, grammarAccess.getCubeAggregatorEnumAccess().getMAXEnumLiteralDeclaration_3());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalCubeDSL.g:8311:3: (enumLiteral_4= 'avg' )
+                    {
+                    // InternalCubeDSL.g:8311:3: (enumLiteral_4= 'avg' )
+                    // InternalCubeDSL.g:8312:4: enumLiteral_4= 'avg'
+                    {
+                    enumLiteral_4=(Token)match(input,114,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeAggregatorEnumAccess().getAVGEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_4, grammarAccess.getCubeAggregatorEnumAccess().getAVGEnumLiteralDeclaration_4());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalCubeDSL.g:8319:3: (enumLiteral_5= 'distinct-count' )
+                    {
+                    // InternalCubeDSL.g:8319:3: (enumLiteral_5= 'distinct-count' )
+                    // InternalCubeDSL.g:8320:4: enumLiteral_5= 'distinct-count'
+                    {
+                    enumLiteral_5=(Token)match(input,115,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeAggregatorEnumAccess().getDSCEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_5, grammarAccess.getCubeAggregatorEnumAccess().getDSCEnumLiteralDeclaration_5());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCubeAggregatorEnum"
+
+
+    // $ANTLR start "ruleCubeLevelPropType"
+    // InternalCubeDSL.g:8330:1: ruleCubeLevelPropType returns [Enumerator current=null] : ( (enumLiteral_0= 'String' ) | (enumLiteral_1= 'Numeric' ) | (enumLiteral_2= 'Integer' ) | (enumLiteral_3= 'Boolean' ) | (enumLiteral_4= 'Date' ) | (enumLiteral_5= 'Time' ) | (enumLiteral_6= 'Timestamp' ) ) ;
+    public final Enumerator ruleCubeLevelPropType() 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;
+
+
+        	enterRule();
+
+        try {
+            // InternalCubeDSL.g:8336:2: ( ( (enumLiteral_0= 'String' ) | (enumLiteral_1= 'Numeric' ) | (enumLiteral_2= 'Integer' ) | (enumLiteral_3= 'Boolean' ) | (enumLiteral_4= 'Date' ) | (enumLiteral_5= 'Time' ) | (enumLiteral_6= 'Timestamp' ) ) )
+            // InternalCubeDSL.g:8337:2: ( (enumLiteral_0= 'String' ) | (enumLiteral_1= 'Numeric' ) | (enumLiteral_2= 'Integer' ) | (enumLiteral_3= 'Boolean' ) | (enumLiteral_4= 'Date' ) | (enumLiteral_5= 'Time' ) | (enumLiteral_6= 'Timestamp' ) )
+            {
+            // InternalCubeDSL.g:8337:2: ( (enumLiteral_0= 'String' ) | (enumLiteral_1= 'Numeric' ) | (enumLiteral_2= 'Integer' ) | (enumLiteral_3= 'Boolean' ) | (enumLiteral_4= 'Date' ) | (enumLiteral_5= 'Time' ) | (enumLiteral_6= 'Timestamp' ) )
+            int alt150=7;
+            switch ( input.LA(1) ) {
+            case 116:
+                {
+                alt150=1;
+                }
+                break;
+            case 117:
+                {
+                alt150=2;
+                }
+                break;
+            case 118:
+                {
+                alt150=3;
+                }
+                break;
+            case 119:
+                {
+                alt150=4;
+                }
+                break;
+            case 120:
+                {
+                alt150=5;
+                }
+                break;
+            case 121:
+                {
+                alt150=6;
+                }
+                break;
+            case 122:
+                {
+                alt150=7;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 150, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt150) {
+                case 1 :
+                    // InternalCubeDSL.g:8338:3: (enumLiteral_0= 'String' )
+                    {
+                    // InternalCubeDSL.g:8338:3: (enumLiteral_0= 'String' )
+                    // InternalCubeDSL.g:8339:4: enumLiteral_0= 'String'
+                    {
+                    enumLiteral_0=(Token)match(input,116,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeLevelPropTypeAccess().getSTRINGEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_0, grammarAccess.getCubeLevelPropTypeAccess().getSTRINGEnumLiteralDeclaration_0());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:8346:3: (enumLiteral_1= 'Numeric' )
+                    {
+                    // InternalCubeDSL.g:8346:3: (enumLiteral_1= 'Numeric' )
+                    // InternalCubeDSL.g:8347:4: enumLiteral_1= 'Numeric'
+                    {
+                    enumLiteral_1=(Token)match(input,117,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeLevelPropTypeAccess().getNUMERICEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_1, grammarAccess.getCubeLevelPropTypeAccess().getNUMERICEnumLiteralDeclaration_1());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalCubeDSL.g:8354:3: (enumLiteral_2= 'Integer' )
+                    {
+                    // InternalCubeDSL.g:8354:3: (enumLiteral_2= 'Integer' )
+                    // InternalCubeDSL.g:8355:4: enumLiteral_2= 'Integer'
+                    {
+                    enumLiteral_2=(Token)match(input,118,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeLevelPropTypeAccess().getINTEGEREnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_2, grammarAccess.getCubeLevelPropTypeAccess().getINTEGEREnumLiteralDeclaration_2());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalCubeDSL.g:8362:3: (enumLiteral_3= 'Boolean' )
+                    {
+                    // InternalCubeDSL.g:8362:3: (enumLiteral_3= 'Boolean' )
+                    // InternalCubeDSL.g:8363:4: enumLiteral_3= 'Boolean'
+                    {
+                    enumLiteral_3=(Token)match(input,119,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeLevelPropTypeAccess().getBOOLEANEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_3, grammarAccess.getCubeLevelPropTypeAccess().getBOOLEANEnumLiteralDeclaration_3());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalCubeDSL.g:8370:3: (enumLiteral_4= 'Date' )
+                    {
+                    // InternalCubeDSL.g:8370:3: (enumLiteral_4= 'Date' )
+                    // InternalCubeDSL.g:8371:4: enumLiteral_4= 'Date'
+                    {
+                    enumLiteral_4=(Token)match(input,120,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeLevelPropTypeAccess().getDATEEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_4, grammarAccess.getCubeLevelPropTypeAccess().getDATEEnumLiteralDeclaration_4());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalCubeDSL.g:8378:3: (enumLiteral_5= 'Time' )
+                    {
+                    // InternalCubeDSL.g:8378:3: (enumLiteral_5= 'Time' )
+                    // InternalCubeDSL.g:8379:4: enumLiteral_5= 'Time'
+                    {
+                    enumLiteral_5=(Token)match(input,121,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeLevelPropTypeAccess().getTIMEEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_5, grammarAccess.getCubeLevelPropTypeAccess().getTIMEEnumLiteralDeclaration_5());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // InternalCubeDSL.g:8386:3: (enumLiteral_6= 'Timestamp' )
+                    {
+                    // InternalCubeDSL.g:8386:3: (enumLiteral_6= 'Timestamp' )
+                    // InternalCubeDSL.g:8387:4: enumLiteral_6= 'Timestamp'
+                    {
+                    enumLiteral_6=(Token)match(input,122,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeLevelPropTypeAccess().getTIMESTAMPEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_6, grammarAccess.getCubeLevelPropTypeAccess().getTIMESTAMPEnumLiteralDeclaration_6());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCubeLevelPropType"
+
+
+    // $ANTLR start "ruleCubeLevelLevelType"
+    // InternalCubeDSL.g:8397:1: ruleCubeLevelLevelType returns [Enumerator current=null] : ( (enumLiteral_0= 'Time' ) | (enumLiteral_1= 'TimeYears' ) | (enumLiteral_2= 'TimeHalfYears' ) | (enumLiteral_3= 'TimeQuarters' ) | (enumLiteral_4= 'TimeMonths' ) | (enumLiteral_5= 'TimeWeeks' ) | (enumLiteral_6= 'TimeDays' ) | (enumLiteral_7= 'TimeHours' ) | (enumLiteral_8= 'TimeMinutes' ) | (enumLiteral_9= 'TimeSeconds' ) ) ;
+    public final Enumerator ruleCubeLevelLevelType() 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;
+
+
+        	enterRule();
+
+        try {
+            // InternalCubeDSL.g:8403:2: ( ( (enumLiteral_0= 'Time' ) | (enumLiteral_1= 'TimeYears' ) | (enumLiteral_2= 'TimeHalfYears' ) | (enumLiteral_3= 'TimeQuarters' ) | (enumLiteral_4= 'TimeMonths' ) | (enumLiteral_5= 'TimeWeeks' ) | (enumLiteral_6= 'TimeDays' ) | (enumLiteral_7= 'TimeHours' ) | (enumLiteral_8= 'TimeMinutes' ) | (enumLiteral_9= 'TimeSeconds' ) ) )
+            // InternalCubeDSL.g:8404:2: ( (enumLiteral_0= 'Time' ) | (enumLiteral_1= 'TimeYears' ) | (enumLiteral_2= 'TimeHalfYears' ) | (enumLiteral_3= 'TimeQuarters' ) | (enumLiteral_4= 'TimeMonths' ) | (enumLiteral_5= 'TimeWeeks' ) | (enumLiteral_6= 'TimeDays' ) | (enumLiteral_7= 'TimeHours' ) | (enumLiteral_8= 'TimeMinutes' ) | (enumLiteral_9= 'TimeSeconds' ) )
+            {
+            // InternalCubeDSL.g:8404:2: ( (enumLiteral_0= 'Time' ) | (enumLiteral_1= 'TimeYears' ) | (enumLiteral_2= 'TimeHalfYears' ) | (enumLiteral_3= 'TimeQuarters' ) | (enumLiteral_4= 'TimeMonths' ) | (enumLiteral_5= 'TimeWeeks' ) | (enumLiteral_6= 'TimeDays' ) | (enumLiteral_7= 'TimeHours' ) | (enumLiteral_8= 'TimeMinutes' ) | (enumLiteral_9= 'TimeSeconds' ) )
+            int alt151=10;
+            switch ( input.LA(1) ) {
+            case 121:
+                {
+                alt151=1;
+                }
+                break;
+            case 123:
+                {
+                alt151=2;
+                }
+                break;
+            case 124:
+                {
+                alt151=3;
+                }
+                break;
+            case 125:
+                {
+                alt151=4;
+                }
+                break;
+            case 126:
+                {
+                alt151=5;
+                }
+                break;
+            case 127:
+                {
+                alt151=6;
+                }
+                break;
+            case 128:
+                {
+                alt151=7;
+                }
+                break;
+            case 129:
+                {
+                alt151=8;
+                }
+                break;
+            case 130:
+                {
+                alt151=9;
+                }
+                break;
+            case 131:
+                {
+                alt151=10;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 151, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt151) {
+                case 1 :
+                    // InternalCubeDSL.g:8405:3: (enumLiteral_0= 'Time' )
+                    {
+                    // InternalCubeDSL.g:8405:3: (enumLiteral_0= 'Time' )
+                    // InternalCubeDSL.g:8406:4: enumLiteral_0= 'Time'
+                    {
+                    enumLiteral_0=(Token)match(input,121,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_0, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalCubeDSL.g:8413:3: (enumLiteral_1= 'TimeYears' )
+                    {
+                    // InternalCubeDSL.g:8413:3: (enumLiteral_1= 'TimeYears' )
+                    // InternalCubeDSL.g:8414:4: enumLiteral_1= 'TimeYears'
+                    {
+                    enumLiteral_1=(Token)match(input,123,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_YEARSEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_1, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_YEARSEnumLiteralDeclaration_1());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalCubeDSL.g:8421:3: (enumLiteral_2= 'TimeHalfYears' )
+                    {
+                    // InternalCubeDSL.g:8421:3: (enumLiteral_2= 'TimeHalfYears' )
+                    // InternalCubeDSL.g:8422:4: enumLiteral_2= 'TimeHalfYears'
+                    {
+                    enumLiteral_2=(Token)match(input,124,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HALF_YEARSEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_2, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HALF_YEARSEnumLiteralDeclaration_2());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalCubeDSL.g:8429:3: (enumLiteral_3= 'TimeQuarters' )
+                    {
+                    // InternalCubeDSL.g:8429:3: (enumLiteral_3= 'TimeQuarters' )
+                    // InternalCubeDSL.g:8430:4: enumLiteral_3= 'TimeQuarters'
+                    {
+                    enumLiteral_3=(Token)match(input,125,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_QUARTERSEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_3, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_QUARTERSEnumLiteralDeclaration_3());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalCubeDSL.g:8437:3: (enumLiteral_4= 'TimeMonths' )
+                    {
+                    // InternalCubeDSL.g:8437:3: (enumLiteral_4= 'TimeMonths' )
+                    // InternalCubeDSL.g:8438:4: enumLiteral_4= 'TimeMonths'
+                    {
+                    enumLiteral_4=(Token)match(input,126,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MONTHSEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_4, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MONTHSEnumLiteralDeclaration_4());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalCubeDSL.g:8445:3: (enumLiteral_5= 'TimeWeeks' )
+                    {
+                    // InternalCubeDSL.g:8445:3: (enumLiteral_5= 'TimeWeeks' )
+                    // InternalCubeDSL.g:8446:4: enumLiteral_5= 'TimeWeeks'
+                    {
+                    enumLiteral_5=(Token)match(input,127,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_WEEKSEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_5, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_WEEKSEnumLiteralDeclaration_5());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // InternalCubeDSL.g:8453:3: (enumLiteral_6= 'TimeDays' )
+                    {
+                    // InternalCubeDSL.g:8453:3: (enumLiteral_6= 'TimeDays' )
+                    // InternalCubeDSL.g:8454:4: enumLiteral_6= 'TimeDays'
+                    {
+                    enumLiteral_6=(Token)match(input,128,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_DAYSEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_6, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_DAYSEnumLiteralDeclaration_6());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // InternalCubeDSL.g:8461:3: (enumLiteral_7= 'TimeHours' )
+                    {
+                    // InternalCubeDSL.g:8461:3: (enumLiteral_7= 'TimeHours' )
+                    // InternalCubeDSL.g:8462:4: enumLiteral_7= 'TimeHours'
+                    {
+                    enumLiteral_7=(Token)match(input,129,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HOURSEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_7, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_HOURSEnumLiteralDeclaration_7());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // InternalCubeDSL.g:8469:3: (enumLiteral_8= 'TimeMinutes' )
+                    {
+                    // InternalCubeDSL.g:8469:3: (enumLiteral_8= 'TimeMinutes' )
+                    // InternalCubeDSL.g:8470:4: enumLiteral_8= 'TimeMinutes'
+                    {
+                    enumLiteral_8=(Token)match(input,130,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MINUTESEnumLiteralDeclaration_8().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_8, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_MINUTESEnumLiteralDeclaration_8());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 10 :
+                    // InternalCubeDSL.g:8477:3: (enumLiteral_9= 'TimeSeconds' )
+                    {
+                    // InternalCubeDSL.g:8477:3: (enumLiteral_9= 'TimeSeconds' )
+                    // InternalCubeDSL.g:8478:4: enumLiteral_9= 'TimeSeconds'
+                    {
+                    enumLiteral_9=(Token)match(input,131,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_9, grammarAccess.getCubeLevelLevelTypeAccess().getMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleCubeLevelLevelType"
+
+    // $ANTLR start synpred1_InternalCubeDSL
+    public final void synpred1_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:1647:5: ( '(' )
+        // InternalCubeDSL.g:1647:6: '('
+        {
+        match(input,44,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred1_InternalCubeDSL
+
+    // $ANTLR start synpred2_InternalCubeDSL
+    public final void synpred2_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:1656:7: ( ( ( ( ruleValidID ) ) '=' ) )
+        // InternalCubeDSL.g:1656:8: ( ( ( ruleValidID ) ) '=' )
+        {
+        // InternalCubeDSL.g:1656:8: ( ( ( ruleValidID ) ) '=' )
+        // InternalCubeDSL.g:1657:8: ( ( ruleValidID ) ) '='
+        {
+        // InternalCubeDSL.g:1657:8: ( ( ruleValidID ) )
+        // InternalCubeDSL.g:1658:9: ( ruleValidID )
+        {
+        // InternalCubeDSL.g:1658:9: ( ruleValidID )
+        // InternalCubeDSL.g:1659:10: ruleValidID
+        {
+        pushFollow(FOLLOW_42);
+        ruleValidID();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        match(input,47,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred2_InternalCubeDSL
+
+    // $ANTLR start synpred5_InternalCubeDSL
+    public final void synpred5_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:1836:5: ( ( () '#' '[' ) )
+        // InternalCubeDSL.g:1836:6: ( () '#' '[' )
+        {
+        // InternalCubeDSL.g:1836:6: ( () '#' '[' )
+        // InternalCubeDSL.g:1837:6: () '#' '['
+        {
+        // InternalCubeDSL.g:1837:6: ()
+        // InternalCubeDSL.g:1838:6: 
+        {
+        }
+
+        match(input,48,FOLLOW_44); if (state.failed) return ;
+        match(input,49,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred5_InternalCubeDSL
+
+    // $ANTLR start synpred6_InternalCubeDSL
+    public final void synpred6_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:1978:5: ( ( () '#' '[' ) )
+        // InternalCubeDSL.g:1978:6: ( () '#' '[' )
+        {
+        // InternalCubeDSL.g:1978:6: ( () '#' '[' )
+        // InternalCubeDSL.g:1979:6: () '#' '['
+        {
+        // InternalCubeDSL.g:1979:6: ()
+        // InternalCubeDSL.g:1980:6: 
+        {
+        }
+
+        match(input,48,FOLLOW_44); if (state.failed) return ;
+        match(input,49,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred6_InternalCubeDSL
+
+    // $ANTLR start synpred7_InternalCubeDSL
+    public final void synpred7_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:2206:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )
+        // InternalCubeDSL.g:2206:7: ( () ( ( ruleOpMultiAssign ) ) )
+        {
+        // InternalCubeDSL.g:2206:7: ( () ( ( ruleOpMultiAssign ) ) )
+        // InternalCubeDSL.g:2207:7: () ( ( ruleOpMultiAssign ) )
+        {
+        // InternalCubeDSL.g:2207:7: ()
+        // InternalCubeDSL.g:2208:7: 
+        {
+        }
+
+        // InternalCubeDSL.g:2209:7: ( ( ruleOpMultiAssign ) )
+        // InternalCubeDSL.g:2210:8: ( ruleOpMultiAssign )
+        {
+        // InternalCubeDSL.g:2210:8: ( ruleOpMultiAssign )
+        // InternalCubeDSL.g:2211:9: ruleOpMultiAssign
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpMultiAssign();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred7_InternalCubeDSL
+
+    // $ANTLR start synpred8_InternalCubeDSL
+    public final void synpred8_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:2400:5: ( ( () ( ( ruleOpOr ) ) ) )
+        // InternalCubeDSL.g:2400:6: ( () ( ( ruleOpOr ) ) )
+        {
+        // InternalCubeDSL.g:2400:6: ( () ( ( ruleOpOr ) ) )
+        // InternalCubeDSL.g:2401:6: () ( ( ruleOpOr ) )
+        {
+        // InternalCubeDSL.g:2401:6: ()
+        // InternalCubeDSL.g:2402:6: 
+        {
+        }
+
+        // InternalCubeDSL.g:2403:6: ( ( ruleOpOr ) )
+        // InternalCubeDSL.g:2404:7: ( ruleOpOr )
+        {
+        // InternalCubeDSL.g:2404:7: ( ruleOpOr )
+        // InternalCubeDSL.g:2405:8: ruleOpOr
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpOr();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred8_InternalCubeDSL
+
+    // $ANTLR start synpred9_InternalCubeDSL
+    public final void synpred9_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:2507:5: ( ( () ( ( ruleOpAnd ) ) ) )
+        // InternalCubeDSL.g:2507:6: ( () ( ( ruleOpAnd ) ) )
+        {
+        // InternalCubeDSL.g:2507:6: ( () ( ( ruleOpAnd ) ) )
+        // InternalCubeDSL.g:2508:6: () ( ( ruleOpAnd ) )
+        {
+        // InternalCubeDSL.g:2508:6: ()
+        // InternalCubeDSL.g:2509:6: 
+        {
+        }
+
+        // InternalCubeDSL.g:2510:6: ( ( ruleOpAnd ) )
+        // InternalCubeDSL.g:2511:7: ( ruleOpAnd )
+        {
+        // InternalCubeDSL.g:2511:7: ( ruleOpAnd )
+        // InternalCubeDSL.g:2512:8: ruleOpAnd
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpAnd();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred9_InternalCubeDSL
+
+    // $ANTLR start synpred10_InternalCubeDSL
+    public final void synpred10_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:2614:5: ( ( () ( ( ruleOpEquality ) ) ) )
+        // InternalCubeDSL.g:2614:6: ( () ( ( ruleOpEquality ) ) )
+        {
+        // InternalCubeDSL.g:2614:6: ( () ( ( ruleOpEquality ) ) )
+        // InternalCubeDSL.g:2615:6: () ( ( ruleOpEquality ) )
+        {
+        // InternalCubeDSL.g:2615:6: ()
+        // InternalCubeDSL.g:2616:6: 
+        {
+        }
+
+        // InternalCubeDSL.g:2617:6: ( ( ruleOpEquality ) )
+        // InternalCubeDSL.g:2618:7: ( ruleOpEquality )
+        {
+        // InternalCubeDSL.g:2618:7: ( ruleOpEquality )
+        // InternalCubeDSL.g:2619:8: ruleOpEquality
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpEquality();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred10_InternalCubeDSL
+
+    // $ANTLR start synpred11_InternalCubeDSL
+    public final void synpred11_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:2742:6: ( ( () 'instanceof' ) )
+        // InternalCubeDSL.g:2742:7: ( () 'instanceof' )
+        {
+        // InternalCubeDSL.g:2742:7: ( () 'instanceof' )
+        // InternalCubeDSL.g:2743:7: () 'instanceof'
+        {
+        // InternalCubeDSL.g:2743:7: ()
+        // InternalCubeDSL.g:2744:7: 
+        {
+        }
+
+        match(input,65,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred11_InternalCubeDSL
+
+    // $ANTLR start synpred12_InternalCubeDSL
+    public final void synpred12_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:2785:6: ( ( () ( ( ruleOpCompare ) ) ) )
+        // InternalCubeDSL.g:2785:7: ( () ( ( ruleOpCompare ) ) )
+        {
+        // InternalCubeDSL.g:2785:7: ( () ( ( ruleOpCompare ) ) )
+        // InternalCubeDSL.g:2786:7: () ( ( ruleOpCompare ) )
+        {
+        // InternalCubeDSL.g:2786:7: ()
+        // InternalCubeDSL.g:2787:7: 
+        {
+        }
+
+        // InternalCubeDSL.g:2788:7: ( ( ruleOpCompare ) )
+        // InternalCubeDSL.g:2789:8: ( ruleOpCompare )
+        {
+        // InternalCubeDSL.g:2789:8: ( ruleOpCompare )
+        // InternalCubeDSL.g:2790:9: ruleOpCompare
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpCompare();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred12_InternalCubeDSL
+
+    // $ANTLR start synpred13_InternalCubeDSL
+    public final void synpred13_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:2920:5: ( ( () ( ( ruleOpOther ) ) ) )
+        // InternalCubeDSL.g:2920:6: ( () ( ( ruleOpOther ) ) )
+        {
+        // InternalCubeDSL.g:2920:6: ( () ( ( ruleOpOther ) ) )
+        // InternalCubeDSL.g:2921:6: () ( ( ruleOpOther ) )
+        {
+        // InternalCubeDSL.g:2921:6: ()
+        // InternalCubeDSL.g:2922:6: 
+        {
+        }
+
+        // InternalCubeDSL.g:2923:6: ( ( ruleOpOther ) )
+        // InternalCubeDSL.g:2924:7: ( ruleOpOther )
+        {
+        // InternalCubeDSL.g:2924:7: ( ruleOpOther )
+        // InternalCubeDSL.g:2925:8: ruleOpOther
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpOther();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred13_InternalCubeDSL
+
+    // $ANTLR start synpred14_InternalCubeDSL
+    public final void synpred14_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:3040:6: ( ( '>' '>' ) )
+        // InternalCubeDSL.g:3040:7: ( '>' '>' )
+        {
+        // InternalCubeDSL.g:3040:7: ( '>' '>' )
+        // InternalCubeDSL.g:3041:7: '>' '>'
+        {
+        match(input,57,FOLLOW_59); if (state.failed) return ;
+        match(input,57,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred14_InternalCubeDSL
+
+    // $ANTLR start synpred15_InternalCubeDSL
+    public final void synpred15_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:3075:6: ( ( '<' '<' ) )
+        // InternalCubeDSL.g:3075:7: ( '<' '<' )
+        {
+        // InternalCubeDSL.g:3075:7: ( '<' '<' )
+        // InternalCubeDSL.g:3076:7: '<' '<'
+        {
+        match(input,56,FOLLOW_49); if (state.failed) return ;
+        match(input,56,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred15_InternalCubeDSL
+
+    // $ANTLR start synpred16_InternalCubeDSL
+    public final void synpred16_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:3148:5: ( ( () ( ( ruleOpAdd ) ) ) )
+        // InternalCubeDSL.g:3148:6: ( () ( ( ruleOpAdd ) ) )
+        {
+        // InternalCubeDSL.g:3148:6: ( () ( ( ruleOpAdd ) ) )
+        // InternalCubeDSL.g:3149:6: () ( ( ruleOpAdd ) )
+        {
+        // InternalCubeDSL.g:3149:6: ()
+        // InternalCubeDSL.g:3150:6: 
+        {
+        }
+
+        // InternalCubeDSL.g:3151:6: ( ( ruleOpAdd ) )
+        // InternalCubeDSL.g:3152:7: ( ruleOpAdd )
+        {
+        // InternalCubeDSL.g:3152:7: ( ruleOpAdd )
+        // InternalCubeDSL.g:3153:8: ruleOpAdd
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpAdd();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred16_InternalCubeDSL
+
+    // $ANTLR start synpred17_InternalCubeDSL
+    public final void synpred17_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:3263:5: ( ( () ( ( ruleOpMulti ) ) ) )
+        // InternalCubeDSL.g:3263:6: ( () ( ( ruleOpMulti ) ) )
+        {
+        // InternalCubeDSL.g:3263:6: ( () ( ( ruleOpMulti ) ) )
+        // InternalCubeDSL.g:3264:6: () ( ( ruleOpMulti ) )
+        {
+        // InternalCubeDSL.g:3264:6: ()
+        // InternalCubeDSL.g:3265:6: 
+        {
+        }
+
+        // InternalCubeDSL.g:3266:6: ( ( ruleOpMulti ) )
+        // InternalCubeDSL.g:3267:7: ( ruleOpMulti )
+        {
+        // InternalCubeDSL.g:3267:7: ( ruleOpMulti )
+        // InternalCubeDSL.g:3268:8: ruleOpMulti
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpMulti();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred17_InternalCubeDSL
+
+    // $ANTLR start synpred18_InternalCubeDSL
+    public final void synpred18_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:3498:5: ( ( () 'as' ) )
+        // InternalCubeDSL.g:3498:6: ( () 'as' )
+        {
+        // InternalCubeDSL.g:3498:6: ( () 'as' )
+        // InternalCubeDSL.g:3499:6: () 'as'
+        {
+        // InternalCubeDSL.g:3499:6: ()
+        // InternalCubeDSL.g:3500:6: 
+        {
+        }
+
+        match(input,78,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred18_InternalCubeDSL
+
+    // $ANTLR start synpred19_InternalCubeDSL
+    public final void synpred19_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:3566:4: ( ( () ( ( ruleOpPostfix ) ) ) )
+        // InternalCubeDSL.g:3566:5: ( () ( ( ruleOpPostfix ) ) )
+        {
+        // InternalCubeDSL.g:3566:5: ( () ( ( ruleOpPostfix ) ) )
+        // InternalCubeDSL.g:3567:5: () ( ( ruleOpPostfix ) )
+        {
+        // InternalCubeDSL.g:3567:5: ()
+        // InternalCubeDSL.g:3568:5: 
+        {
+        }
+
+        // InternalCubeDSL.g:3569:5: ( ( ruleOpPostfix ) )
+        // InternalCubeDSL.g:3570:6: ( ruleOpPostfix )
+        {
+        // InternalCubeDSL.g:3570:6: ( ruleOpPostfix )
+        // InternalCubeDSL.g:3571:7: ruleOpPostfix
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpPostfix();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred19_InternalCubeDSL
+
+    // $ANTLR start synpred20_InternalCubeDSL
+    public final void synpred20_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:3662:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
+        // InternalCubeDSL.g:3662:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+        {
+        // InternalCubeDSL.g:3662:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+        // InternalCubeDSL.g:3663:7: () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
+        {
+        // InternalCubeDSL.g:3663:7: ()
+        // InternalCubeDSL.g:3664:7: 
+        {
+        }
+
+        // InternalCubeDSL.g:3665:7: ( '.' | ( ( '::' ) ) )
+        int alt152=2;
+        int LA152_0 = input.LA(1);
+
+        if ( (LA152_0==36) ) {
+            alt152=1;
+        }
+        else if ( (LA152_0==81) ) {
+            alt152=2;
+        }
+        else {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            NoViableAltException nvae =
+                new NoViableAltException("", 152, 0, input);
+
+            throw nvae;
+        }
+        switch (alt152) {
+            case 1 :
+                // InternalCubeDSL.g:3666:8: '.'
+                {
+                match(input,36,FOLLOW_66); if (state.failed) return ;
+
+                }
+                break;
+            case 2 :
+                // InternalCubeDSL.g:3668:8: ( ( '::' ) )
+                {
+                // InternalCubeDSL.g:3668:8: ( ( '::' ) )
+                // InternalCubeDSL.g:3669:9: ( '::' )
+                {
+                // InternalCubeDSL.g:3669:9: ( '::' )
+                // InternalCubeDSL.g:3670:10: '::'
+                {
+                match(input,81,FOLLOW_66); if (state.failed) return ;
+
+                }
+
+
+                }
+
+
+                }
+                break;
+
+        }
+
+        // InternalCubeDSL.g:3674:7: ( ( ruleFeatureCallID ) )
+        // InternalCubeDSL.g:3675:8: ( ruleFeatureCallID )
+        {
+        // InternalCubeDSL.g:3675:8: ( ruleFeatureCallID )
+        // InternalCubeDSL.g:3676:9: ruleFeatureCallID
+        {
+        pushFollow(FOLLOW_42);
+        ruleFeatureCallID();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        pushFollow(FOLLOW_2);
+        ruleOpSingleAssign();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred20_InternalCubeDSL
+
+    // $ANTLR start synpred21_InternalCubeDSL
+    public final void synpred21_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:3759:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )
+        // InternalCubeDSL.g:3759:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
+        {
+        // InternalCubeDSL.g:3759:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
+        // InternalCubeDSL.g:3760:7: () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
+        {
+        // InternalCubeDSL.g:3760:7: ()
+        // InternalCubeDSL.g:3761:7: 
+        {
+        }
+
+        // InternalCubeDSL.g:3762:7: ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
+        int alt153=3;
+        switch ( input.LA(1) ) {
+        case 36:
+            {
+            alt153=1;
+            }
+            break;
+        case 82:
+            {
+            alt153=2;
+            }
+            break;
+        case 81:
+            {
+            alt153=3;
+            }
+            break;
+        default:
+            if (state.backtracking>0) {state.failed=true; return ;}
+            NoViableAltException nvae =
+                new NoViableAltException("", 153, 0, input);
+
+            throw nvae;
+        }
+
+        switch (alt153) {
+            case 1 :
+                // InternalCubeDSL.g:3763:8: '.'
+                {
+                match(input,36,FOLLOW_2); if (state.failed) return ;
+
+                }
+                break;
+            case 2 :
+                // InternalCubeDSL.g:3765:8: ( ( '?.' ) )
+                {
+                // InternalCubeDSL.g:3765:8: ( ( '?.' ) )
+                // InternalCubeDSL.g:3766:9: ( '?.' )
+                {
+                // InternalCubeDSL.g:3766:9: ( '?.' )
+                // InternalCubeDSL.g:3767:10: '?.'
+                {
+                match(input,82,FOLLOW_2); if (state.failed) return ;
+
+                }
+
+
+                }
+
+
+                }
+                break;
+            case 3 :
+                // InternalCubeDSL.g:3771:8: ( ( '::' ) )
+                {
+                // InternalCubeDSL.g:3771:8: ( ( '::' ) )
+                // InternalCubeDSL.g:3772:9: ( '::' )
+                {
+                // InternalCubeDSL.g:3772:9: ( '::' )
+                // InternalCubeDSL.g:3773:10: '::'
+                {
+                match(input,81,FOLLOW_2); if (state.failed) return ;
+
+                }
+
+
+                }
+
+
+                }
+                break;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred21_InternalCubeDSL
+
+    // $ANTLR start synpred22_InternalCubeDSL
+    public final void synpred22_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:3897:7: ( ( '(' ) )
+        // InternalCubeDSL.g:3897:8: ( '(' )
+        {
+        // InternalCubeDSL.g:3897:8: ( '(' )
+        // InternalCubeDSL.g:3898:8: '('
+        {
+        match(input,44,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred22_InternalCubeDSL
+
+    // $ANTLR start synpred23_InternalCubeDSL
+    public final void synpred23_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:3916:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalCubeDSL.g:3916:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        {
+        // InternalCubeDSL.g:3916:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalCubeDSL.g:3917:9: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        {
+        // InternalCubeDSL.g:3917:9: ()
+        // InternalCubeDSL.g:3918:9: 
+        {
+        }
+
+        // InternalCubeDSL.g:3919:9: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt155=2;
+        int LA155_0 = input.LA(1);
+
+        if ( (LA155_0==RULE_ID||LA155_0==44||LA155_0==69) ) {
+            alt155=1;
+        }
+        switch (alt155) {
+            case 1 :
+                // InternalCubeDSL.g:3920:10: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                {
+                // InternalCubeDSL.g:3920:10: ( ( ruleJvmFormalParameter ) )
+                // InternalCubeDSL.g:3921:11: ( ruleJvmFormalParameter )
+                {
+                // InternalCubeDSL.g:3921:11: ( ruleJvmFormalParameter )
+                // InternalCubeDSL.g:3922:12: ruleJvmFormalParameter
+                {
+                pushFollow(FOLLOW_76);
+                ruleJvmFormalParameter();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+
+
+                }
+
+                // InternalCubeDSL.g:3925:10: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop154:
+                do {
+                    int alt154=2;
+                    int LA154_0 = input.LA(1);
+
+                    if ( (LA154_0==45) ) {
+                        alt154=1;
+                    }
+
+
+                    switch (alt154) {
+                	case 1 :
+                	    // InternalCubeDSL.g:3926:11: ',' ( ( ruleJvmFormalParameter ) )
+                	    {
+                	    match(input,45,FOLLOW_56); if (state.failed) return ;
+                	    // InternalCubeDSL.g:3927:11: ( ( ruleJvmFormalParameter ) )
+                	    // InternalCubeDSL.g:3928:12: ( ruleJvmFormalParameter )
+                	    {
+                	    // InternalCubeDSL.g:3928:12: ( ruleJvmFormalParameter )
+                	    // InternalCubeDSL.g:3929:13: ruleJvmFormalParameter
+                	    {
+                	    pushFollow(FOLLOW_76);
+                	    ruleJvmFormalParameter();
+
+                	    state._fsp--;
+                	    if (state.failed) return ;
+
+                	    }
+
+
+                	    }
+
+
+                	    }
+                	    break;
+
+                	default :
+                	    break loop154;
+                    }
+                } while (true);
+
+
+                }
+                break;
+
+        }
+
+        // InternalCubeDSL.g:3934:9: ( ( '|' ) )
+        // InternalCubeDSL.g:3935:10: ( '|' )
+        {
+        // InternalCubeDSL.g:3935:10: ( '|' )
+        // InternalCubeDSL.g:3936:11: '|'
+        {
+        match(input,83,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred23_InternalCubeDSL
+
+    // $ANTLR start synpred24_InternalCubeDSL
+    public final void synpred24_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:4013:6: ( ( () '[' ) )
+        // InternalCubeDSL.g:4013:7: ( () '[' )
+        {
+        // InternalCubeDSL.g:4013:7: ( () '[' )
+        // InternalCubeDSL.g:4014:7: () '['
+        {
+        // InternalCubeDSL.g:4014:7: ()
+        // InternalCubeDSL.g:4015:7: 
+        {
+        }
+
+        match(input,49,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred24_InternalCubeDSL
+
+    // $ANTLR start synpred25_InternalCubeDSL
+    public final void synpred25_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:4086:4: ( ( () 'synchronized' '(' ) )
+        // InternalCubeDSL.g:4086:5: ( () 'synchronized' '(' )
+        {
+        // InternalCubeDSL.g:4086:5: ( () 'synchronized' '(' )
+        // InternalCubeDSL.g:4087:5: () 'synchronized' '('
+        {
+        // InternalCubeDSL.g:4087:5: ()
+        // InternalCubeDSL.g:4088:5: 
+        {
+        }
+
+        match(input,106,FOLLOW_81); if (state.failed) return ;
+        match(input,44,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred25_InternalCubeDSL
+
+    // $ANTLR start synpred26_InternalCubeDSL
+    public final void synpred26_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:4131:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalCubeDSL.g:4131:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        {
+        // InternalCubeDSL.g:4131:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalCubeDSL.g:4132:5: () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':'
+        {
+        // InternalCubeDSL.g:4132:5: ()
+        // InternalCubeDSL.g:4133:5: 
+        {
+        }
+
+        match(input,90,FOLLOW_81); if (state.failed) return ;
+        match(input,44,FOLLOW_56); if (state.failed) return ;
+        // InternalCubeDSL.g:4136:5: ( ( ruleJvmFormalParameter ) )
+        // InternalCubeDSL.g:4137:6: ( ruleJvmFormalParameter )
+        {
+        // InternalCubeDSL.g:4137:6: ( ruleJvmFormalParameter )
+        // InternalCubeDSL.g:4138:7: ruleJvmFormalParameter
+        {
+        pushFollow(FOLLOW_84);
+        ruleJvmFormalParameter();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        match(input,87,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred26_InternalCubeDSL
+
+    // $ANTLR start synpred27_InternalCubeDSL
+    public final void synpred27_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:4245:4: ( ( () '[' ) )
+        // InternalCubeDSL.g:4245:5: ( () '[' )
+        {
+        // InternalCubeDSL.g:4245:5: ( () '[' )
+        // InternalCubeDSL.g:4246:5: () '['
+        {
+        // InternalCubeDSL.g:4246:5: ()
+        // InternalCubeDSL.g:4247:5: 
+        {
+        }
+
+        match(input,49,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred27_InternalCubeDSL
+
+    // $ANTLR start synpred29_InternalCubeDSL
+    public final void synpred29_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:4550:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalCubeDSL.g:4550:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        {
+        // InternalCubeDSL.g:4550:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalCubeDSL.g:4551:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        {
+        // InternalCubeDSL.g:4551:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt157=2;
+        int LA157_0 = input.LA(1);
+
+        if ( (LA157_0==RULE_ID||LA157_0==44||LA157_0==69) ) {
+            alt157=1;
+        }
+        switch (alt157) {
+            case 1 :
+                // InternalCubeDSL.g:4552:6: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                {
+                // InternalCubeDSL.g:4552:6: ( ( ruleJvmFormalParameter ) )
+                // InternalCubeDSL.g:4553:7: ( ruleJvmFormalParameter )
+                {
+                // InternalCubeDSL.g:4553:7: ( ruleJvmFormalParameter )
+                // InternalCubeDSL.g:4554:8: ruleJvmFormalParameter
+                {
+                pushFollow(FOLLOW_76);
+                ruleJvmFormalParameter();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+
+
+                }
+
+                // InternalCubeDSL.g:4557:6: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop156:
+                do {
+                    int alt156=2;
+                    int LA156_0 = input.LA(1);
+
+                    if ( (LA156_0==45) ) {
+                        alt156=1;
+                    }
+
+
+                    switch (alt156) {
+                	case 1 :
+                	    // InternalCubeDSL.g:4558:7: ',' ( ( ruleJvmFormalParameter ) )
+                	    {
+                	    match(input,45,FOLLOW_56); if (state.failed) return ;
+                	    // InternalCubeDSL.g:4559:7: ( ( ruleJvmFormalParameter ) )
+                	    // InternalCubeDSL.g:4560:8: ( ruleJvmFormalParameter )
+                	    {
+                	    // InternalCubeDSL.g:4560:8: ( ruleJvmFormalParameter )
+                	    // InternalCubeDSL.g:4561:9: ruleJvmFormalParameter
+                	    {
+                	    pushFollow(FOLLOW_76);
+                	    ruleJvmFormalParameter();
+
+                	    state._fsp--;
+                	    if (state.failed) return ;
+
+                	    }
+
+
+                	    }
+
+
+                	    }
+                	    break;
+
+                	default :
+                	    break loop156;
+                    }
+                } while (true);
+
+
+                }
+                break;
+
+        }
+
+        // InternalCubeDSL.g:4566:5: ( ( '|' ) )
+        // InternalCubeDSL.g:4567:6: ( '|' )
+        {
+        // InternalCubeDSL.g:4567:6: ( '|' )
+        // InternalCubeDSL.g:4568:7: '|'
+        {
+        match(input,83,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred29_InternalCubeDSL
+
+    // $ANTLR start synpred31_InternalCubeDSL
+    public final void synpred31_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:4959:5: ( 'else' )
+        // InternalCubeDSL.g:4959:6: 'else'
+        {
+        match(input,85,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred31_InternalCubeDSL
+
+    // $ANTLR start synpred32_InternalCubeDSL
+    public final void synpred32_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:5018:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalCubeDSL.g:5018:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        {
+        // InternalCubeDSL.g:5018:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalCubeDSL.g:5019:7: '(' ( ( ruleJvmFormalParameter ) ) ':'
+        {
+        match(input,44,FOLLOW_56); if (state.failed) return ;
+        // InternalCubeDSL.g:5020:7: ( ( ruleJvmFormalParameter ) )
+        // InternalCubeDSL.g:5021:8: ( ruleJvmFormalParameter )
+        {
+        // InternalCubeDSL.g:5021:8: ( ruleJvmFormalParameter )
+        // InternalCubeDSL.g:5022:9: ruleJvmFormalParameter
+        {
+        pushFollow(FOLLOW_84);
+        ruleJvmFormalParameter();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        match(input,87,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred32_InternalCubeDSL
+
+    // $ANTLR start synpred33_InternalCubeDSL
+    public final void synpred33_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:5085:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalCubeDSL.g:5085:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
+        {
+        // InternalCubeDSL.g:5085:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalCubeDSL.g:5086:7: ( ( ruleJvmFormalParameter ) ) ':'
+        {
+        // InternalCubeDSL.g:5086:7: ( ( ruleJvmFormalParameter ) )
+        // InternalCubeDSL.g:5087:8: ( ruleJvmFormalParameter )
+        {
+        // InternalCubeDSL.g:5087:8: ( ruleJvmFormalParameter )
+        // InternalCubeDSL.g:5088:9: ruleJvmFormalParameter
+        {
+        pushFollow(FOLLOW_84);
+        ruleJvmFormalParameter();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        match(input,87,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred33_InternalCubeDSL
+
+    // $ANTLR start synpred35_InternalCubeDSL
+    public final void synpred35_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:5903:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )
+        // InternalCubeDSL.g:5903:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
+        {
+        // InternalCubeDSL.g:5903:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
+        // InternalCubeDSL.g:5904:6: ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) )
+        {
+        // InternalCubeDSL.g:5904:6: ( ( ruleJvmTypeReference ) )
+        // InternalCubeDSL.g:5905:7: ( ruleJvmTypeReference )
+        {
+        // InternalCubeDSL.g:5905:7: ( ruleJvmTypeReference )
+        // InternalCubeDSL.g:5906:8: ruleJvmTypeReference
+        {
+        pushFollow(FOLLOW_4);
+        ruleJvmTypeReference();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        // InternalCubeDSL.g:5909:6: ( ( ruleValidID ) )
+        // InternalCubeDSL.g:5910:7: ( ruleValidID )
+        {
+        // InternalCubeDSL.g:5910:7: ( ruleValidID )
+        // InternalCubeDSL.g:5911:8: ruleValidID
+        {
+        pushFollow(FOLLOW_2);
+        ruleValidID();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred35_InternalCubeDSL
+
+    // $ANTLR start synpred36_InternalCubeDSL
+    public final void synpred36_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:6215:5: ( ( '(' ) )
+        // InternalCubeDSL.g:6215:6: ( '(' )
+        {
+        // InternalCubeDSL.g:6215:6: ( '(' )
+        // InternalCubeDSL.g:6216:6: '('
+        {
+        match(input,44,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred36_InternalCubeDSL
+
+    // $ANTLR start synpred37_InternalCubeDSL
+    public final void synpred37_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:6234:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalCubeDSL.g:6234:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        {
+        // InternalCubeDSL.g:6234:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalCubeDSL.g:6235:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        {
+        // InternalCubeDSL.g:6235:7: ()
+        // InternalCubeDSL.g:6236:7: 
+        {
+        }
+
+        // InternalCubeDSL.g:6237:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt161=2;
+        int LA161_0 = input.LA(1);
+
+        if ( (LA161_0==RULE_ID||LA161_0==44||LA161_0==69) ) {
+            alt161=1;
+        }
+        switch (alt161) {
+            case 1 :
+                // InternalCubeDSL.g:6238:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                {
+                // InternalCubeDSL.g:6238:8: ( ( ruleJvmFormalParameter ) )
+                // InternalCubeDSL.g:6239:9: ( ruleJvmFormalParameter )
+                {
+                // InternalCubeDSL.g:6239:9: ( ruleJvmFormalParameter )
+                // InternalCubeDSL.g:6240:10: ruleJvmFormalParameter
+                {
+                pushFollow(FOLLOW_76);
+                ruleJvmFormalParameter();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+
+
+                }
+
+                // InternalCubeDSL.g:6243:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop160:
+                do {
+                    int alt160=2;
+                    int LA160_0 = input.LA(1);
+
+                    if ( (LA160_0==45) ) {
+                        alt160=1;
+                    }
+
+
+                    switch (alt160) {
+                	case 1 :
+                	    // InternalCubeDSL.g:6244:9: ',' ( ( ruleJvmFormalParameter ) )
+                	    {
+                	    match(input,45,FOLLOW_56); if (state.failed) return ;
+                	    // InternalCubeDSL.g:6245:9: ( ( ruleJvmFormalParameter ) )
+                	    // InternalCubeDSL.g:6246:10: ( ruleJvmFormalParameter )
+                	    {
+                	    // InternalCubeDSL.g:6246:10: ( ruleJvmFormalParameter )
+                	    // InternalCubeDSL.g:6247:11: ruleJvmFormalParameter
+                	    {
+                	    pushFollow(FOLLOW_76);
+                	    ruleJvmFormalParameter();
+
+                	    state._fsp--;
+                	    if (state.failed) return ;
+
+                	    }
+
+
+                	    }
+
+
+                	    }
+                	    break;
+
+                	default :
+                	    break loop160;
+                    }
+                } while (true);
+
+
+                }
+                break;
+
+        }
+
+        // InternalCubeDSL.g:6252:7: ( ( '|' ) )
+        // InternalCubeDSL.g:6253:8: ( '|' )
+        {
+        // InternalCubeDSL.g:6253:8: ( '|' )
+        // InternalCubeDSL.g:6254:9: '|'
+        {
+        match(input,83,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred37_InternalCubeDSL
+
+    // $ANTLR start synpred38_InternalCubeDSL
+    public final void synpred38_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:6331:4: ( ( () '[' ) )
+        // InternalCubeDSL.g:6331:5: ( () '[' )
+        {
+        // InternalCubeDSL.g:6331:5: ( () '[' )
+        // InternalCubeDSL.g:6332:5: () '['
+        {
+        // InternalCubeDSL.g:6332:5: ()
+        // InternalCubeDSL.g:6333:5: 
+        {
+        }
+
+        match(input,49,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred38_InternalCubeDSL
+
+    // $ANTLR start synpred39_InternalCubeDSL
+    public final void synpred39_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:6491:5: ( '<' )
+        // InternalCubeDSL.g:6491:6: '<'
+        {
+        match(input,56,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred39_InternalCubeDSL
+
+    // $ANTLR start synpred40_InternalCubeDSL
+    public final void synpred40_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:6548:5: ( ( '(' ) )
+        // InternalCubeDSL.g:6548:6: ( '(' )
+        {
+        // InternalCubeDSL.g:6548:6: ( '(' )
+        // InternalCubeDSL.g:6549:6: '('
+        {
+        match(input,44,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred40_InternalCubeDSL
+
+    // $ANTLR start synpred41_InternalCubeDSL
+    public final void synpred41_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:6567:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalCubeDSL.g:6567:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        {
+        // InternalCubeDSL.g:6567:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalCubeDSL.g:6568:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        {
+        // InternalCubeDSL.g:6568:7: ()
+        // InternalCubeDSL.g:6569:7: 
+        {
+        }
+
+        // InternalCubeDSL.g:6570:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt163=2;
+        int LA163_0 = input.LA(1);
+
+        if ( (LA163_0==RULE_ID||LA163_0==44||LA163_0==69) ) {
+            alt163=1;
+        }
+        switch (alt163) {
+            case 1 :
+                // InternalCubeDSL.g:6571:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                {
+                // InternalCubeDSL.g:6571:8: ( ( ruleJvmFormalParameter ) )
+                // InternalCubeDSL.g:6572:9: ( ruleJvmFormalParameter )
+                {
+                // InternalCubeDSL.g:6572:9: ( ruleJvmFormalParameter )
+                // InternalCubeDSL.g:6573:10: ruleJvmFormalParameter
+                {
+                pushFollow(FOLLOW_76);
+                ruleJvmFormalParameter();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+
+
+                }
+
+                // InternalCubeDSL.g:6576:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop162:
+                do {
+                    int alt162=2;
+                    int LA162_0 = input.LA(1);
+
+                    if ( (LA162_0==45) ) {
+                        alt162=1;
+                    }
+
+
+                    switch (alt162) {
+                	case 1 :
+                	    // InternalCubeDSL.g:6577:9: ',' ( ( ruleJvmFormalParameter ) )
+                	    {
+                	    match(input,45,FOLLOW_56); if (state.failed) return ;
+                	    // InternalCubeDSL.g:6578:9: ( ( ruleJvmFormalParameter ) )
+                	    // InternalCubeDSL.g:6579:10: ( ruleJvmFormalParameter )
+                	    {
+                	    // InternalCubeDSL.g:6579:10: ( ruleJvmFormalParameter )
+                	    // InternalCubeDSL.g:6580:11: ruleJvmFormalParameter
+                	    {
+                	    pushFollow(FOLLOW_76);
+                	    ruleJvmFormalParameter();
+
+                	    state._fsp--;
+                	    if (state.failed) return ;
+
+                	    }
+
+
+                	    }
+
+
+                	    }
+                	    break;
+
+                	default :
+                	    break loop162;
+                    }
+                } while (true);
+
+
+                }
+                break;
+
+        }
+
+        // InternalCubeDSL.g:6585:7: ( ( '|' ) )
+        // InternalCubeDSL.g:6586:8: ( '|' )
+        {
+        // InternalCubeDSL.g:6586:8: ( '|' )
+        // InternalCubeDSL.g:6587:9: '|'
+        {
+        match(input,83,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred41_InternalCubeDSL
+
+    // $ANTLR start synpred42_InternalCubeDSL
+    public final void synpred42_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:6664:4: ( ( () '[' ) )
+        // InternalCubeDSL.g:6664:5: ( () '[' )
+        {
+        // InternalCubeDSL.g:6664:5: ( () '[' )
+        // InternalCubeDSL.g:6665:5: () '['
+        {
+        // InternalCubeDSL.g:6665:5: ()
+        // InternalCubeDSL.g:6666:5: 
+        {
+        }
+
+        match(input,49,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred42_InternalCubeDSL
+
+    // $ANTLR start synpred43_InternalCubeDSL
+    public final void synpred43_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:7007: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 )
+        // InternalCubeDSL.g:
+        {
+        if ( (input.LA(1)>=RULE_ID && input.LA(1)<=RULE_DECIMAL)||input.LA(1)==14||(input.LA(1)>=37 && input.LA(1)<=39)||input.LA(1)==44||(input.LA(1)>=48 && input.LA(1)<=49)||input.LA(1)==56||(input.LA(1)>=72 && input.LA(1)<=73)||input.LA(1)==77||input.LA(1)==84||input.LA(1)==86||(input.LA(1)>=90 && input.LA(1)<=92)||(input.LA(1)>=95 && input.LA(1)<=104)||input.LA(1)==106 ) {
+            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_InternalCubeDSL
+
+    // $ANTLR start synpred44_InternalCubeDSL
+    public final void synpred44_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:7078:6: ( 'catch' )
+        // InternalCubeDSL.g:7078:7: 'catch'
+        {
+        match(input,107,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred44_InternalCubeDSL
+
+    // $ANTLR start synpred45_InternalCubeDSL
+    public final void synpred45_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:7099:7: ( 'finally' )
+        // InternalCubeDSL.g:7099:8: 'finally'
+        {
+        match(input,105,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred45_InternalCubeDSL
+
+    // $ANTLR start synpred48_InternalCubeDSL
+    public final void synpred48_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:7343:5: ( '.' )
+        // InternalCubeDSL.g:7343:6: '.'
+        {
+        match(input,36,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred48_InternalCubeDSL
+
+    // $ANTLR start synpred49_InternalCubeDSL
+    public final void synpred49_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:7469:5: ( ( () ruleArrayBrackets ) )
+        // InternalCubeDSL.g:7469:6: ( () ruleArrayBrackets )
+        {
+        // InternalCubeDSL.g:7469:6: ( () ruleArrayBrackets )
+        // InternalCubeDSL.g:7470:6: () ruleArrayBrackets
+        {
+        // InternalCubeDSL.g:7470:6: ()
+        // InternalCubeDSL.g:7471:6: 
+        {
+        }
+
+        pushFollow(FOLLOW_2);
+        ruleArrayBrackets();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred49_InternalCubeDSL
+
+    // $ANTLR start synpred50_InternalCubeDSL
+    public final void synpred50_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:7666:5: ( '<' )
+        // InternalCubeDSL.g:7666:6: '<'
+        {
+        match(input,56,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred50_InternalCubeDSL
+
+    // $ANTLR start synpred51_InternalCubeDSL
+    public final void synpred51_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:7722:6: ( ( () '.' ) )
+        // InternalCubeDSL.g:7722:7: ( () '.' )
+        {
+        // InternalCubeDSL.g:7722:7: ( () '.' )
+        // InternalCubeDSL.g:7723:7: () '.'
+        {
+        // InternalCubeDSL.g:7723:7: ()
+        // InternalCubeDSL.g:7724:7: 
+        {
+        }
+
+        match(input,36,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred51_InternalCubeDSL
+
+    // $ANTLR start synpred52_InternalCubeDSL
+    public final void synpred52_InternalCubeDSL_fragment() throws RecognitionException {   
+        // InternalCubeDSL.g:7760:7: ( '<' )
+        // InternalCubeDSL.g:7760:8: '<'
+        {
+        match(input,56,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred52_InternalCubeDSL
+
+    // Delegated rules
+
+    public final boolean synpred1_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred1_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred45_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred33_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred26_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred29_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred23_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred42_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred11_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred48_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred14_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred17_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred40_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred7_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred12_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred36_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred43_InternalCubeDSL_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 synpred39_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred39_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred15_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred52_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred27_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred24_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred21_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred22_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred37_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred8_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred18_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred5_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred49_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred50_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred25_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred2_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred31_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred16_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred51_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred20_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred32_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred35_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred19_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred38_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred44_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred13_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred10_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred6_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred41_InternalCubeDSL_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_InternalCubeDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred9_InternalCubeDSL_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 DFA28 dfa28 = new DFA28(this);
+    protected DFA31 dfa31 = new DFA31(this);
+    protected DFA37 dfa37 = new DFA37(this);
+    protected DFA40 dfa40 = new DFA40(this);
+    protected DFA42 dfa42 = new DFA42(this);
+    protected DFA52 dfa52 = new DFA52(this);
+    protected DFA55 dfa55 = new DFA55(this);
+    protected DFA71 dfa71 = new DFA71(this);
+    protected DFA70 dfa70 = new DFA70(this);
+    protected DFA72 dfa72 = new DFA72(this);
+    protected DFA74 dfa74 = new DFA74(this);
+    protected DFA83 dfa83 = new DFA83(this);
+    protected DFA90 dfa90 = new DFA90(this);
+    protected DFA89 dfa89 = new DFA89(this);
+    protected DFA112 dfa112 = new DFA112(this);
+    protected DFA111 dfa111 = new DFA111(this);
+    protected DFA113 dfa113 = new DFA113(this);
+    protected DFA117 dfa117 = new DFA117(this);
+    protected DFA120 dfa120 = new DFA120(this);
+    protected DFA119 dfa119 = new DFA119(this);
+    protected DFA121 dfa121 = new DFA121(this);
+    protected DFA124 dfa124 = new DFA124(this);
+    protected DFA142 dfa142 = new DFA142(this);
+    protected DFA140 dfa140 = new DFA140(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\51\1\uffff\1\52\1\uffff\1\50\1\uffff\1\52\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\41\uffff\1\1\2\uffff\1\3",
+            "",
+            "\1\5\26\uffff\1\4\1\5\4\uffff\1\5",
+            "",
+            "\1\6\43\uffff\1\7",
+            "",
+            "\1\5\26\uffff\1\4\1\5\4\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 DFA28 extends DFA {
+
+        public DFA28(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 28;
+            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 "1436: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\152\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\26\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\6\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 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_13;
+        }
+        public String getDescription() {
+            return "1653: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 LA31_1 = input.LA(1);
+
+                         
+                        int index31_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred2_InternalCubeDSL()) ) {s = 35;}
+
+                        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;
+        }
+    }
+    static final String dfa_14s = "\43\uffff";
+    static final String dfa_15s = "\1\4\1\0\41\uffff";
+    static final String dfa_16s = "\1\152\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\26\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\6\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 DFA37 extends DFA {
+
+        public DFA37(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 37;
+            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 "1833: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 LA37_1 = input.LA(1);
+
+                         
+                        int index37_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred5_InternalCubeDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index37_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 37, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA40 extends DFA {
+
+        public DFA40(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 40;
+            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 "1975: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 LA40_1 = input.LA(1);
+
+                         
+                        int index40_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred6_InternalCubeDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index40_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 40, _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\153\7\0\2\uffff";
+    static final String dfa_24s = "\10\uffff\1\2\1\1";
+    static final String dfa_25s = "\1\uffff\1\2\1\3\1\4\1\5\1\6\1\1\1\0\2\uffff}>";
+    static final String[] dfa_26s = {
+            "\5\10\5\uffff\2\10\24\uffff\5\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\31\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 DFA42 extends DFA {
+
+        public DFA42(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 42;
+            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 "2204: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 LA42_7 = input.LA(1);
+
+                         
+                        int index42_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalCubeDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index42_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA42_6 = input.LA(1);
+
+                         
+                        int index42_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalCubeDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index42_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA42_1 = input.LA(1);
+
+                         
+                        int index42_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalCubeDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index42_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA42_2 = input.LA(1);
+
+                         
+                        int index42_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalCubeDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index42_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA42_3 = input.LA(1);
+
+                         
+                        int index42_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalCubeDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index42_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA42_4 = input.LA(1);
+
+                         
+                        int index42_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalCubeDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index42_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA42_5 = input.LA(1);
+
+                         
+                        int index42_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalCubeDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index42_5);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 42, _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\153\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\2\1\3\1\4\1\7\1\5\1\0\1\1\1\uffff}>";
+    static final String[] dfa_33s = {
+            "\5\1\5\uffff\2\1\24\uffff\5\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\13\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 DFA52 extends DFA {
+
+        public DFA52(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 52;
+            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 2918: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 LA52_8 = input.LA(1);
+
+                         
+                        int index52_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalCubeDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index52_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA52_9 = input.LA(1);
+
+                         
+                        int index52_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalCubeDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index52_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA52_3 = input.LA(1);
+
+                         
+                        int index52_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalCubeDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index52_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA52_4 = input.LA(1);
+
+                         
+                        int index52_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalCubeDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index52_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA52_5 = input.LA(1);
+
+                         
+                        int index52_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalCubeDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index52_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA52_7 = input.LA(1);
+
+                         
+                        int index52_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalCubeDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index52_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA52_2 = input.LA(1);
+
+                         
+                        int index52_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalCubeDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index52_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA52_6 = input.LA(1);
+
+                         
+                        int index52_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalCubeDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index52_6);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 52, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_34s = "\1\70\2\uffff\1\71\7\uffff";
+    static final String dfa_35s = "\1\107\2\uffff\1\104\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\6\1\3";
+    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\11\12\uffff\1\12",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    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 DFA55 extends DFA {
+
+        public DFA55(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 55;
+            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 "2994: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\153\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\24\uffff\5\2\1\uffff\1\2\1\uffff\1\1\2\2\1\uffff\43\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 DFA71 extends DFA {
+
+        public DFA71(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 71;
+            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 "3895: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 LA71_1 = input.LA(1);
+
+                         
+                        int index71_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred22_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index71_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 71, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_46s = "\1\4\2\0\41\uffff";
+    static final String dfa_47s = "\1\152\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\26\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\5\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 DFA70 extends DFA {
+
+        public DFA70(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 70;
+            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 "3914: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 LA70_0 = input.LA(1);
+
+                         
+                        int index70_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA70_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA70_0==44) ) {s = 2;}
+
+                        else if ( (LA70_0==69) && (synpred23_InternalCubeDSL())) {s = 3;}
+
+                        else if ( (LA70_0==83) && (synpred23_InternalCubeDSL())) {s = 4;}
+
+                        else if ( ((LA70_0>=RULE_STRING && LA70_0<=RULE_DECIMAL)||LA70_0==14||(LA70_0>=37 && LA70_0<=39)||(LA70_0>=48 && LA70_0<=49)||LA70_0==56||(LA70_0>=72 && LA70_0<=73)||LA70_0==77||LA70_0==84||LA70_0==86||(LA70_0>=90 && LA70_0<=92)||(LA70_0>=95 && LA70_0<=104)||LA70_0==106) ) {s = 5;}
+
+                        else if ( (LA70_0==46) ) {s = 35;}
+
+                         
+                        input.seek(index70_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA70_1 = input.LA(1);
+
+                         
+                        int index70_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred23_InternalCubeDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index70_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA70_2 = input.LA(1);
+
+                         
+                        int index70_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred23_InternalCubeDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index70_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 70, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_51s = {
+            "\5\2\5\uffff\2\2\24\uffff\5\2\1\uffff\1\2\1\uffff\3\2\1\uffff\1\2\1\1\41\2\1\uffff\30\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_51 = unpackEncodedStringArray(dfa_51s);
+
+    class DFA72 extends DFA {
+
+        public DFA72(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 72;
+            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 "4012: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 LA72_1 = input.LA(1);
+
+                         
+                        int index72_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred24_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index72_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 72, _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\152\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\26\uffff\3\5\4\uffff\1\35\3\uffff\2\14\6\uffff\1\5\33\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 DFA74 extends DFA {
+
+        public DFA74(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 74;
+            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 "4057: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 LA74_0 = input.LA(1);
+
+                         
+                        int index74_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA74_0==97) ) {s = 1;}
+
+                        else if ( (LA74_0==14) ) {s = 2;}
+
+                        else if ( (LA74_0==86) ) {s = 3;}
+
+                        else if ( (LA74_0==106) && (synpred25_InternalCubeDSL())) {s = 4;}
+
+                        else if ( (LA74_0==RULE_ID||(LA74_0>=37 && LA74_0<=39)||LA74_0==56||(LA74_0>=95 && LA74_0<=96)) ) {s = 5;}
+
+                        else if ( ((LA74_0>=RULE_STRING && LA74_0<=RULE_DECIMAL)||(LA74_0>=48 && LA74_0<=49)||(LA74_0>=98 && LA74_0<=101)) ) {s = 12;}
+
+                        else if ( (LA74_0==84) ) {s = 22;}
+
+                        else if ( (LA74_0==90) ) {s = 23;}
+
+                        else if ( (LA74_0==91) ) {s = 24;}
+
+                        else if ( (LA74_0==92) ) {s = 25;}
+
+                        else if ( (LA74_0==102) ) {s = 26;}
+
+                        else if ( (LA74_0==103) ) {s = 27;}
+
+                        else if ( (LA74_0==104) ) {s = 28;}
+
+                        else if ( (LA74_0==44) ) {s = 29;}
+
+                         
+                        input.seek(index74_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA74_23 = input.LA(1);
+
+                         
+                        int index74_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred26_InternalCubeDSL()) ) {s = 30;}
+
+                        else if ( (true) ) {s = 31;}
+
+                         
+                        input.seek(index74_23);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 74, _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\152\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\26\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\5\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 DFA83 extends DFA {
+
+        public DFA83(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 83;
+            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 "4549: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 LA83_0 = input.LA(1);
+
+                         
+                        int index83_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA83_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA83_0==44) ) {s = 2;}
+
+                        else if ( (LA83_0==69) && (synpred29_InternalCubeDSL())) {s = 3;}
+
+                        else if ( (LA83_0==83) && (synpred29_InternalCubeDSL())) {s = 4;}
+
+                        else if ( ((LA83_0>=RULE_STRING && LA83_0<=RULE_DECIMAL)||LA83_0==14||(LA83_0>=37 && LA83_0<=39)||(LA83_0>=48 && LA83_0<=50)||LA83_0==56||(LA83_0>=72 && LA83_0<=73)||LA83_0==77||LA83_0==84||LA83_0==86||(LA83_0>=90 && LA83_0<=104)||LA83_0==106) ) {s = 5;}
+
+                         
+                        input.seek(index83_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA83_1 = input.LA(1);
+
+                         
+                        int index83_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred29_InternalCubeDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index83_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA83_2 = input.LA(1);
+
+                         
+                        int index83_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred29_InternalCubeDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index83_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 83, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_64s = {
+            "\5\2\5\uffff\1\2\26\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\6\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 DFA90 extends DFA {
+
+        public DFA90(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 90;
+            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 "5015: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 LA90_1 = input.LA(1);
+
+                         
+                        int index90_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred32_InternalCubeDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index90_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 90, _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\152\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\26\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\6\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 DFA89 extends DFA {
+
+        public DFA89(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 89;
+            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 "5084: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 LA89_0 = input.LA(1);
+
+                         
+                        int index89_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA89_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA89_0==44) ) {s = 2;}
+
+                        else if ( (LA89_0==69) && (synpred33_InternalCubeDSL())) {s = 3;}
+
+                        else if ( ((LA89_0>=RULE_STRING && LA89_0<=RULE_DECIMAL)||LA89_0==14||(LA89_0>=37 && LA89_0<=39)||(LA89_0>=48 && LA89_0<=49)||LA89_0==56||(LA89_0>=72 && LA89_0<=73)||LA89_0==77||LA89_0==84||LA89_0==86||(LA89_0>=90 && LA89_0<=92)||(LA89_0>=95 && LA89_0<=104)||LA89_0==106) ) {s = 4;}
+
+                         
+                        input.seek(index89_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA89_1 = input.LA(1);
+
+                         
+                        int index89_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred33_InternalCubeDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index89_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA89_2 = input.LA(1);
+
+                         
+                        int index89_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred33_InternalCubeDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index89_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 89, _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 "6213: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 LA112_1 = input.LA(1);
+
+                         
+                        int index112_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred36_InternalCubeDSL()) ) {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 "6232: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 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==44) ) {s = 2;}
+
+                        else if ( (LA111_0==69) && (synpred37_InternalCubeDSL())) {s = 3;}
+
+                        else if ( (LA111_0==83) && (synpred37_InternalCubeDSL())) {s = 4;}
+
+                        else if ( ((LA111_0>=RULE_STRING && LA111_0<=RULE_DECIMAL)||LA111_0==14||(LA111_0>=37 && LA111_0<=39)||(LA111_0>=48 && LA111_0<=49)||LA111_0==56||(LA111_0>=72 && LA111_0<=73)||LA111_0==77||LA111_0==84||LA111_0==86||(LA111_0>=90 && LA111_0<=92)||(LA111_0>=95 && LA111_0<=104)||LA111_0==106) ) {s = 5;}
+
+                        else if ( (LA111_0==46) ) {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 ( (synpred37_InternalCubeDSL()) ) {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 ( (synpred37_InternalCubeDSL()) ) {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 "6330: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 LA113_1 = input.LA(1);
+
+                         
+                        int index113_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred38_InternalCubeDSL()) ) {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_71s = {
+            "\5\2\5\uffff\2\2\24\uffff\5\2\1\uffff\1\2\1\uffff\3\2\1\uffff\10\2\1\1\32\2\1\uffff\30\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_71 = unpackEncodedStringArray(dfa_71s);
+
+    class DFA117 extends DFA {
+
+        public DFA117(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 117;
+            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 "6489: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 LA117_1 = input.LA(1);
+
+                         
+                        int index117_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred39_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index117_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 117, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA120 extends DFA {
+
+        public DFA120(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 120;
+            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 "6546: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 LA120_1 = input.LA(1);
+
+                         
+                        int index120_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred40_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index120_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 120, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA119 extends DFA {
+
+        public DFA119(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 119;
+            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 "6565: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 LA119_0 = input.LA(1);
+
+                         
+                        int index119_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA119_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA119_0==44) ) {s = 2;}
+
+                        else if ( (LA119_0==69) && (synpred41_InternalCubeDSL())) {s = 3;}
+
+                        else if ( (LA119_0==83) && (synpred41_InternalCubeDSL())) {s = 4;}
+
+                        else if ( ((LA119_0>=RULE_STRING && LA119_0<=RULE_DECIMAL)||LA119_0==14||(LA119_0>=37 && LA119_0<=39)||(LA119_0>=48 && LA119_0<=49)||LA119_0==56||(LA119_0>=72 && LA119_0<=73)||LA119_0==77||LA119_0==84||LA119_0==86||(LA119_0>=90 && LA119_0<=92)||(LA119_0>=95 && LA119_0<=104)||LA119_0==106) ) {s = 5;}
+
+                        else if ( (LA119_0==46) ) {s = 35;}
+
+                         
+                        input.seek(index119_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA119_1 = input.LA(1);
+
+                         
+                        int index119_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred41_InternalCubeDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index119_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA119_2 = input.LA(1);
+
+                         
+                        int index119_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred41_InternalCubeDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index119_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 119, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA121 extends DFA {
+
+        public DFA121(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 121;
+            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 "6663: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 LA121_1 = input.LA(1);
+
+                         
+                        int index121_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred42_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index121_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 121, _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\153\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\24\uffff\1\41\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\5\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 DFA124 extends DFA {
+
+        public DFA124(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 124;
+            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 "7006: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 LA124_1 = input.LA(1);
+
+                         
+                        int index124_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA124_2 = input.LA(1);
+
+                         
+                        int index124_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA124_3 = input.LA(1);
+
+                         
+                        int index124_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA124_4 = input.LA(1);
+
+                         
+                        int index124_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA124_5 = input.LA(1);
+
+                         
+                        int index124_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA124_6 = input.LA(1);
+
+                         
+                        int index124_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA124_7 = input.LA(1);
+
+                         
+                        int index124_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA124_8 = input.LA(1);
+
+                         
+                        int index124_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA124_9 = input.LA(1);
+
+                         
+                        int index124_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA124_10 = input.LA(1);
+
+                         
+                        int index124_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA124_11 = input.LA(1);
+
+                         
+                        int index124_11 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_11);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA124_12 = input.LA(1);
+
+                         
+                        int index124_12 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_12);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA124_13 = input.LA(1);
+
+                         
+                        int index124_13 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_13);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA124_14 = input.LA(1);
+
+                         
+                        int index124_14 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_14);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA124_15 = input.LA(1);
+
+                         
+                        int index124_15 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_15);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA124_16 = input.LA(1);
+
+                         
+                        int index124_16 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_16);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA124_17 = input.LA(1);
+
+                         
+                        int index124_17 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_17);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA124_18 = input.LA(1);
+
+                         
+                        int index124_18 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_18);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA124_19 = input.LA(1);
+
+                         
+                        int index124_19 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_19);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA124_20 = input.LA(1);
+
+                         
+                        int index124_20 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_20);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 20 : 
+                        int LA124_21 = input.LA(1);
+
+                         
+                        int index124_21 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_21);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 21 : 
+                        int LA124_22 = input.LA(1);
+
+                         
+                        int index124_22 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_22);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 22 : 
+                        int LA124_23 = input.LA(1);
+
+                         
+                        int index124_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_23);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 23 : 
+                        int LA124_24 = input.LA(1);
+
+                         
+                        int index124_24 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_24);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 24 : 
+                        int LA124_25 = input.LA(1);
+
+                         
+                        int index124_25 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_25);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 25 : 
+                        int LA124_26 = input.LA(1);
+
+                         
+                        int index124_26 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_26);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 26 : 
+                        int LA124_27 = input.LA(1);
+
+                         
+                        int index124_27 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_27);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 27 : 
+                        int LA124_28 = input.LA(1);
+
+                         
+                        int index124_28 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_28);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 28 : 
+                        int LA124_29 = input.LA(1);
+
+                         
+                        int index124_29 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_29);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 29 : 
+                        int LA124_30 = input.LA(1);
+
+                         
+                        int index124_30 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_30);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 30 : 
+                        int LA124_31 = input.LA(1);
+
+                         
+                        int index124_31 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_31);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 31 : 
+                        int LA124_32 = input.LA(1);
+
+                         
+                        int index124_32 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalCubeDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index124_32);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 124, _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\155\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\24\uffff\5\2\1\uffff\1\2\1\uffff\3\2\1\uffff\10\2\1\1\32\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 DFA142 extends DFA {
+
+        public DFA142(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 142;
+            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 "7664: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 LA142_1 = input.LA(1);
+
+                         
+                        int index142_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred50_InternalCubeDSL()) ) {s = 78;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index142_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 142, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA140 extends DFA {
+
+        public DFA140(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 140;
+            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 "7758: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 LA140_1 = input.LA(1);
+
+                         
+                        int index140_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred52_InternalCubeDSL()) ) {s = 78;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index140_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 140, _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[]{0x0000000000002000L});
+    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[]{0x0000000000118000L});
+    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000018000L});
+    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000024000L});
+    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000004000L});
+    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000080000L});
+    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000204000L});
+    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000408000L});
+    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000003804010L});
+    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000003804000L});
+    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000003004000L});
+    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000002004000L});
+    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000008000002L});
+    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000400048000L});
+    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000400008000L});
+    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000014008000L});
+    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000020000000L});
+    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x00000000C0004002L});
+    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000080004002L});
+    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000000000000L,0xFA00000000000000L,0x000000000000000FL});
+    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000100008000L});
+    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0000000200000002L});
+    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000000000000000L,0x07F0000000000000L});
+    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000000000000000L,0x000FC00000000000L});
+    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000000800000002L});
+    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000001000000002L});
+    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000024000000010L});
+    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000008000000010L});
+    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000010000000010L});
+    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000040000000002L});
+    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000100000000002L});
+    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x010358E0000041F0L,0x000005FF9C502300L});
+    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000600000000000L});
+    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000400000000000L});
+    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000800000000000L});
+    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x010318E0000041F0L,0x000005FF9C502300L});
+    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0002000000000000L});
+    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x010718E0000041F0L,0x000005FF9C502300L});
+    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x0004200000000000L});
+    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000200000000002L});
+    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x03F8000000000002L});
+    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0100000000000000L});
+    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0600000000000000L});
+    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0400000000000000L});
+    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0800000000000002L});
+    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x1000000000000002L});
+    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0xE000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0700000000000002L,0x0000000000000002L});
+    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0000100000000010L,0x0000000000000020L});
+    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0300000000000002L,0x00000000000000FCL});
+    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L});
+    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0200000000000000L});
+    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0100000000000000L,0x0000000000000020L});
+    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000300L});
+    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0000010000000002L,0x0000000000001C00L});
+    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000000000000002L,0x0000000000004000L});
+    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0000000000000002L,0x0000000000018000L});
+    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000001000000002L,0x0000000000060000L});
+    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x000000E000000010L,0x0000000080000000L});
+    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x010000E000000010L,0x0000000180000000L});
+    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x0000100000000010L,0x0000100000000020L});
+    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x0200200000000000L});
+    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x0002101000000002L,0x0000000000060000L});
+    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x010358E0000041F0L,0x000005FF9C582320L});
+    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x0002001000000002L,0x0000000000060000L});
+    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x010318E00000C1F0L,0x000005FF9C502300L});
+    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x0000200000008000L});
+    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x010718E0000041F0L,0x000005FFFC582320L});
+    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x0000200000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x010718E0000041F0L,0x000005FFFC502300L});
+    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x0004000000000000L});
+    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x01031CE0000041F2L,0x000005FFFC502300L});
+    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x010318E0000041F2L,0x000005FFFC502300L});
+    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0000100000000000L});
+    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x0000000000000002L,0x0000000000200000L});
+    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x010318E0000041F0L,0x000005FF9C502320L});
+    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000300000008010L,0x0000000003800020L});
+    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x0000200000000000L,0x0000000002800000L});
+    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x0000200000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x01031CE0000041F0L,0x000005FFFC502300L});
+    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x0000240000000000L});
+    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x010318E0000041F0L,0x000005FFFC502300L});
+    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x01031CE0000041F0L,0x000005FF9C502300L});
+    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x0000040000000000L});
+    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x010318E00000C1F0L,0x000005FFFC502300L});
+    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x01031CE00000C1F0L,0x000005FFFC502300L});
+    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0000800000000002L});
+    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0002100000000002L});
+    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0002000000000002L});
+    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0102100000000002L});
+    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0002400000000000L});
+    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x010318E0000041F2L,0x000005FF9C502300L});
+    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x0000000000000000L,0x00000A0000000000L});
+    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x0000000000000002L,0x00000A0000000000L});
+    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0000000000000180L});
+    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0000500000000010L,0x0000000000000020L});
+    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+    public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0100000000000002L});
+    public static final BitSet FOLLOW_108 = new BitSet(new long[]{0x0100001000000002L});
+    public static final BitSet FOLLOW_109 = new BitSet(new long[]{0x0000000000000002L,0x0000000180000000L});
+    public static final BitSet FOLLOW_110 = new BitSet(new long[]{0x0000000000000002L,0x0000200000000000L});
+    public static final BitSet FOLLOW_111 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_112 = new BitSet(new long[]{0x0000010000000000L});
+    public static final BitSet FOLLOW_113 = new BitSet(new long[]{0x0000002000000002L});
+    public static final BitSet FOLLOW_114 = new BitSet(new long[]{0x0000000000000012L});
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/scoping/AbstractCubeDSLScopeProvider.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/scoping/AbstractCubeDSLScopeProvider.java
new file mode 100644
index 0000000..f843ce3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/scoping/AbstractCubeDSLScopeProvider.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.cubedsl.scoping;
+
+import org.eclipse.osbp.xtext.oxtype.scoping.OXtypeScopeProvider;
+
+public abstract class AbstractCubeDSLScopeProvider extends OXtypeScopeProvider {
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/serializer/CubeDSLSemanticSequencer.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/serializer/CubeDSLSemanticSequencer.java
index ecb7c30..d806642 100644
--- a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/serializer/CubeDSLSemanticSequencer.java
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/serializer/CubeDSLSemanticSequencer.java
@@ -10,15 +10,16 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
 
 package org.eclipse.osbp.xtext.cubedsl.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.cubedsl.CubeDSLPackage;
 import org.eclipse.osbp.xtext.cubedsl.CubeDimension;
 import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity;
@@ -34,6 +35,12 @@
 import org.eclipse.osbp.xtext.cubedsl.CubeType;
 import org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity;
 import org.eclipse.osbp.xtext.cubedsl.services.CubeDSLGrammarAccess;
+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;
@@ -43,14 +50,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;
@@ -84,1514 +85,549 @@
 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 CubeDSLSemanticSequencer extends XbaseWithAnnotationsSemanticSequencer {
+public class CubeDSLSemanticSequencer extends OXtypeSemanticSequencer {
 
 	@Inject
 	private CubeDSLGrammarAccess grammarAccess;
 	
-	public void createSequence(EObject context, EObject semanticObject) {
-		if(semanticObject.eClass().getEPackage() == CubeDSLPackage.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 == CubeDSLPackage.eINSTANCE)
+			switch (semanticObject.eClass().getClassifierID()) {
 			case CubeDSLPackage.CUBE_DIMENSION:
-				if(context == grammarAccess.getCubeDimensionRule()) {
-					sequence_CubeDimension(context, (CubeDimension) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CubeDimension(context, (CubeDimension) semanticObject); 
+				return; 
 			case CubeDSLPackage.CUBE_DIMENSION_ENTITY:
-				if(context == grammarAccess.getCubeDimensionEntityRule()) {
-					sequence_CubeDimensionEntity(context, (CubeDimensionEntity) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CubeDimensionEntity(context, (CubeDimensionEntity) semanticObject); 
+				return; 
 			case CubeDSLPackage.CUBE_DIMENSION_ENTITY_ENTITY:
-				if(context == grammarAccess.getCubeDimensionEntityEntityRule()) {
-					sequence_CubeDimensionEntityEntity(context, (CubeDimensionEntityEntity) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CubeDimensionEntityEntity(context, (CubeDimensionEntityEntity) semanticObject); 
+				return; 
 			case CubeDSLPackage.CUBE_DIMENSION_USAGE:
-				if(context == grammarAccess.getCubeDimensionUsageRule()) {
-					sequence_CubeDimensionUsage(context, (CubeDimensionUsage) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CubeDimensionUsage(context, (CubeDimensionUsage) semanticObject); 
+				return; 
 			case CubeDSLPackage.CUBE_ENTITY:
-				if(context == grammarAccess.getCubeEntityRule()) {
-					sequence_CubeEntity(context, (CubeEntity) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CubeEntity(context, (CubeEntity) semanticObject); 
+				return; 
 			case CubeDSLPackage.CUBE_HIERARCHY:
-				if(context == grammarAccess.getCubeHierarchyRule()) {
-					sequence_CubeHierarchy(context, (CubeHierarchy) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CubeHierarchy(context, (CubeHierarchy) semanticObject); 
+				return; 
 			case CubeDSLPackage.CUBE_LEVEL:
-				if(context == grammarAccess.getCubeLevelRule()) {
-					sequence_CubeLevel(context, (CubeLevel) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CubeLevel(context, (CubeLevel) semanticObject); 
+				return; 
 			case CubeDSLPackage.CUBE_LEVEL_PROP:
-				if(context == grammarAccess.getCubeLevelPropRule()) {
-					sequence_CubeLevelProp(context, (CubeLevelProp) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CubeLevelProp(context, (CubeLevelProp) semanticObject); 
+				return; 
 			case CubeDSLPackage.CUBE_MEASURE:
-				if(context == grammarAccess.getCubeMeasureRule()) {
-					sequence_CubeMeasure(context, (CubeMeasure) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CubeMeasure(context, (CubeMeasure) semanticObject); 
+				return; 
 			case CubeDSLPackage.CUBE_MODEL:
-				if(context == grammarAccess.getCubeModelRule()) {
-					sequence_CubeModel(context, (CubeModel) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CubeModel(context, (CubeModel) semanticObject); 
+				return; 
 			case CubeDSLPackage.CUBE_PACKAGE:
-				if(context == grammarAccess.getCubePackageRule()) {
-					sequence_CubePackage(context, (CubePackage) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CubePackage(context, (CubePackage) semanticObject); 
+				return; 
 			case CubeDSLPackage.CUBE_TYPE:
-				if(context == grammarAccess.getCubeTypeRule()) {
-					sequence_CubeType(context, (CubeType) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CubeType(context, (CubeType) semanticObject); 
+				return; 
 			case CubeDSLPackage.CUBE_TYPE_ENTITY:
-				if(context == grammarAccess.getCubeTypeEntityRule()) {
-					sequence_CubeTypeEntity(context, (CubeTypeEntity) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_CubeTypeEntity(context, (CubeTypeEntity) semanticObject); 
+				return; 
 			}
-		else if(semanticObject.eClass().getEPackage() == OSBPTypesPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
-			case OSBPTypesPackage.LIMPORT:
-				if(context == grammarAccess.getImportRule()) {
-					sequence_Import(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:
+	 *     CubeDimensionEntityEntity returns CubeDimensionEntityEntity
+	 *
 	 * Constraint:
 	 *     (entityRef=CubeEntity overValue=[LEntityFeature|LFQN] hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity?)
 	 */
-	protected void sequence_CubeDimensionEntityEntity(EObject context, CubeDimensionEntityEntity semanticObject) {
+	protected void sequence_CubeDimensionEntityEntity(ISerializationContext context, CubeDimensionEntityEntity semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     CubeDimensionEntity returns CubeDimensionEntity
+	 *
 	 * Constraint:
 	 *     (entityRef=CubeEntity hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity?)
 	 */
-	protected void sequence_CubeDimensionEntity(EObject context, CubeDimensionEntity semanticObject) {
+	protected void sequence_CubeDimensionEntity(ISerializationContext context, CubeDimensionEntity semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     CubeDimensionUsage returns CubeDimensionUsage
+	 *
 	 * Constraint:
 	 *     (sourceValue=[CubeDimension|ID] overValue=[LEntityFeature|LFQN])
 	 */
-	protected void sequence_CubeDimensionUsage(EObject context, CubeDimensionUsage semanticObject) {
-		if(errorAcceptor != null) {
-			if(transientValues.isValueTransient(semanticObject, CubeDSLPackage.Literals.CUBE_DIMENSION_USAGE__SOURCE_VALUE) == ValueTransient.YES)
+	protected void sequence_CubeDimensionUsage(ISerializationContext context, CubeDimensionUsage semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, CubeDSLPackage.Literals.CUBE_DIMENSION_USAGE__SOURCE_VALUE) == ValueTransient.YES)
 				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CubeDSLPackage.Literals.CUBE_DIMENSION_USAGE__SOURCE_VALUE));
-			if(transientValues.isValueTransient(semanticObject, CubeDSLPackage.Literals.CUBE_DIMENSION_USAGE__OVER_VALUE) == ValueTransient.YES)
+			if (transientValues.isValueTransient(semanticObject, CubeDSLPackage.Literals.CUBE_DIMENSION_USAGE__OVER_VALUE) == ValueTransient.YES)
 				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CubeDSLPackage.Literals.CUBE_DIMENSION_USAGE__OVER_VALUE));
 		}
-		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
-		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
-		feeder.accept(grammarAccess.getCubeDimensionUsageAccess().getSourceValueCubeDimensionIDTerminalRuleCall_1_0_1(), semanticObject.getSourceValue());
-		feeder.accept(grammarAccess.getCubeDimensionUsageAccess().getOverValueLEntityFeatureLFQNParserRuleCall_3_0_1(), semanticObject.getOverValue());
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
+		feeder.accept(grammarAccess.getCubeDimensionUsageAccess().getSourceValueCubeDimensionIDTerminalRuleCall_1_0_1(), semanticObject.eGet(CubeDSLPackage.Literals.CUBE_DIMENSION_USAGE__SOURCE_VALUE, false));
+		feeder.accept(grammarAccess.getCubeDimensionUsageAccess().getOverValueLEntityFeatureLFQNParserRuleCall_3_0_1(), semanticObject.eGet(CubeDSLPackage.Literals.CUBE_DIMENSION_USAGE__OVER_VALUE, false));
 		feeder.finish();
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     CubeDimension returns CubeDimension
+	 *
 	 * Constraint:
 	 *     (name=TRANSLATABLEID typeTime?='typeTime'? hierarchies+=CubeHierarchy*)
 	 */
-	protected void sequence_CubeDimension(EObject context, CubeDimension semanticObject) {
+	protected void sequence_CubeDimension(ISerializationContext context, CubeDimension semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     CubeEntity returns CubeEntity
+	 *
 	 * Constraint:
-	 *     (entityValue=[LEntity|LFQN] (key?='key=' keyValue=[LEntityFeature|LFQN])?)
+	 *     (entityValue=[LEntity|LFQN] (key?='key' keyValue=[LEntityFeature|LFQN])?)
 	 */
-	protected void sequence_CubeEntity(EObject context, CubeEntity semanticObject) {
+	protected void sequence_CubeEntity(ISerializationContext context, CubeEntity semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     CubeHierarchy returns CubeHierarchy
+	 *
 	 * Constraint:
 	 *     (
 	 *         name=TRANSLATABLEID? 
 	 *         hasAll?='hasAll'? 
-	 *         (allMemberName?='allMemberName=' allMemberNameValue=TRANSLATABLESTRING)? 
-	 *         (defaultMember?='defaultMember=' defaultMemberValue=TRANSLATABLESTRING)? 
+	 *         (allMemberName?='allMemberName' allMemberNameValue=TRANSLATABLESTRING)? 
+	 *         (defaultMember?='defaultMember' defaultMemberValue=TRANSLATABLESTRING)? 
 	 *         cubeDimEntity=CubeDimensionEntity
 	 *     )
 	 */
-	protected void sequence_CubeHierarchy(EObject context, CubeHierarchy semanticObject) {
+	protected void sequence_CubeHierarchy(ISerializationContext context, CubeHierarchy semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     CubeLevelProp returns CubeLevelProp
+	 *
 	 * Constraint:
-	 *     (name=TRANSLATABLEID levelPropColValue=[LEntityFeature|LFQN] (type?='type=' typeValue=CubeLevelPropType)?)
+	 *     (name=TRANSLATABLEID levelPropColValue=[LEntityFeature|LFQN] (type?='type' typeValue=CubeLevelPropType)?)
 	 */
-	protected void sequence_CubeLevelProp(EObject context, CubeLevelProp semanticObject) {
+	protected void sequence_CubeLevelProp(ISerializationContext context, CubeLevelProp semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     CubeLevel returns CubeLevel
+	 *
 	 * Constraint:
 	 *     (
 	 *         name=TRANSLATABLEID 
 	 *         levelColValue=[LEntityFeature|LFQN] 
 	 *         uniqueMembers?='uniqueMembers'? 
-	 *         (levelType?='levelType=' levelTypeValue=CubeLevelLevelType)? 
+	 *         (levelType?='levelType' levelTypeValue=CubeLevelLevelType)? 
 	 *         properties+=CubeLevelProp*
 	 *     )
 	 */
-	protected void sequence_CubeLevel(EObject context, CubeLevel semanticObject) {
+	protected void sequence_CubeLevel(ISerializationContext context, CubeLevel semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     CubeMeasure returns CubeMeasure
+	 *
 	 * Constraint:
 	 *     (name=TRANSLATABLEID aggregator=CubeAggregatorEnum measureCol=[LEntityFeature|LFQN] notVisible?='notVisible'?)
 	 */
-	protected void sequence_CubeMeasure(EObject context, CubeMeasure semanticObject) {
+	protected void sequence_CubeMeasure(ISerializationContext context, CubeMeasure semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     CubeModel returns CubeModel
+	 *
 	 * Constraint:
-	 *     pckg=CubePackage
+	 *     (importSection=XImportSection? pckg=CubePackage)
 	 */
-	protected void sequence_CubeModel(EObject context, CubeModel semanticObject) {
-		if(errorAcceptor != null) {
-			if(transientValues.isValueTransient(semanticObject, CubeDSLPackage.Literals.CUBE_MODEL__PCKG) == ValueTransient.YES)
-				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, CubeDSLPackage.Literals.CUBE_MODEL__PCKG));
-		}
-		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
-		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
-		feeder.accept(grammarAccess.getCubeModelAccess().getPckgCubePackageParserRuleCall_1_0(), semanticObject.getPckg());
-		feeder.finish();
-	}
-	
-	
-	/**
-	 * Constraint:
-	 *     (name=QualifiedName (imports+=Import* dimensions+=CubeDimension* cubes+=CubeType*)?)
-	 */
-	protected void sequence_CubePackage(EObject context, CubePackage semanticObject) {
+	protected void sequence_CubeModel(ISerializationContext context, CubeModel semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     CubePackage returns CubePackage
+	 *
+	 * Constraint:
+	 *     (name=QualifiedName dimensions+=CubeDimension* cubes+=CubeType*)
+	 */
+	protected void sequence_CubePackage(ISerializationContext context, CubePackage semanticObject) {
+		genericSequencer.createSequence(context, semanticObject);
+	}
+	
+	
+	/**
+	 * Contexts:
+	 *     CubeTypeEntity returns CubeTypeEntity
+	 *
 	 * Constraint:
 	 *     (entityRef=CubeEntity dimensionUsages+=CubeDimensionUsage* measures+=CubeMeasure*)
 	 */
-	protected void sequence_CubeTypeEntity(EObject context, CubeTypeEntity semanticObject) {
+	protected void sequence_CubeTypeEntity(ISerializationContext context, CubeTypeEntity semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     CubeType returns CubeType
+	 *
 	 * Constraint:
 	 *     (name=ID (defaultMeasure?='defaultMeasure' defaultMeasureValue=STRING)? cubeTypeEntity=CubeTypeEntity)
 	 */
-	protected void sequence_CubeType(EObject context, CubeType semanticObject) {
+	protected void sequence_CubeType(ISerializationContext context, CubeType semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
-	/**
-	 * Constraint:
-	 *     importedNamespace=CubeQualifiedNameWithWildCard
-	 */
-	protected void sequence_Import(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.getImportAccess().getImportedNamespaceCubeQualifiedNameWithWildCardParserRuleCall_1_0(), semanticObject.getImportedNamespace());
-		feeder.finish();
-	}
 }
diff --git a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/serializer/CubeDSLSyntacticSequencer.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/serializer/CubeDSLSyntacticSequencer.java
index c38eb5b..8fe21d2 100644
--- a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/serializer/CubeDSLSyntacticSequencer.java
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/serializer/CubeDSLSyntacticSequencer.java
@@ -10,6 +10,8 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
 
 package org.eclipse.osbp.xtext.cubedsl.serializer;
@@ -22,7 +24,6 @@
 import org.eclipse.xtext.RuleCall;
 import org.eclipse.xtext.nodemodel.INode;
 import org.eclipse.xtext.serializer.analysis.GrammarAlias.AbstractElementAlias;
-import org.eclipse.xtext.serializer.analysis.GrammarAlias.AlternativeAlias;
 import org.eclipse.xtext.serializer.analysis.GrammarAlias.GroupAlias;
 import org.eclipse.xtext.serializer.analysis.GrammarAlias.TokenAlias;
 import org.eclipse.xtext.serializer.analysis.ISyntacticSequencerPDAProvider.ISynNavigable;
@@ -33,35 +34,35 @@
 public class CubeDSLSyntacticSequencer extends AbstractSyntacticSequencer {
 
 	protected CubeDSLGrammarAccess grammarAccess;
-	protected AbstractElementAlias match_CubeLevel_SemicolonKeyword_6_0_or___LeftCurlyBracketKeyword_6_1_0_RightCurlyBracketKeyword_6_1_2__;
-	protected AbstractElementAlias match_CubePackage___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_4__q;
+	protected AbstractElementAlias match_CubeLevel___LeftCurlyBracketKeyword_6_0_RightCurlyBracketKeyword_6_2__q;
+	protected AbstractElementAlias match_CubePackage___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_3__q;
 	protected AbstractElementAlias match_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q;
 	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;
 	
 	@Inject
 	protected void init(IGrammarAccess access) {
 		grammarAccess = (CubeDSLGrammarAccess) access;
-		match_CubeLevel_SemicolonKeyword_6_0_or___LeftCurlyBracketKeyword_6_1_0_RightCurlyBracketKeyword_6_1_2__ = new AlternativeAlias(false, false, new GroupAlias(false, false, new TokenAlias(false, false, grammarAccess.getCubeLevelAccess().getLeftCurlyBracketKeyword_6_1_0()), new TokenAlias(false, false, grammarAccess.getCubeLevelAccess().getRightCurlyBracketKeyword_6_1_2())), new TokenAlias(false, false, grammarAccess.getCubeLevelAccess().getSemicolonKeyword_6_0()));
-		match_CubePackage___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_4__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getCubePackageAccess().getLeftCurlyBracketKeyword_2_0()), new TokenAlias(false, false, grammarAccess.getCubePackageAccess().getRightCurlyBracketKeyword_2_4()));
+		match_CubeLevel___LeftCurlyBracketKeyword_6_0_RightCurlyBracketKeyword_6_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getCubeLevelAccess().getLeftCurlyBracketKeyword_6_0()), new TokenAlias(false, false, grammarAccess.getCubeLevelAccess().getRightCurlyBracketKeyword_6_2()));
+		match_CubePackage___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getCubePackageAccess().getLeftCurlyBracketKeyword_2_0()), new TokenAlias(false, false, grammarAccess.getCubePackageAccess().getRightCurlyBracketKeyword_2_3()));
 		match_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()));
 		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 "";
 	}
@@ -94,95 +95,213 @@
 		List<INode> transitionNodes = collectNodes(fromNode, toNode);
 		for (AbstractElementAlias syntax : transition.getAmbiguousSyntaxes()) {
 			List<INode> syntaxNodes = getNodesFor(transitionNodes, syntax);
-			if(match_CubeLevel_SemicolonKeyword_6_0_or___LeftCurlyBracketKeyword_6_1_0_RightCurlyBracketKeyword_6_1_2__.equals(syntax))
-				emit_CubeLevel_SemicolonKeyword_6_0_or___LeftCurlyBracketKeyword_6_1_0_RightCurlyBracketKeyword_6_1_2__(semanticObject, getLastNavigableState(), syntaxNodes);
-			else if(match_CubePackage___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_4__q.equals(syntax))
-				emit_CubePackage___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_4__q(semanticObject, getLastNavigableState(), syntaxNodes);
-			else if(match_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q.equals(syntax))
+			if (match_CubeLevel___LeftCurlyBracketKeyword_6_0_RightCurlyBracketKeyword_6_2__q.equals(syntax))
+				emit_CubeLevel___LeftCurlyBracketKeyword_6_0_RightCurlyBracketKeyword_6_2__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			else if (match_CubePackage___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_3__q.equals(syntax))
+				emit_CubePackage___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_3__q(semanticObject, getLastNavigableState(), syntaxNodes);
+			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:
-	 *     ';' | ('{' '}')
-	 */
-	protected void emit_CubeLevel_SemicolonKeyword_6_0_or___LeftCurlyBracketKeyword_6_1_0_RightCurlyBracketKeyword_6_1_2__(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
-		acceptNodes(transition, nodes);
-	}
-	
-	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('{' '}')?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     levelColValue=[LEntityFeature|LFQN] (ambiguity) (rule end)
+	 *     levelTypeValue=CubeLevelLevelType (ambiguity) (rule end)
+	 *     uniqueMembers?='uniqueMembers' (ambiguity) (rule end)
 	 */
-	protected void emit_CubePackage___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_4__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+	protected void emit_CubeLevel___LeftCurlyBracketKeyword_6_0_RightCurlyBracketKeyword_6_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
+	 *     ('{' '}')?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     name=QualifiedName (ambiguity) (rule end)
+	 */
+	protected void emit_CubePackage___LeftCurlyBracketKeyword_2_0_RightCurlyBracketKeyword_2_3__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+		acceptNodes(transition, nodes);
+	}
+	
+	/**
+	 * 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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/services/CubeDSLGrammarAccess.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/services/CubeDSLGrammarAccess.java
index c707151..388e032 100644
--- a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/services/CubeDSLGrammarAccess.java
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/services/CubeDSLGrammarAccess.java
@@ -10,19 +10,32 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
 
 package org.eclipse.osbp.xtext.cubedsl.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;
@@ -30,93 +43,91 @@
 @Singleton
 public class CubeDSLGrammarAccess extends AbstractGrammarElementFinder {
 	
-	
 	public class CubeModelElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeModel");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeModel");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cCubeModelAction_0 = (Action)cGroup.eContents().get(0);
-		private final Assignment cPckgAssignment_1 = (Assignment)cGroup.eContents().get(1);
-		private final RuleCall cPckgCubePackageParserRuleCall_1_0 = (RuleCall)cPckgAssignment_1.eContents().get(0);
+		private final Assignment cImportSectionAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cImportSectionXImportSectionParserRuleCall_1_0 = (RuleCall)cImportSectionAssignment_1.eContents().get(0);
+		private final Assignment cPckgAssignment_2 = (Assignment)cGroup.eContents().get(2);
+		private final RuleCall cPckgCubePackageParserRuleCall_2_0 = (RuleCall)cPckgAssignment_2.eContents().get(0);
 		
 		//CubeModel:
-		//	{CubeModel} pckg=CubePackage;
-		public ParserRule getRule() { return rule; }
-
-		//{CubeModel} pckg=CubePackage
+		//	{CubeModel} importSection=XImportSection?
+		//	pckg=CubePackage;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{CubeModel} importSection=XImportSection? pckg=CubePackage
 		public Group getGroup() { return cGroup; }
-
+		
 		//{CubeModel}
 		public Action getCubeModelAction_0() { return cCubeModelAction_0; }
-
+		
+		//importSection=XImportSection?
+		public Assignment getImportSectionAssignment_1() { return cImportSectionAssignment_1; }
+		
+		//XImportSection
+		public RuleCall getImportSectionXImportSectionParserRuleCall_1_0() { return cImportSectionXImportSectionParserRuleCall_1_0; }
+		
 		//pckg=CubePackage
-		public Assignment getPckgAssignment_1() { return cPckgAssignment_1; }
-
+		public Assignment getPckgAssignment_2() { return cPckgAssignment_2; }
+		
 		//CubePackage
-		public RuleCall getPckgCubePackageParserRuleCall_1_0() { return cPckgCubePackageParserRuleCall_1_0; }
+		public RuleCall getPckgCubePackageParserRuleCall_2_0() { return cPckgCubePackageParserRuleCall_2_0; }
 	}
-
 	public class CubePackageElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubePackage");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubePackage");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cPackageKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cNameQualifiedNameParserRuleCall_1_0 = (RuleCall)cNameAssignment_1.eContents().get(0);
 		private final Group cGroup_2 = (Group)cGroup.eContents().get(2);
 		private final Keyword cLeftCurlyBracketKeyword_2_0 = (Keyword)cGroup_2.eContents().get(0);
-		private final Assignment cImportsAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
-		private final RuleCall cImportsImportParserRuleCall_2_1_0 = (RuleCall)cImportsAssignment_2_1.eContents().get(0);
-		private final Assignment cDimensionsAssignment_2_2 = (Assignment)cGroup_2.eContents().get(2);
-		private final RuleCall cDimensionsCubeDimensionParserRuleCall_2_2_0 = (RuleCall)cDimensionsAssignment_2_2.eContents().get(0);
-		private final Assignment cCubesAssignment_2_3 = (Assignment)cGroup_2.eContents().get(3);
-		private final RuleCall cCubesCubeTypeParserRuleCall_2_3_0 = (RuleCall)cCubesAssignment_2_3.eContents().get(0);
-		private final Keyword cRightCurlyBracketKeyword_2_4 = (Keyword)cGroup_2.eContents().get(4);
+		private final Assignment cDimensionsAssignment_2_1 = (Assignment)cGroup_2.eContents().get(1);
+		private final RuleCall cDimensionsCubeDimensionParserRuleCall_2_1_0 = (RuleCall)cDimensionsAssignment_2_1.eContents().get(0);
+		private final Assignment cCubesAssignment_2_2 = (Assignment)cGroup_2.eContents().get(2);
+		private final RuleCall cCubesCubeTypeParserRuleCall_2_2_0 = (RuleCall)cCubesAssignment_2_2.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_2_3 = (Keyword)cGroup_2.eContents().get(3);
 		
 		//CubePackage:
-		//	"package" name=QualifiedName ("{" imports+=Import* dimensions+=CubeDimension* cubes+=CubeType* "}")?;
-		public ParserRule getRule() { return rule; }
-
-		//"package" name=QualifiedName ("{" imports+=Import* dimensions+=CubeDimension* cubes+=CubeType* "}")?
+		//	'package' name=QualifiedName ('{' dimensions+=CubeDimension* cubes+=CubeType* '}')?;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'package' name=QualifiedName ('{' dimensions+=CubeDimension* cubes+=CubeType* '}')?
 		public Group getGroup() { return cGroup; }
-
-		//"package"
+		
+		//'package'
 		public Keyword getPackageKeyword_0() { return cPackageKeyword_0; }
-
+		
 		//name=QualifiedName
 		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
-
+		
 		//QualifiedName
 		public RuleCall getNameQualifiedNameParserRuleCall_1_0() { return cNameQualifiedNameParserRuleCall_1_0; }
-
-		//("{" imports+=Import* dimensions+=CubeDimension* cubes+=CubeType* "}")?
+		
+		//('{' dimensions+=CubeDimension* cubes+=CubeType* '}')?
 		public Group getGroup_2() { return cGroup_2; }
-
-		//"{"
+		
+		//'{'
 		public Keyword getLeftCurlyBracketKeyword_2_0() { return cLeftCurlyBracketKeyword_2_0; }
-
-		//imports+=Import*
-		public Assignment getImportsAssignment_2_1() { return cImportsAssignment_2_1; }
-
-		//Import
-		public RuleCall getImportsImportParserRuleCall_2_1_0() { return cImportsImportParserRuleCall_2_1_0; }
-
+		
 		//dimensions+=CubeDimension*
-		public Assignment getDimensionsAssignment_2_2() { return cDimensionsAssignment_2_2; }
-
+		public Assignment getDimensionsAssignment_2_1() { return cDimensionsAssignment_2_1; }
+		
 		//CubeDimension
-		public RuleCall getDimensionsCubeDimensionParserRuleCall_2_2_0() { return cDimensionsCubeDimensionParserRuleCall_2_2_0; }
-
+		public RuleCall getDimensionsCubeDimensionParserRuleCall_2_1_0() { return cDimensionsCubeDimensionParserRuleCall_2_1_0; }
+		
 		//cubes+=CubeType*
-		public Assignment getCubesAssignment_2_3() { return cCubesAssignment_2_3; }
-
+		public Assignment getCubesAssignment_2_2() { return cCubesAssignment_2_2; }
+		
 		//CubeType
-		public RuleCall getCubesCubeTypeParserRuleCall_2_3_0() { return cCubesCubeTypeParserRuleCall_2_3_0; }
-
-		//"}"
-		public Keyword getRightCurlyBracketKeyword_2_4() { return cRightCurlyBracketKeyword_2_4; }
+		public RuleCall getCubesCubeTypeParserRuleCall_2_2_0() { return cCubesCubeTypeParserRuleCall_2_2_0; }
+		
+		//'}'
+		public Keyword getRightCurlyBracketKeyword_2_3() { return cRightCurlyBracketKeyword_2_3; }
 	}
-
 	public class CubeTypeElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeType");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeType");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cCubeKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
@@ -132,51 +143,50 @@
 		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
 		
 		//CubeType:
-		//	"cube" name=ID (defaultMeasure?="defaultMeasure" defaultMeasureValue=STRING)? "{" cubeTypeEntity=CubeTypeEntity "}";
-		public ParserRule getRule() { return rule; }
-
-		//"cube" name=ID (defaultMeasure?="defaultMeasure" defaultMeasureValue=STRING)? "{" cubeTypeEntity=CubeTypeEntity "}"
+		//	'cube' name=ID (defaultMeasure?='defaultMeasure' defaultMeasureValue=STRING)? '{' cubeTypeEntity=CubeTypeEntity '}';
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'cube' name=ID (defaultMeasure?='defaultMeasure' defaultMeasureValue=STRING)? '{' cubeTypeEntity=CubeTypeEntity '}'
 		public Group getGroup() { return cGroup; }
-
-		//"cube"
+		
+		//'cube'
 		public Keyword getCubeKeyword_0() { return cCubeKeyword_0; }
-
+		
 		//name=ID
 		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
-
+		
 		//ID
 		public RuleCall getNameIDTerminalRuleCall_1_0() { return cNameIDTerminalRuleCall_1_0; }
-
-		//(defaultMeasure?="defaultMeasure" defaultMeasureValue=STRING)?
+		
+		//(defaultMeasure?='defaultMeasure' defaultMeasureValue=STRING)?
 		public Group getGroup_2() { return cGroup_2; }
-
-		//defaultMeasure?="defaultMeasure"
+		
+		//defaultMeasure?='defaultMeasure'
 		public Assignment getDefaultMeasureAssignment_2_0() { return cDefaultMeasureAssignment_2_0; }
-
-		//"defaultMeasure"
+		
+		//'defaultMeasure'
 		public Keyword getDefaultMeasureDefaultMeasureKeyword_2_0_0() { return cDefaultMeasureDefaultMeasureKeyword_2_0_0; }
-
+		
 		//defaultMeasureValue=STRING
 		public Assignment getDefaultMeasureValueAssignment_2_1() { return cDefaultMeasureValueAssignment_2_1; }
-
+		
 		//STRING
 		public RuleCall getDefaultMeasureValueSTRINGTerminalRuleCall_2_1_0() { return cDefaultMeasureValueSTRINGTerminalRuleCall_2_1_0; }
-
-		//"{"
+		
+		//'{'
 		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }
-
+		
 		//cubeTypeEntity=CubeTypeEntity
 		public Assignment getCubeTypeEntityAssignment_4() { return cCubeTypeEntityAssignment_4; }
-
+		
 		//CubeTypeEntity
 		public RuleCall getCubeTypeEntityCubeTypeEntityParserRuleCall_4_0() { return cCubeTypeEntityCubeTypeEntityParserRuleCall_4_0; }
-
-		//"}"
+		
+		//'}'
 		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
 	}
-
 	public class CubeDimensionUsageElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeDimensionUsage");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeDimensionUsage");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cDimensionUsageKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cSourceValueAssignment_1 = (Assignment)cGroup.eContents().get(1);
@@ -186,45 +196,40 @@
 		private final Assignment cOverValueAssignment_3 = (Assignment)cGroup.eContents().get(3);
 		private final CrossReference cOverValueLEntityFeatureCrossReference_3_0 = (CrossReference)cOverValueAssignment_3.eContents().get(0);
 		private final RuleCall cOverValueLEntityFeatureLFQNParserRuleCall_3_0_1 = (RuleCall)cOverValueLEntityFeatureCrossReference_3_0.eContents().get(1);
-		private final Keyword cSemicolonKeyword_4 = (Keyword)cGroup.eContents().get(4);
 		
 		//CubeDimensionUsage:
-		//	"dimensionUsage" sourceValue=[CubeDimension] "over" overValue=[entity::LEntityFeature|LFQN] ";";
-		public ParserRule getRule() { return rule; }
-
-		//"dimensionUsage" sourceValue=[CubeDimension] "over" overValue=[entity::LEntityFeature|LFQN] ";"
+		//	'dimensionUsage' sourceValue=[CubeDimension] 'over' overValue=[entity::LEntityFeature|LFQN];
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'dimensionUsage' sourceValue=[CubeDimension] 'over' overValue=[entity::LEntityFeature|LFQN]
 		public Group getGroup() { return cGroup; }
-
-		//"dimensionUsage"
+		
+		//'dimensionUsage'
 		public Keyword getDimensionUsageKeyword_0() { return cDimensionUsageKeyword_0; }
-
+		
 		//sourceValue=[CubeDimension]
 		public Assignment getSourceValueAssignment_1() { return cSourceValueAssignment_1; }
-
+		
 		//[CubeDimension]
 		public CrossReference getSourceValueCubeDimensionCrossReference_1_0() { return cSourceValueCubeDimensionCrossReference_1_0; }
-
+		
 		//ID
 		public RuleCall getSourceValueCubeDimensionIDTerminalRuleCall_1_0_1() { return cSourceValueCubeDimensionIDTerminalRuleCall_1_0_1; }
-
-		//"over"
+		
+		//'over'
 		public Keyword getOverKeyword_2() { return cOverKeyword_2; }
-
+		
 		//overValue=[entity::LEntityFeature|LFQN]
 		public Assignment getOverValueAssignment_3() { return cOverValueAssignment_3; }
-
+		
 		//[entity::LEntityFeature|LFQN]
 		public CrossReference getOverValueLEntityFeatureCrossReference_3_0() { return cOverValueLEntityFeatureCrossReference_3_0; }
-
+		
 		//LFQN
 		public RuleCall getOverValueLEntityFeatureLFQNParserRuleCall_3_0_1() { return cOverValueLEntityFeatureLFQNParserRuleCall_3_0_1; }
-
-		//";"
-		public Keyword getSemicolonKeyword_4() { return cSemicolonKeyword_4; }
 	}
-
 	public class CubeDimensionElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeDimension");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeDimension");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cDimensionKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
@@ -237,42 +242,41 @@
 		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
 		
 		//CubeDimension:
-		//	"dimension" name=TRANSLATABLEID typeTime?="typeTime"? "{" hierarchies+=CubeHierarchy* "}";
-		public ParserRule getRule() { return rule; }
-
-		//"dimension" name=TRANSLATABLEID typeTime?="typeTime"? "{" hierarchies+=CubeHierarchy* "}"
+		//	'dimension' name=TRANSLATABLEID typeTime?='typeTime'? '{' hierarchies+=CubeHierarchy* '}';
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'dimension' name=TRANSLATABLEID typeTime?='typeTime'? '{' hierarchies+=CubeHierarchy* '}'
 		public Group getGroup() { return cGroup; }
-
-		//"dimension"
+		
+		//'dimension'
 		public Keyword getDimensionKeyword_0() { return cDimensionKeyword_0; }
-
+		
 		//name=TRANSLATABLEID
 		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
-
+		
 		//TRANSLATABLEID
 		public RuleCall getNameTRANSLATABLEIDParserRuleCall_1_0() { return cNameTRANSLATABLEIDParserRuleCall_1_0; }
-
-		//typeTime?="typeTime"?
+		
+		//typeTime?='typeTime'?
 		public Assignment getTypeTimeAssignment_2() { return cTypeTimeAssignment_2; }
-
-		//"typeTime"
+		
+		//'typeTime'
 		public Keyword getTypeTimeTypeTimeKeyword_2_0() { return cTypeTimeTypeTimeKeyword_2_0; }
-
-		//"{"
+		
+		//'{'
 		public Keyword getLeftCurlyBracketKeyword_3() { return cLeftCurlyBracketKeyword_3; }
-
+		
 		//hierarchies+=CubeHierarchy*
 		public Assignment getHierarchiesAssignment_4() { return cHierarchiesAssignment_4; }
-
+		
 		//CubeHierarchy
 		public RuleCall getHierarchiesCubeHierarchyParserRuleCall_4_0() { return cHierarchiesCubeHierarchyParserRuleCall_4_0; }
-
-		//"}"
+		
+		//'}'
 		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
 	}
-
 	public class CubeHierarchyElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeHierarchy");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeHierarchy");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cCubeHierarchyAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cHierarchyKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -296,79 +300,78 @@
 		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
 		
 		//CubeHierarchy:
-		//	{CubeHierarchy} "hierarchy" name=TRANSLATABLEID? hasAll?="hasAll"? (allMemberName?="allMemberName="
-		//	allMemberNameValue=TRANSLATABLESTRING)? (defaultMember?="defaultMember=" defaultMemberValue=TRANSLATABLESTRING)? "{"
-		//	cubeDimEntity=CubeDimensionEntity "}";
-		public ParserRule getRule() { return rule; }
-
-		//{CubeHierarchy} "hierarchy" name=TRANSLATABLEID? hasAll?="hasAll"? (allMemberName?="allMemberName="
-		//allMemberNameValue=TRANSLATABLESTRING)? (defaultMember?="defaultMember=" defaultMemberValue=TRANSLATABLESTRING)? "{"
-		//cubeDimEntity=CubeDimensionEntity "}"
+		//	{CubeHierarchy} 'hierarchy' name=TRANSLATABLEID? hasAll?='hasAll'? (allMemberName?='allMemberName'
+		//	allMemberNameValue=TRANSLATABLESTRING)? (defaultMember?='defaultMember' defaultMemberValue=TRANSLATABLESTRING)?
+		//	'{' cubeDimEntity=CubeDimensionEntity '}';
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{CubeHierarchy} 'hierarchy' name=TRANSLATABLEID? hasAll?='hasAll'? (allMemberName?='allMemberName'
+		//allMemberNameValue=TRANSLATABLESTRING)? (defaultMember?='defaultMember' defaultMemberValue=TRANSLATABLESTRING)? '{'
+		//cubeDimEntity=CubeDimensionEntity '}'
 		public Group getGroup() { return cGroup; }
-
+		
 		//{CubeHierarchy}
 		public Action getCubeHierarchyAction_0() { return cCubeHierarchyAction_0; }
-
-		//"hierarchy"
+		
+		//'hierarchy'
 		public Keyword getHierarchyKeyword_1() { return cHierarchyKeyword_1; }
-
+		
 		//name=TRANSLATABLEID?
 		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
-
+		
 		//TRANSLATABLEID
 		public RuleCall getNameTRANSLATABLEIDParserRuleCall_2_0() { return cNameTRANSLATABLEIDParserRuleCall_2_0; }
-
-		//hasAll?="hasAll"?
+		
+		//hasAll?='hasAll'?
 		public Assignment getHasAllAssignment_3() { return cHasAllAssignment_3; }
-
-		//"hasAll"
+		
+		//'hasAll'
 		public Keyword getHasAllHasAllKeyword_3_0() { return cHasAllHasAllKeyword_3_0; }
-
-		//(allMemberName?="allMemberName=" allMemberNameValue=TRANSLATABLESTRING)?
+		
+		//(allMemberName?='allMemberName' allMemberNameValue=TRANSLATABLESTRING)?
 		public Group getGroup_4() { return cGroup_4; }
-
-		//allMemberName?="allMemberName="
+		
+		//allMemberName?='allMemberName'
 		public Assignment getAllMemberNameAssignment_4_0() { return cAllMemberNameAssignment_4_0; }
-
-		//"allMemberName="
+		
+		//'allMemberName'
 		public Keyword getAllMemberNameAllMemberNameKeyword_4_0_0() { return cAllMemberNameAllMemberNameKeyword_4_0_0; }
-
+		
 		//allMemberNameValue=TRANSLATABLESTRING
 		public Assignment getAllMemberNameValueAssignment_4_1() { return cAllMemberNameValueAssignment_4_1; }
-
+		
 		//TRANSLATABLESTRING
 		public RuleCall getAllMemberNameValueTRANSLATABLESTRINGParserRuleCall_4_1_0() { return cAllMemberNameValueTRANSLATABLESTRINGParserRuleCall_4_1_0; }
-
-		//(defaultMember?="defaultMember=" defaultMemberValue=TRANSLATABLESTRING)?
+		
+		//(defaultMember?='defaultMember' defaultMemberValue=TRANSLATABLESTRING)?
 		public Group getGroup_5() { return cGroup_5; }
-
-		//defaultMember?="defaultMember="
+		
+		//defaultMember?='defaultMember'
 		public Assignment getDefaultMemberAssignment_5_0() { return cDefaultMemberAssignment_5_0; }
-
-		//"defaultMember="
+		
+		//'defaultMember'
 		public Keyword getDefaultMemberDefaultMemberKeyword_5_0_0() { return cDefaultMemberDefaultMemberKeyword_5_0_0; }
-
+		
 		//defaultMemberValue=TRANSLATABLESTRING
 		public Assignment getDefaultMemberValueAssignment_5_1() { return cDefaultMemberValueAssignment_5_1; }
-
+		
 		//TRANSLATABLESTRING
 		public RuleCall getDefaultMemberValueTRANSLATABLESTRINGParserRuleCall_5_1_0() { return cDefaultMemberValueTRANSLATABLESTRINGParserRuleCall_5_1_0; }
-
-		//"{"
+		
+		//'{'
 		public Keyword getLeftCurlyBracketKeyword_6() { return cLeftCurlyBracketKeyword_6; }
-
+		
 		//cubeDimEntity=CubeDimensionEntity
 		public Assignment getCubeDimEntityAssignment_7() { return cCubeDimEntityAssignment_7; }
-
+		
 		//CubeDimensionEntity
 		public RuleCall getCubeDimEntityCubeDimensionEntityParserRuleCall_7_0() { return cCubeDimEntityCubeDimensionEntityParserRuleCall_7_0; }
-
-		//"}"
+		
+		//'}'
 		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
 	}
-
 	public class CubeEntityElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeEntity");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeEntity");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cEntityKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cEntityValueAssignment_1 = (Assignment)cGroup.eContents().get(1);
@@ -382,45 +385,44 @@
 		private final RuleCall cKeyValueLEntityFeatureLFQNParserRuleCall_2_1_0_1 = (RuleCall)cKeyValueLEntityFeatureCrossReference_2_1_0.eContents().get(1);
 		
 		//CubeEntity:
-		//	"entity" entityValue=[entity::LEntity|LFQN] (key?="key=" keyValue=[entity::LEntityFeature|LFQN])?;
-		public ParserRule getRule() { return rule; }
-
-		//"entity" entityValue=[entity::LEntity|LFQN] (key?="key=" keyValue=[entity::LEntityFeature|LFQN])?
+		//	'entity' entityValue=[entity::LEntity|LFQN] (key?='key' keyValue=[entity::LEntityFeature|LFQN])?;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'entity' entityValue=[entity::LEntity|LFQN] (key?='key' keyValue=[entity::LEntityFeature|LFQN])?
 		public Group getGroup() { return cGroup; }
-
-		//"entity"
+		
+		//'entity'
 		public Keyword getEntityKeyword_0() { return cEntityKeyword_0; }
-
+		
 		//entityValue=[entity::LEntity|LFQN]
 		public Assignment getEntityValueAssignment_1() { return cEntityValueAssignment_1; }
-
+		
 		//[entity::LEntity|LFQN]
 		public CrossReference getEntityValueLEntityCrossReference_1_0() { return cEntityValueLEntityCrossReference_1_0; }
-
+		
 		//LFQN
 		public RuleCall getEntityValueLEntityLFQNParserRuleCall_1_0_1() { return cEntityValueLEntityLFQNParserRuleCall_1_0_1; }
-
-		//(key?="key=" keyValue=[entity::LEntityFeature|LFQN])?
+		
+		//(key?='key' keyValue=[entity::LEntityFeature|LFQN])?
 		public Group getGroup_2() { return cGroup_2; }
-
-		//key?="key="
+		
+		//key?='key'
 		public Assignment getKeyAssignment_2_0() { return cKeyAssignment_2_0; }
-
-		//"key="
+		
+		//'key'
 		public Keyword getKeyKeyKeyword_2_0_0() { return cKeyKeyKeyword_2_0_0; }
-
+		
 		//keyValue=[entity::LEntityFeature|LFQN]
 		public Assignment getKeyValueAssignment_2_1() { return cKeyValueAssignment_2_1; }
-
+		
 		//[entity::LEntityFeature|LFQN]
 		public CrossReference getKeyValueLEntityFeatureCrossReference_2_1_0() { return cKeyValueLEntityFeatureCrossReference_2_1_0; }
-
+		
 		//LFQN
 		public RuleCall getKeyValueLEntityFeatureLFQNParserRuleCall_2_1_0_1() { return cKeyValueLEntityFeatureLFQNParserRuleCall_2_1_0_1; }
 	}
-
 	public class CubeTypeEntityElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeTypeEntity");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeTypeEntity");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Assignment cEntityRefAssignment_0 = (Assignment)cGroup.eContents().get(0);
 		private final RuleCall cEntityRefCubeEntityParserRuleCall_0_0 = (RuleCall)cEntityRefAssignment_0.eContents().get(0);
@@ -432,39 +434,38 @@
 		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
 		
 		//CubeTypeEntity:
-		//	entityRef=CubeEntity "{" dimensionUsages+=CubeDimensionUsage* measures+=CubeMeasure* "}";
-		public ParserRule getRule() { return rule; }
-
-		//entityRef=CubeEntity "{" dimensionUsages+=CubeDimensionUsage* measures+=CubeMeasure* "}"
+		//	entityRef=CubeEntity '{' dimensionUsages+=CubeDimensionUsage* measures+=CubeMeasure* '}';
+		@Override public ParserRule getRule() { return rule; }
+		
+		//entityRef=CubeEntity '{' dimensionUsages+=CubeDimensionUsage* measures+=CubeMeasure* '}'
 		public Group getGroup() { return cGroup; }
-
+		
 		//entityRef=CubeEntity
 		public Assignment getEntityRefAssignment_0() { return cEntityRefAssignment_0; }
-
+		
 		//CubeEntity
 		public RuleCall getEntityRefCubeEntityParserRuleCall_0_0() { return cEntityRefCubeEntityParserRuleCall_0_0; }
-
-		//"{"
+		
+		//'{'
 		public Keyword getLeftCurlyBracketKeyword_1() { return cLeftCurlyBracketKeyword_1; }
-
+		
 		//dimensionUsages+=CubeDimensionUsage*
 		public Assignment getDimensionUsagesAssignment_2() { return cDimensionUsagesAssignment_2; }
-
+		
 		//CubeDimensionUsage
 		public RuleCall getDimensionUsagesCubeDimensionUsageParserRuleCall_2_0() { return cDimensionUsagesCubeDimensionUsageParserRuleCall_2_0; }
-
+		
 		//measures+=CubeMeasure*
 		public Assignment getMeasuresAssignment_3() { return cMeasuresAssignment_3; }
-
+		
 		//CubeMeasure
 		public RuleCall getMeasuresCubeMeasureParserRuleCall_3_0() { return cMeasuresCubeMeasureParserRuleCall_3_0; }
-
-		//"}"
+		
+		//'}'
 		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
 	}
-
 	public class CubeDimensionEntityElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeDimensionEntity");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeDimensionEntity");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cCubeDimensionEntityAction_0 = (Action)cGroup.eContents().get(0);
 		private final Assignment cEntityRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
@@ -477,42 +478,41 @@
 		private final Keyword cRightCurlyBracketKeyword_5 = (Keyword)cGroup.eContents().get(5);
 		
 		//CubeDimensionEntity:
-		//	{CubeDimensionEntity} entityRef=CubeEntity "{" hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity? "}";
-		public ParserRule getRule() { return rule; }
-
-		//{CubeDimensionEntity} entityRef=CubeEntity "{" hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity? "}"
+		//	{CubeDimensionEntity} entityRef=CubeEntity '{' hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity? '}';
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{CubeDimensionEntity} entityRef=CubeEntity '{' hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity? '}'
 		public Group getGroup() { return cGroup; }
-
+		
 		//{CubeDimensionEntity}
 		public Action getCubeDimensionEntityAction_0() { return cCubeDimensionEntityAction_0; }
-
+		
 		//entityRef=CubeEntity
 		public Assignment getEntityRefAssignment_1() { return cEntityRefAssignment_1; }
-
+		
 		//CubeEntity
 		public RuleCall getEntityRefCubeEntityParserRuleCall_1_0() { return cEntityRefCubeEntityParserRuleCall_1_0; }
-
-		//"{"
+		
+		//'{'
 		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
-
+		
 		//hierarchLevels+=CubeLevel*
 		public Assignment getHierarchLevelsAssignment_3() { return cHierarchLevelsAssignment_3; }
-
+		
 		//CubeLevel
 		public RuleCall getHierarchLevelsCubeLevelParserRuleCall_3_0() { return cHierarchLevelsCubeLevelParserRuleCall_3_0; }
-
+		
 		//dimEntity=CubeDimensionEntityEntity?
 		public Assignment getDimEntityAssignment_4() { return cDimEntityAssignment_4; }
-
+		
 		//CubeDimensionEntityEntity
 		public RuleCall getDimEntityCubeDimensionEntityEntityParserRuleCall_4_0() { return cDimEntityCubeDimensionEntityEntityParserRuleCall_4_0; }
-
-		//"}"
+		
+		//'}'
 		public Keyword getRightCurlyBracketKeyword_5() { return cRightCurlyBracketKeyword_5; }
 	}
-
 	public class CubeDimensionEntityEntityElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeDimensionEntityEntity");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeDimensionEntityEntity");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cCubeDimensionEntityEntityAction_0 = (Action)cGroup.eContents().get(0);
 		private final Assignment cEntityRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
@@ -522,67 +522,62 @@
 		private final Assignment cOverValueAssignment_4 = (Assignment)cGroup.eContents().get(4);
 		private final CrossReference cOverValueLEntityFeatureCrossReference_4_0 = (CrossReference)cOverValueAssignment_4.eContents().get(0);
 		private final RuleCall cOverValueLEntityFeatureLFQNParserRuleCall_4_0_1 = (RuleCall)cOverValueLEntityFeatureCrossReference_4_0.eContents().get(1);
-		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
-		private final Assignment cHierarchLevelsAssignment_6 = (Assignment)cGroup.eContents().get(6);
-		private final RuleCall cHierarchLevelsCubeLevelParserRuleCall_6_0 = (RuleCall)cHierarchLevelsAssignment_6.eContents().get(0);
-		private final Assignment cDimEntityAssignment_7 = (Assignment)cGroup.eContents().get(7);
-		private final RuleCall cDimEntityCubeDimensionEntityEntityParserRuleCall_7_0 = (RuleCall)cDimEntityAssignment_7.eContents().get(0);
-		private final Keyword cRightCurlyBracketKeyword_8 = (Keyword)cGroup.eContents().get(8);
+		private final Assignment cHierarchLevelsAssignment_5 = (Assignment)cGroup.eContents().get(5);
+		private final RuleCall cHierarchLevelsCubeLevelParserRuleCall_5_0 = (RuleCall)cHierarchLevelsAssignment_5.eContents().get(0);
+		private final Assignment cDimEntityAssignment_6 = (Assignment)cGroup.eContents().get(6);
+		private final RuleCall cDimEntityCubeDimensionEntityEntityParserRuleCall_6_0 = (RuleCall)cDimEntityAssignment_6.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_7 = (Keyword)cGroup.eContents().get(7);
 		
 		//CubeDimensionEntityEntity:
-		//	{CubeDimensionEntityEntity} entityRef=CubeEntity "{" "over" overValue=[entity::LEntityFeature|LFQN] ";"
-		//	hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity? "}";
-		public ParserRule getRule() { return rule; }
-
-		//{CubeDimensionEntityEntity} entityRef=CubeEntity "{" "over" overValue=[entity::LEntityFeature|LFQN] ";"
-		//hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity? "}"
+		//	{CubeDimensionEntityEntity} entityRef=CubeEntity '{' 'over' overValue=[entity::LEntityFeature|LFQN]
+		//	hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity? '}';
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{CubeDimensionEntityEntity} entityRef=CubeEntity '{' 'over' overValue=[entity::LEntityFeature|LFQN]
+		//hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity? '}'
 		public Group getGroup() { return cGroup; }
-
+		
 		//{CubeDimensionEntityEntity}
 		public Action getCubeDimensionEntityEntityAction_0() { return cCubeDimensionEntityEntityAction_0; }
-
+		
 		//entityRef=CubeEntity
 		public Assignment getEntityRefAssignment_1() { return cEntityRefAssignment_1; }
-
+		
 		//CubeEntity
 		public RuleCall getEntityRefCubeEntityParserRuleCall_1_0() { return cEntityRefCubeEntityParserRuleCall_1_0; }
-
-		//"{"
+		
+		//'{'
 		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
-
-		//"over"
+		
+		//'over'
 		public Keyword getOverKeyword_3() { return cOverKeyword_3; }
-
+		
 		//overValue=[entity::LEntityFeature|LFQN]
 		public Assignment getOverValueAssignment_4() { return cOverValueAssignment_4; }
-
+		
 		//[entity::LEntityFeature|LFQN]
 		public CrossReference getOverValueLEntityFeatureCrossReference_4_0() { return cOverValueLEntityFeatureCrossReference_4_0; }
-
+		
 		//LFQN
 		public RuleCall getOverValueLEntityFeatureLFQNParserRuleCall_4_0_1() { return cOverValueLEntityFeatureLFQNParserRuleCall_4_0_1; }
-
-		//";"
-		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
-
+		
 		//hierarchLevels+=CubeLevel*
-		public Assignment getHierarchLevelsAssignment_6() { return cHierarchLevelsAssignment_6; }
-
+		public Assignment getHierarchLevelsAssignment_5() { return cHierarchLevelsAssignment_5; }
+		
 		//CubeLevel
-		public RuleCall getHierarchLevelsCubeLevelParserRuleCall_6_0() { return cHierarchLevelsCubeLevelParserRuleCall_6_0; }
-
+		public RuleCall getHierarchLevelsCubeLevelParserRuleCall_5_0() { return cHierarchLevelsCubeLevelParserRuleCall_5_0; }
+		
 		//dimEntity=CubeDimensionEntityEntity?
-		public Assignment getDimEntityAssignment_7() { return cDimEntityAssignment_7; }
-
+		public Assignment getDimEntityAssignment_6() { return cDimEntityAssignment_6; }
+		
 		//CubeDimensionEntityEntity
-		public RuleCall getDimEntityCubeDimensionEntityEntityParserRuleCall_7_0() { return cDimEntityCubeDimensionEntityEntityParserRuleCall_7_0; }
-
-		//"}"
-		public Keyword getRightCurlyBracketKeyword_8() { return cRightCurlyBracketKeyword_8; }
+		public RuleCall getDimEntityCubeDimensionEntityEntityParserRuleCall_6_0() { return cDimEntityCubeDimensionEntityEntityParserRuleCall_6_0; }
+		
+		//'}'
+		public Keyword getRightCurlyBracketKeyword_7() { return cRightCurlyBracketKeyword_7; }
 	}
-
 	public class CubeLevelElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeLevel");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeLevel");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cLevelKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
@@ -598,89 +593,80 @@
 		private final Keyword cLevelTypeLevelTypeKeyword_5_0_0 = (Keyword)cLevelTypeAssignment_5_0.eContents().get(0);
 		private final Assignment cLevelTypeValueAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
 		private final RuleCall cLevelTypeValueCubeLevelLevelTypeEnumRuleCall_5_1_0 = (RuleCall)cLevelTypeValueAssignment_5_1.eContents().get(0);
-		private final Alternatives cAlternatives_6 = (Alternatives)cGroup.eContents().get(6);
-		private final Keyword cSemicolonKeyword_6_0 = (Keyword)cAlternatives_6.eContents().get(0);
-		private final Group cGroup_6_1 = (Group)cAlternatives_6.eContents().get(1);
-		private final Keyword cLeftCurlyBracketKeyword_6_1_0 = (Keyword)cGroup_6_1.eContents().get(0);
-		private final Assignment cPropertiesAssignment_6_1_1 = (Assignment)cGroup_6_1.eContents().get(1);
-		private final RuleCall cPropertiesCubeLevelPropParserRuleCall_6_1_1_0 = (RuleCall)cPropertiesAssignment_6_1_1.eContents().get(0);
-		private final Keyword cRightCurlyBracketKeyword_6_1_2 = (Keyword)cGroup_6_1.eContents().get(2);
+		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
+		private final Keyword cLeftCurlyBracketKeyword_6_0 = (Keyword)cGroup_6.eContents().get(0);
+		private final Assignment cPropertiesAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
+		private final RuleCall cPropertiesCubeLevelPropParserRuleCall_6_1_0 = (RuleCall)cPropertiesAssignment_6_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_6_2 = (Keyword)cGroup_6.eContents().get(2);
 		
 		//CubeLevel:
-		//	"level" name=TRANSLATABLEID "column=" levelColValue=[entity::LEntityFeature|LFQN] uniqueMembers?="uniqueMembers"?
-		//	(levelType?="levelType=" levelTypeValue=CubeLevelLevelType)? (";" | "{" properties+=CubeLevelProp* "}");
-		public ParserRule getRule() { return rule; }
-
-		//"level" name=TRANSLATABLEID "column=" levelColValue=[entity::LEntityFeature|LFQN] uniqueMembers?="uniqueMembers"?
-		//(levelType?="levelType=" levelTypeValue=CubeLevelLevelType)? (";" | "{" properties+=CubeLevelProp* "}")
+		//	'level' name=TRANSLATABLEID 'column' levelColValue=[entity::LEntityFeature|LFQN] uniqueMembers?='uniqueMembers'?
+		//	(levelType?='levelType' levelTypeValue=CubeLevelLevelType)? ('{' properties+=CubeLevelProp* '}')?;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'level' name=TRANSLATABLEID 'column' levelColValue=[entity::LEntityFeature|LFQN] uniqueMembers?='uniqueMembers'?
+		//(levelType?='levelType' levelTypeValue=CubeLevelLevelType)? ('{' properties+=CubeLevelProp* '}')?
 		public Group getGroup() { return cGroup; }
-
-		//"level"
+		
+		//'level'
 		public Keyword getLevelKeyword_0() { return cLevelKeyword_0; }
-
+		
 		//name=TRANSLATABLEID
 		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
-
+		
 		//TRANSLATABLEID
 		public RuleCall getNameTRANSLATABLEIDParserRuleCall_1_0() { return cNameTRANSLATABLEIDParserRuleCall_1_0; }
-
-		//"column="
+		
+		//'column'
 		public Keyword getColumnKeyword_2() { return cColumnKeyword_2; }
-
+		
 		//levelColValue=[entity::LEntityFeature|LFQN]
 		public Assignment getLevelColValueAssignment_3() { return cLevelColValueAssignment_3; }
-
+		
 		//[entity::LEntityFeature|LFQN]
 		public CrossReference getLevelColValueLEntityFeatureCrossReference_3_0() { return cLevelColValueLEntityFeatureCrossReference_3_0; }
-
+		
 		//LFQN
 		public RuleCall getLevelColValueLEntityFeatureLFQNParserRuleCall_3_0_1() { return cLevelColValueLEntityFeatureLFQNParserRuleCall_3_0_1; }
-
-		//uniqueMembers?="uniqueMembers"?
+		
+		//uniqueMembers?='uniqueMembers'?
 		public Assignment getUniqueMembersAssignment_4() { return cUniqueMembersAssignment_4; }
-
-		//"uniqueMembers"
+		
+		//'uniqueMembers'
 		public Keyword getUniqueMembersUniqueMembersKeyword_4_0() { return cUniqueMembersUniqueMembersKeyword_4_0; }
-
-		//(levelType?="levelType=" levelTypeValue=CubeLevelLevelType)?
+		
+		//(levelType?='levelType' levelTypeValue=CubeLevelLevelType)?
 		public Group getGroup_5() { return cGroup_5; }
-
-		//levelType?="levelType="
+		
+		//levelType?='levelType'
 		public Assignment getLevelTypeAssignment_5_0() { return cLevelTypeAssignment_5_0; }
-
-		//"levelType="
+		
+		//'levelType'
 		public Keyword getLevelTypeLevelTypeKeyword_5_0_0() { return cLevelTypeLevelTypeKeyword_5_0_0; }
-
+		
 		//levelTypeValue=CubeLevelLevelType
 		public Assignment getLevelTypeValueAssignment_5_1() { return cLevelTypeValueAssignment_5_1; }
-
+		
 		//CubeLevelLevelType
 		public RuleCall getLevelTypeValueCubeLevelLevelTypeEnumRuleCall_5_1_0() { return cLevelTypeValueCubeLevelLevelTypeEnumRuleCall_5_1_0; }
-
-		//";" | "{" properties+=CubeLevelProp* "}"
-		public Alternatives getAlternatives_6() { return cAlternatives_6; }
-
-		//";"
-		public Keyword getSemicolonKeyword_6_0() { return cSemicolonKeyword_6_0; }
-
-		//"{" properties+=CubeLevelProp* "}"
-		public Group getGroup_6_1() { return cGroup_6_1; }
-
-		//"{"
-		public Keyword getLeftCurlyBracketKeyword_6_1_0() { return cLeftCurlyBracketKeyword_6_1_0; }
-
+		
+		//('{' properties+=CubeLevelProp* '}')?
+		public Group getGroup_6() { return cGroup_6; }
+		
+		//'{'
+		public Keyword getLeftCurlyBracketKeyword_6_0() { return cLeftCurlyBracketKeyword_6_0; }
+		
 		//properties+=CubeLevelProp*
-		public Assignment getPropertiesAssignment_6_1_1() { return cPropertiesAssignment_6_1_1; }
-
+		public Assignment getPropertiesAssignment_6_1() { return cPropertiesAssignment_6_1; }
+		
 		//CubeLevelProp
-		public RuleCall getPropertiesCubeLevelPropParserRuleCall_6_1_1_0() { return cPropertiesCubeLevelPropParserRuleCall_6_1_1_0; }
-
-		//"}"
-		public Keyword getRightCurlyBracketKeyword_6_1_2() { return cRightCurlyBracketKeyword_6_1_2; }
+		public RuleCall getPropertiesCubeLevelPropParserRuleCall_6_1_0() { return cPropertiesCubeLevelPropParserRuleCall_6_1_0; }
+		
+		//'}'
+		public Keyword getRightCurlyBracketKeyword_6_2() { return cRightCurlyBracketKeyword_6_2; }
 	}
-
 	public class CubeLevelPropElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeLevelProp");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeLevelProp");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cPropertyKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
@@ -694,59 +680,54 @@
 		private final Keyword cTypeTypeKeyword_4_0_0 = (Keyword)cTypeAssignment_4_0.eContents().get(0);
 		private final Assignment cTypeValueAssignment_4_1 = (Assignment)cGroup_4.eContents().get(1);
 		private final RuleCall cTypeValueCubeLevelPropTypeEnumRuleCall_4_1_0 = (RuleCall)cTypeValueAssignment_4_1.eContents().get(0);
-		private final Keyword cSemicolonKeyword_5 = (Keyword)cGroup.eContents().get(5);
 		
 		//CubeLevelProp:
-		//	"property" name=TRANSLATABLEID "column=" levelPropColValue=[entity::LEntityFeature|LFQN] (type?="type="
-		//	typeValue=CubeLevelPropType)? ";";
-		public ParserRule getRule() { return rule; }
-
-		//"property" name=TRANSLATABLEID "column=" levelPropColValue=[entity::LEntityFeature|LFQN] (type?="type="
-		//typeValue=CubeLevelPropType)? ";"
+		//	'property' name=TRANSLATABLEID 'column' levelPropColValue=[entity::LEntityFeature|LFQN] (type?='type'
+		//	typeValue=CubeLevelPropType)?;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'property' name=TRANSLATABLEID 'column' levelPropColValue=[entity::LEntityFeature|LFQN] (type?='type'
+		//typeValue=CubeLevelPropType)?
 		public Group getGroup() { return cGroup; }
-
-		//"property"
+		
+		//'property'
 		public Keyword getPropertyKeyword_0() { return cPropertyKeyword_0; }
-
+		
 		//name=TRANSLATABLEID
 		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
-
+		
 		//TRANSLATABLEID
 		public RuleCall getNameTRANSLATABLEIDParserRuleCall_1_0() { return cNameTRANSLATABLEIDParserRuleCall_1_0; }
-
-		//"column="
+		
+		//'column'
 		public Keyword getColumnKeyword_2() { return cColumnKeyword_2; }
-
+		
 		//levelPropColValue=[entity::LEntityFeature|LFQN]
 		public Assignment getLevelPropColValueAssignment_3() { return cLevelPropColValueAssignment_3; }
-
+		
 		//[entity::LEntityFeature|LFQN]
 		public CrossReference getLevelPropColValueLEntityFeatureCrossReference_3_0() { return cLevelPropColValueLEntityFeatureCrossReference_3_0; }
-
+		
 		//LFQN
 		public RuleCall getLevelPropColValueLEntityFeatureLFQNParserRuleCall_3_0_1() { return cLevelPropColValueLEntityFeatureLFQNParserRuleCall_3_0_1; }
-
-		//(type?="type=" typeValue=CubeLevelPropType)?
+		
+		//(type?='type' typeValue=CubeLevelPropType)?
 		public Group getGroup_4() { return cGroup_4; }
-
-		//type?="type="
+		
+		//type?='type'
 		public Assignment getTypeAssignment_4_0() { return cTypeAssignment_4_0; }
-
-		//"type="
+		
+		//'type'
 		public Keyword getTypeTypeKeyword_4_0_0() { return cTypeTypeKeyword_4_0_0; }
-
+		
 		//typeValue=CubeLevelPropType
 		public Assignment getTypeValueAssignment_4_1() { return cTypeValueAssignment_4_1; }
-
+		
 		//CubeLevelPropType
 		public RuleCall getTypeValueCubeLevelPropTypeEnumRuleCall_4_1_0() { return cTypeValueCubeLevelPropTypeEnumRuleCall_4_1_0; }
-
-		//";"
-		public Keyword getSemicolonKeyword_5() { return cSemicolonKeyword_5; }
 	}
-
 	public class CubeMeasureElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeMeasure");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeMeasure");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cMeasureKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cNameAssignment_1 = (Assignment)cGroup.eContents().get(1);
@@ -759,152 +740,51 @@
 		private final RuleCall cMeasureColLEntityFeatureLFQNParserRuleCall_4_0_1 = (RuleCall)cMeasureColLEntityFeatureCrossReference_4_0.eContents().get(1);
 		private final Assignment cNotVisibleAssignment_5 = (Assignment)cGroup.eContents().get(5);
 		private final Keyword cNotVisibleNotVisibleKeyword_5_0 = (Keyword)cNotVisibleAssignment_5.eContents().get(0);
-		private final Keyword cSemicolonKeyword_6 = (Keyword)cGroup.eContents().get(6);
 		
 		//CubeMeasure:
-		//	"measure" name=TRANSLATABLEID aggregator=CubeAggregatorEnum "column=" measureCol=[entity::LEntityFeature|LFQN]
-		//	notVisible?="notVisible"? ";";
-		public ParserRule getRule() { return rule; }
-
-		//"measure" name=TRANSLATABLEID aggregator=CubeAggregatorEnum "column=" measureCol=[entity::LEntityFeature|LFQN]
-		//notVisible?="notVisible"? ";"
+		//	'measure' name=TRANSLATABLEID aggregator=CubeAggregatorEnum 'column' measureCol=[entity::LEntityFeature|LFQN]
+		//	notVisible?='notVisible'?;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'measure' name=TRANSLATABLEID aggregator=CubeAggregatorEnum 'column' measureCol=[entity::LEntityFeature|LFQN]
+		//notVisible?='notVisible'?
 		public Group getGroup() { return cGroup; }
-
-		//"measure"
+		
+		//'measure'
 		public Keyword getMeasureKeyword_0() { return cMeasureKeyword_0; }
-
+		
 		//name=TRANSLATABLEID
 		public Assignment getNameAssignment_1() { return cNameAssignment_1; }
-
+		
 		//TRANSLATABLEID
 		public RuleCall getNameTRANSLATABLEIDParserRuleCall_1_0() { return cNameTRANSLATABLEIDParserRuleCall_1_0; }
-
+		
 		//aggregator=CubeAggregatorEnum
 		public Assignment getAggregatorAssignment_2() { return cAggregatorAssignment_2; }
-
+		
 		//CubeAggregatorEnum
 		public RuleCall getAggregatorCubeAggregatorEnumEnumRuleCall_2_0() { return cAggregatorCubeAggregatorEnumEnumRuleCall_2_0; }
-
-		//"column="
+		
+		//'column'
 		public Keyword getColumnKeyword_3() { return cColumnKeyword_3; }
-
+		
 		//measureCol=[entity::LEntityFeature|LFQN]
 		public Assignment getMeasureColAssignment_4() { return cMeasureColAssignment_4; }
-
+		
 		//[entity::LEntityFeature|LFQN]
 		public CrossReference getMeasureColLEntityFeatureCrossReference_4_0() { return cMeasureColLEntityFeatureCrossReference_4_0; }
-
+		
 		//LFQN
 		public RuleCall getMeasureColLEntityFeatureLFQNParserRuleCall_4_0_1() { return cMeasureColLEntityFeatureLFQNParserRuleCall_4_0_1; }
-
-		//notVisible?="notVisible"?
+		
+		//notVisible?='notVisible'?
 		public Assignment getNotVisibleAssignment_5() { return cNotVisibleAssignment_5; }
-
-		//"notVisible"
+		
+		//'notVisible'
 		public Keyword getNotVisibleNotVisibleKeyword_5_0() { return cNotVisibleNotVisibleKeyword_5_0; }
-
-		//";"
-		public Keyword getSemicolonKeyword_6() { return cSemicolonKeyword_6; }
 	}
-
-	public class ImportElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Import");
-		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 cImportedNamespaceCubeQualifiedNameWithWildCardParserRuleCall_1_0 = (RuleCall)cImportedNamespaceAssignment_1.eContents().get(0);
-		private final Keyword cSemicolonKeyword_2 = (Keyword)cGroup.eContents().get(2);
-		
-		//Import returns LImport:
-		//	"import" importedNamespace=CubeQualifiedNameWithWildCard ";";
-		public ParserRule getRule() { return rule; }
-
-		//"import" importedNamespace=CubeQualifiedNameWithWildCard ";"
-		public Group getGroup() { return cGroup; }
-
-		//"import"
-		public Keyword getImportKeyword_0() { return cImportKeyword_0; }
-
-		//importedNamespace=CubeQualifiedNameWithWildCard
-		public Assignment getImportedNamespaceAssignment_1() { return cImportedNamespaceAssignment_1; }
-
-		//CubeQualifiedNameWithWildCard
-		public RuleCall getImportedNamespaceCubeQualifiedNameWithWildCardParserRuleCall_1_0() { return cImportedNamespaceCubeQualifiedNameWithWildCardParserRuleCall_1_0; }
-
-		//";"
-		public Keyword getSemicolonKeyword_2() { return cSemicolonKeyword_2; }
-	}
-
-	public class CubeQualifiedNameWithWildCardElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "CubeQualifiedNameWithWildCard");
-		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);
-		
-		//CubeQualifiedNameWithWildCard:
-		//	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 LFQNElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "LFQN");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.cubedsl.CubeDSL.LFQN");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final RuleCall cIDTerminalRuleCall_0 = (RuleCall)cGroup.eContents().get(0);
 		private final Group cGroup_1 = (Group)cGroup.eContents().get(1);
@@ -912,52 +792,49 @@
 		private final RuleCall cIDTerminalRuleCall_1_1 = (RuleCall)cGroup_1.eContents().get(1);
 		
 		//LFQN:
-		//	ID ("." ID)*;
-		public ParserRule getRule() { return rule; }
-
-		//ID ("." ID)*
+		//	ID ('.' ID)*;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//ID ('.' ID)*
 		public Group getGroup() { return cGroup; }
-
+		
 		//ID
 		public RuleCall getIDTerminalRuleCall_0() { return cIDTerminalRuleCall_0; }
-
-		//("." ID)*
+		
+		//('.' ID)*
 		public Group getGroup_1() { return cGroup_1; }
-
-		//"."
+		
+		//'.'
 		public Keyword getFullStopKeyword_1_0() { return cFullStopKeyword_1_0; }
-
+		
 		//ID
 		public RuleCall getIDTerminalRuleCall_1_1() { return cIDTerminalRuleCall_1_1; }
 	}
-
 	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.cubedsl.CubeDSL.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.cubedsl.CubeDSL.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 CubeAggregatorEnumElements extends AbstractEnumRuleElementFinder {
-		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "CubeAggregatorEnum");
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeAggregatorEnum");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cSUMEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
 		private final Keyword cSUMSumKeyword_0_0 = (Keyword)cSUMEnumLiteralDeclaration_0.eContents().get(0);
@@ -973,51 +850,50 @@
 		private final Keyword cDSCDistinctCountKeyword_5_0 = (Keyword)cDSCEnumLiteralDeclaration_5.eContents().get(0);
 		
 		//enum CubeAggregatorEnum:
-		//	SUM="sum" | COUNT="count" | MIN="min" | MAX="max" | AVG="avg" | DSC="distinct-count";
+		//	SUM='sum' | COUNT='count' | MIN='min' | MAX='max' | AVG='avg' | DSC='distinct-count';
 		public EnumRule getRule() { return rule; }
-
-		//SUM="sum" | COUNT="count" | MIN="min" | MAX="max" | AVG="avg" | DSC="distinct-count"
+		
+		//SUM='sum' | COUNT='count' | MIN='min' | MAX='max' | AVG='avg' | DSC='distinct-count'
 		public Alternatives getAlternatives() { return cAlternatives; }
-
-		//SUM="sum"
+		
+		//SUM='sum'
 		public EnumLiteralDeclaration getSUMEnumLiteralDeclaration_0() { return cSUMEnumLiteralDeclaration_0; }
-
-		//"sum"
+		
+		//'sum'
 		public Keyword getSUMSumKeyword_0_0() { return cSUMSumKeyword_0_0; }
-
-		//COUNT="count"
+		
+		//COUNT='count'
 		public EnumLiteralDeclaration getCOUNTEnumLiteralDeclaration_1() { return cCOUNTEnumLiteralDeclaration_1; }
-
-		//"count"
+		
+		//'count'
 		public Keyword getCOUNTCountKeyword_1_0() { return cCOUNTCountKeyword_1_0; }
-
-		//MIN="min"
+		
+		//MIN='min'
 		public EnumLiteralDeclaration getMINEnumLiteralDeclaration_2() { return cMINEnumLiteralDeclaration_2; }
-
-		//"min"
+		
+		//'min'
 		public Keyword getMINMinKeyword_2_0() { return cMINMinKeyword_2_0; }
-
-		//MAX="max"
+		
+		//MAX='max'
 		public EnumLiteralDeclaration getMAXEnumLiteralDeclaration_3() { return cMAXEnumLiteralDeclaration_3; }
-
-		//"max"
+		
+		//'max'
 		public Keyword getMAXMaxKeyword_3_0() { return cMAXMaxKeyword_3_0; }
-
-		//AVG="avg"
+		
+		//AVG='avg'
 		public EnumLiteralDeclaration getAVGEnumLiteralDeclaration_4() { return cAVGEnumLiteralDeclaration_4; }
-
-		//"avg"
+		
+		//'avg'
 		public Keyword getAVGAvgKeyword_4_0() { return cAVGAvgKeyword_4_0; }
-
-		//DSC="distinct-count"
+		
+		//DSC='distinct-count'
 		public EnumLiteralDeclaration getDSCEnumLiteralDeclaration_5() { return cDSCEnumLiteralDeclaration_5; }
-
-		//"distinct-count"
+		
+		//'distinct-count'
 		public Keyword getDSCDistinctCountKeyword_5_0() { return cDSCDistinctCountKeyword_5_0; }
 	}
-
 	public class CubeLevelPropTypeElements extends AbstractEnumRuleElementFinder {
-		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "CubeLevelPropType");
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeLevelPropType");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cSTRINGEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
 		private final Keyword cSTRINGStringKeyword_0_0 = (Keyword)cSTRINGEnumLiteralDeclaration_0.eContents().get(0);
@@ -1035,59 +911,58 @@
 		private final Keyword cTIMESTAMPTimestampKeyword_6_0 = (Keyword)cTIMESTAMPEnumLiteralDeclaration_6.eContents().get(0);
 		
 		//enum CubeLevelPropType:
-		//	STRING="String" | NUMERIC="Numeric" | INTEGER="Integer" | BOOLEAN="Boolean" | DATE="Date" | TIME="Time" |
-		//	TIMESTAMP="Timestamp";
+		//	STRING='String' | NUMERIC='Numeric' | INTEGER='Integer' | BOOLEAN='Boolean' | DATE='Date' | TIME='Time' |
+		//	TIMESTAMP='Timestamp';
 		public EnumRule getRule() { return rule; }
-
-		//STRING="String" | NUMERIC="Numeric" | INTEGER="Integer" | BOOLEAN="Boolean" | DATE="Date" | TIME="Time" |
-		//TIMESTAMP="Timestamp"
+		
+		//STRING='String' | NUMERIC='Numeric' | INTEGER='Integer' | BOOLEAN='Boolean' | DATE='Date' | TIME='Time' |
+		//TIMESTAMP='Timestamp'
 		public Alternatives getAlternatives() { return cAlternatives; }
-
-		//STRING="String"
+		
+		//STRING='String'
 		public EnumLiteralDeclaration getSTRINGEnumLiteralDeclaration_0() { return cSTRINGEnumLiteralDeclaration_0; }
-
-		//"String"
+		
+		//'String'
 		public Keyword getSTRINGStringKeyword_0_0() { return cSTRINGStringKeyword_0_0; }
-
-		//NUMERIC="Numeric"
+		
+		//NUMERIC='Numeric'
 		public EnumLiteralDeclaration getNUMERICEnumLiteralDeclaration_1() { return cNUMERICEnumLiteralDeclaration_1; }
-
-		//"Numeric"
+		
+		//'Numeric'
 		public Keyword getNUMERICNumericKeyword_1_0() { return cNUMERICNumericKeyword_1_0; }
-
-		//INTEGER="Integer"
+		
+		//INTEGER='Integer'
 		public EnumLiteralDeclaration getINTEGEREnumLiteralDeclaration_2() { return cINTEGEREnumLiteralDeclaration_2; }
-
-		//"Integer"
+		
+		//'Integer'
 		public Keyword getINTEGERIntegerKeyword_2_0() { return cINTEGERIntegerKeyword_2_0; }
-
-		//BOOLEAN="Boolean"
+		
+		//BOOLEAN='Boolean'
 		public EnumLiteralDeclaration getBOOLEANEnumLiteralDeclaration_3() { return cBOOLEANEnumLiteralDeclaration_3; }
-
-		//"Boolean"
+		
+		//'Boolean'
 		public Keyword getBOOLEANBooleanKeyword_3_0() { return cBOOLEANBooleanKeyword_3_0; }
-
-		//DATE="Date"
+		
+		//DATE='Date'
 		public EnumLiteralDeclaration getDATEEnumLiteralDeclaration_4() { return cDATEEnumLiteralDeclaration_4; }
-
-		//"Date"
+		
+		//'Date'
 		public Keyword getDATEDateKeyword_4_0() { return cDATEDateKeyword_4_0; }
-
-		//TIME="Time"
+		
+		//TIME='Time'
 		public EnumLiteralDeclaration getTIMEEnumLiteralDeclaration_5() { return cTIMEEnumLiteralDeclaration_5; }
-
-		//"Time"
+		
+		//'Time'
 		public Keyword getTIMETimeKeyword_5_0() { return cTIMETimeKeyword_5_0; }
-
-		//TIMESTAMP="Timestamp"
+		
+		//TIMESTAMP='Timestamp'
 		public EnumLiteralDeclaration getTIMESTAMPEnumLiteralDeclaration_6() { return cTIMESTAMPEnumLiteralDeclaration_6; }
-
-		//"Timestamp"
+		
+		//'Timestamp'
 		public Keyword getTIMESTAMPTimestampKeyword_6_0() { return cTIMESTAMPTimestampKeyword_6_0; }
 	}
-
 	public class CubeLevelLevelTypeElements extends AbstractEnumRuleElementFinder {
-		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "CubeLevelLevelType");
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.cubedsl.CubeDSL.CubeLevelLevelType");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
 		private final Keyword cMDLEVEL_TYPE_TIMETimeKeyword_0_0 = (Keyword)cMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0.eContents().get(0);
@@ -1111,76 +986,77 @@
 		private final Keyword cMDLEVEL_TYPE_TIME_SECONDSTimeSecondsKeyword_9_0 = (Keyword)cMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9.eContents().get(0);
 		
 		//enum CubeLevelLevelType:
-		//	MDLEVEL_TYPE_TIME="Time" | MDLEVEL_TYPE_TIME_YEARS="TimeYears" | MDLEVEL_TYPE_TIME_HALF_YEARS="TimeHalfYears" |
-		//	MDLEVEL_TYPE_TIME_QUARTERS="TimeQuarters" | MDLEVEL_TYPE_TIME_MONTHS="TimeMonths" |
-		//	MDLEVEL_TYPE_TIME_WEEKS="TimeWeeks" | MDLEVEL_TYPE_TIME_DAYS="TimeDays" | MDLEVEL_TYPE_TIME_HOURS="TimeHours" |
-		//	MDLEVEL_TYPE_TIME_MINUTES="TimeMinutes" | MDLEVEL_TYPE_TIME_SECONDS="TimeSeconds";
+		//	MDLEVEL_TYPE_TIME='Time' | MDLEVEL_TYPE_TIME_YEARS='TimeYears' | MDLEVEL_TYPE_TIME_HALF_YEARS='TimeHalfYears' |
+		//	MDLEVEL_TYPE_TIME_QUARTERS='TimeQuarters' | MDLEVEL_TYPE_TIME_MONTHS='TimeMonths' |
+		//	MDLEVEL_TYPE_TIME_WEEKS='TimeWeeks' |
+		//	MDLEVEL_TYPE_TIME_DAYS='TimeDays' | MDLEVEL_TYPE_TIME_HOURS='TimeHours' | MDLEVEL_TYPE_TIME_MINUTES='TimeMinutes' |
+		//	MDLEVEL_TYPE_TIME_SECONDS='TimeSeconds';
 		public EnumRule getRule() { return rule; }
-
-		//MDLEVEL_TYPE_TIME="Time" | MDLEVEL_TYPE_TIME_YEARS="TimeYears" | MDLEVEL_TYPE_TIME_HALF_YEARS="TimeHalfYears" |
-		//MDLEVEL_TYPE_TIME_QUARTERS="TimeQuarters" | MDLEVEL_TYPE_TIME_MONTHS="TimeMonths" | MDLEVEL_TYPE_TIME_WEEKS="TimeWeeks"
-		//| MDLEVEL_TYPE_TIME_DAYS="TimeDays" | MDLEVEL_TYPE_TIME_HOURS="TimeHours" | MDLEVEL_TYPE_TIME_MINUTES="TimeMinutes" |
-		//MDLEVEL_TYPE_TIME_SECONDS="TimeSeconds"
+		
+		//MDLEVEL_TYPE_TIME='Time' | MDLEVEL_TYPE_TIME_YEARS='TimeYears' | MDLEVEL_TYPE_TIME_HALF_YEARS='TimeHalfYears' |
+		//MDLEVEL_TYPE_TIME_QUARTERS='TimeQuarters' | MDLEVEL_TYPE_TIME_MONTHS='TimeMonths' | MDLEVEL_TYPE_TIME_WEEKS='TimeWeeks'
+		//| MDLEVEL_TYPE_TIME_DAYS='TimeDays' | MDLEVEL_TYPE_TIME_HOURS='TimeHours' | MDLEVEL_TYPE_TIME_MINUTES='TimeMinutes' |
+		//MDLEVEL_TYPE_TIME_SECONDS='TimeSeconds'
 		public Alternatives getAlternatives() { return cAlternatives; }
-
-		//MDLEVEL_TYPE_TIME="Time"
+		
+		//MDLEVEL_TYPE_TIME='Time'
 		public EnumLiteralDeclaration getMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0() { return cMDLEVEL_TYPE_TIMEEnumLiteralDeclaration_0; }
-
-		//"Time"
+		
+		//'Time'
 		public Keyword getMDLEVEL_TYPE_TIMETimeKeyword_0_0() { return cMDLEVEL_TYPE_TIMETimeKeyword_0_0; }
-
-		//MDLEVEL_TYPE_TIME_YEARS="TimeYears"
+		
+		//MDLEVEL_TYPE_TIME_YEARS='TimeYears'
 		public EnumLiteralDeclaration getMDLEVEL_TYPE_TIME_YEARSEnumLiteralDeclaration_1() { return cMDLEVEL_TYPE_TIME_YEARSEnumLiteralDeclaration_1; }
-
-		//"TimeYears"
+		
+		//'TimeYears'
 		public Keyword getMDLEVEL_TYPE_TIME_YEARSTimeYearsKeyword_1_0() { return cMDLEVEL_TYPE_TIME_YEARSTimeYearsKeyword_1_0; }
-
-		//MDLEVEL_TYPE_TIME_HALF_YEARS="TimeHalfYears"
+		
+		//MDLEVEL_TYPE_TIME_HALF_YEARS='TimeHalfYears'
 		public EnumLiteralDeclaration getMDLEVEL_TYPE_TIME_HALF_YEARSEnumLiteralDeclaration_2() { return cMDLEVEL_TYPE_TIME_HALF_YEARSEnumLiteralDeclaration_2; }
-
-		//"TimeHalfYears"
+		
+		//'TimeHalfYears'
 		public Keyword getMDLEVEL_TYPE_TIME_HALF_YEARSTimeHalfYearsKeyword_2_0() { return cMDLEVEL_TYPE_TIME_HALF_YEARSTimeHalfYearsKeyword_2_0; }
-
-		//MDLEVEL_TYPE_TIME_QUARTERS="TimeQuarters"
+		
+		//MDLEVEL_TYPE_TIME_QUARTERS='TimeQuarters'
 		public EnumLiteralDeclaration getMDLEVEL_TYPE_TIME_QUARTERSEnumLiteralDeclaration_3() { return cMDLEVEL_TYPE_TIME_QUARTERSEnumLiteralDeclaration_3; }
-
-		//"TimeQuarters"
+		
+		//'TimeQuarters'
 		public Keyword getMDLEVEL_TYPE_TIME_QUARTERSTimeQuartersKeyword_3_0() { return cMDLEVEL_TYPE_TIME_QUARTERSTimeQuartersKeyword_3_0; }
-
-		//MDLEVEL_TYPE_TIME_MONTHS="TimeMonths"
+		
+		//MDLEVEL_TYPE_TIME_MONTHS='TimeMonths'
 		public EnumLiteralDeclaration getMDLEVEL_TYPE_TIME_MONTHSEnumLiteralDeclaration_4() { return cMDLEVEL_TYPE_TIME_MONTHSEnumLiteralDeclaration_4; }
-
-		//"TimeMonths"
+		
+		//'TimeMonths'
 		public Keyword getMDLEVEL_TYPE_TIME_MONTHSTimeMonthsKeyword_4_0() { return cMDLEVEL_TYPE_TIME_MONTHSTimeMonthsKeyword_4_0; }
-
-		//MDLEVEL_TYPE_TIME_WEEKS="TimeWeeks"
+		
+		//MDLEVEL_TYPE_TIME_WEEKS='TimeWeeks'
 		public EnumLiteralDeclaration getMDLEVEL_TYPE_TIME_WEEKSEnumLiteralDeclaration_5() { return cMDLEVEL_TYPE_TIME_WEEKSEnumLiteralDeclaration_5; }
-
-		//"TimeWeeks"
+		
+		//'TimeWeeks'
 		public Keyword getMDLEVEL_TYPE_TIME_WEEKSTimeWeeksKeyword_5_0() { return cMDLEVEL_TYPE_TIME_WEEKSTimeWeeksKeyword_5_0; }
-
-		//MDLEVEL_TYPE_TIME_DAYS="TimeDays"
+		
+		//MDLEVEL_TYPE_TIME_DAYS='TimeDays'
 		public EnumLiteralDeclaration getMDLEVEL_TYPE_TIME_DAYSEnumLiteralDeclaration_6() { return cMDLEVEL_TYPE_TIME_DAYSEnumLiteralDeclaration_6; }
-
-		//"TimeDays"
+		
+		//'TimeDays'
 		public Keyword getMDLEVEL_TYPE_TIME_DAYSTimeDaysKeyword_6_0() { return cMDLEVEL_TYPE_TIME_DAYSTimeDaysKeyword_6_0; }
-
-		//MDLEVEL_TYPE_TIME_HOURS="TimeHours"
+		
+		//MDLEVEL_TYPE_TIME_HOURS='TimeHours'
 		public EnumLiteralDeclaration getMDLEVEL_TYPE_TIME_HOURSEnumLiteralDeclaration_7() { return cMDLEVEL_TYPE_TIME_HOURSEnumLiteralDeclaration_7; }
-
-		//"TimeHours"
+		
+		//'TimeHours'
 		public Keyword getMDLEVEL_TYPE_TIME_HOURSTimeHoursKeyword_7_0() { return cMDLEVEL_TYPE_TIME_HOURSTimeHoursKeyword_7_0; }
-
-		//MDLEVEL_TYPE_TIME_MINUTES="TimeMinutes"
+		
+		//MDLEVEL_TYPE_TIME_MINUTES='TimeMinutes'
 		public EnumLiteralDeclaration getMDLEVEL_TYPE_TIME_MINUTESEnumLiteralDeclaration_8() { return cMDLEVEL_TYPE_TIME_MINUTESEnumLiteralDeclaration_8; }
-
-		//"TimeMinutes"
+		
+		//'TimeMinutes'
 		public Keyword getMDLEVEL_TYPE_TIME_MINUTESTimeMinutesKeyword_8_0() { return cMDLEVEL_TYPE_TIME_MINUTESTimeMinutesKeyword_8_0; }
-
-		//MDLEVEL_TYPE_TIME_SECONDS="TimeSeconds"
+		
+		//MDLEVEL_TYPE_TIME_SECONDS='TimeSeconds'
 		public EnumLiteralDeclaration getMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9() { return cMDLEVEL_TYPE_TIME_SECONDSEnumLiteralDeclaration_9; }
-
-		//"TimeSeconds"
+		
+		//'TimeSeconds'
 		public Keyword getMDLEVEL_TYPE_TIME_SECONDSTimeSecondsKeyword_9_0() { return cMDLEVEL_TYPE_TIME_SECONDSTimeSecondsKeyword_9_0; }
 	}
 	
@@ -1197,26 +1073,34 @@
 	private final CubeLevelElements pCubeLevel;
 	private final CubeLevelPropElements pCubeLevelProp;
 	private final CubeMeasureElements pCubeMeasure;
-	private final CubeAggregatorEnumElements unknownRuleCubeAggregatorEnum;
-	private final CubeLevelPropTypeElements unknownRuleCubeLevelPropType;
-	private final CubeLevelLevelTypeElements unknownRuleCubeLevelLevelType;
-	private final ImportElements pImport;
-	private final CubeQualifiedNameWithWildCardElements pCubeQualifiedNameWithWildCard;
-	private final QualifiedNameElements pQualifiedName;
-	private final ValidIDElements pValidID;
+	private final CubeAggregatorEnumElements eCubeAggregatorEnum;
+	private final CubeLevelPropTypeElements eCubeLevelPropType;
+	private final CubeLevelLevelTypeElements eCubeLevelLevelType;
 	private final LFQNElements pLFQN;
 	private final TRANSLATABLEIDElements pTRANSLATABLEID;
 	private final TRANSLATABLESTRINGElements pTRANSLATABLESTRING;
 	
 	private final Grammar grammar;
-
+	
+	private final OXtypeGrammarAccess gaOXtype;
+	
 	private final XbaseWithAnnotationsGrammarAccess gaXbaseWithAnnotations;
+	
+	private final XbaseGrammarAccess gaXbase;
+	
+	private final XtypeGrammarAccess gaXtype;
 
 	@Inject
 	public CubeDSLGrammarAccess(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.pCubeModel = new CubeModelElements();
 		this.pCubePackage = new CubePackageElements();
 		this.pCubeType = new CubeTypeElements();
@@ -1230,13 +1114,9 @@
 		this.pCubeLevel = new CubeLevelElements();
 		this.pCubeLevelProp = new CubeLevelPropElements();
 		this.pCubeMeasure = new CubeMeasureElements();
-		this.unknownRuleCubeAggregatorEnum = new CubeAggregatorEnumElements();
-		this.unknownRuleCubeLevelPropType = new CubeLevelPropTypeElements();
-		this.unknownRuleCubeLevelLevelType = new CubeLevelLevelTypeElements();
-		this.pImport = new ImportElements();
-		this.pCubeQualifiedNameWithWildCard = new CubeQualifiedNameWithWildCardElements();
-		this.pQualifiedName = new QualifiedNameElements();
-		this.pValidID = new ValidIDElements();
+		this.eCubeAggregatorEnum = new CubeAggregatorEnumElements();
+		this.eCubeLevelPropType = new CubeLevelPropTypeElements();
+		this.eCubeLevelLevelType = new CubeLevelLevelTypeElements();
 		this.pLFQN = new LFQNElements();
 		this.pTRANSLATABLEID = new TRANSLATABLEIDElements();
 		this.pTRANSLATABLESTRING = new TRANSLATABLESTRINGElements();
@@ -1258,19 +1138,32 @@
 		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;
+	}
 
 	
 	//CubeModel:
-	//	{CubeModel} pckg=CubePackage;
+	//	{CubeModel} importSection=XImportSection?
+	//	pckg=CubePackage;
 	public CubeModelElements getCubeModelAccess() {
 		return pCubeModel;
 	}
@@ -1278,9 +1171,9 @@
 	public ParserRule getCubeModelRule() {
 		return getCubeModelAccess().getRule();
 	}
-
+	
 	//CubePackage:
-	//	"package" name=QualifiedName ("{" imports+=Import* dimensions+=CubeDimension* cubes+=CubeType* "}")?;
+	//	'package' name=QualifiedName ('{' dimensions+=CubeDimension* cubes+=CubeType* '}')?;
 	public CubePackageElements getCubePackageAccess() {
 		return pCubePackage;
 	}
@@ -1288,9 +1181,9 @@
 	public ParserRule getCubePackageRule() {
 		return getCubePackageAccess().getRule();
 	}
-
+	
 	//CubeType:
-	//	"cube" name=ID (defaultMeasure?="defaultMeasure" defaultMeasureValue=STRING)? "{" cubeTypeEntity=CubeTypeEntity "}";
+	//	'cube' name=ID (defaultMeasure?='defaultMeasure' defaultMeasureValue=STRING)? '{' cubeTypeEntity=CubeTypeEntity '}';
 	public CubeTypeElements getCubeTypeAccess() {
 		return pCubeType;
 	}
@@ -1298,9 +1191,9 @@
 	public ParserRule getCubeTypeRule() {
 		return getCubeTypeAccess().getRule();
 	}
-
+	
 	//CubeDimensionUsage:
-	//	"dimensionUsage" sourceValue=[CubeDimension] "over" overValue=[entity::LEntityFeature|LFQN] ";";
+	//	'dimensionUsage' sourceValue=[CubeDimension] 'over' overValue=[entity::LEntityFeature|LFQN];
 	public CubeDimensionUsageElements getCubeDimensionUsageAccess() {
 		return pCubeDimensionUsage;
 	}
@@ -1308,9 +1201,9 @@
 	public ParserRule getCubeDimensionUsageRule() {
 		return getCubeDimensionUsageAccess().getRule();
 	}
-
+	
 	//CubeDimension:
-	//	"dimension" name=TRANSLATABLEID typeTime?="typeTime"? "{" hierarchies+=CubeHierarchy* "}";
+	//	'dimension' name=TRANSLATABLEID typeTime?='typeTime'? '{' hierarchies+=CubeHierarchy* '}';
 	public CubeDimensionElements getCubeDimensionAccess() {
 		return pCubeDimension;
 	}
@@ -1318,11 +1211,11 @@
 	public ParserRule getCubeDimensionRule() {
 		return getCubeDimensionAccess().getRule();
 	}
-
+	
 	//CubeHierarchy:
-	//	{CubeHierarchy} "hierarchy" name=TRANSLATABLEID? hasAll?="hasAll"? (allMemberName?="allMemberName="
-	//	allMemberNameValue=TRANSLATABLESTRING)? (defaultMember?="defaultMember=" defaultMemberValue=TRANSLATABLESTRING)? "{"
-	//	cubeDimEntity=CubeDimensionEntity "}";
+	//	{CubeHierarchy} 'hierarchy' name=TRANSLATABLEID? hasAll?='hasAll'? (allMemberName?='allMemberName'
+	//	allMemberNameValue=TRANSLATABLESTRING)? (defaultMember?='defaultMember' defaultMemberValue=TRANSLATABLESTRING)?
+	//	'{' cubeDimEntity=CubeDimensionEntity '}';
 	public CubeHierarchyElements getCubeHierarchyAccess() {
 		return pCubeHierarchy;
 	}
@@ -1330,9 +1223,9 @@
 	public ParserRule getCubeHierarchyRule() {
 		return getCubeHierarchyAccess().getRule();
 	}
-
+	
 	//CubeEntity:
-	//	"entity" entityValue=[entity::LEntity|LFQN] (key?="key=" keyValue=[entity::LEntityFeature|LFQN])?;
+	//	'entity' entityValue=[entity::LEntity|LFQN] (key?='key' keyValue=[entity::LEntityFeature|LFQN])?;
 	public CubeEntityElements getCubeEntityAccess() {
 		return pCubeEntity;
 	}
@@ -1340,9 +1233,9 @@
 	public ParserRule getCubeEntityRule() {
 		return getCubeEntityAccess().getRule();
 	}
-
+	
 	//CubeTypeEntity:
-	//	entityRef=CubeEntity "{" dimensionUsages+=CubeDimensionUsage* measures+=CubeMeasure* "}";
+	//	entityRef=CubeEntity '{' dimensionUsages+=CubeDimensionUsage* measures+=CubeMeasure* '}';
 	public CubeTypeEntityElements getCubeTypeEntityAccess() {
 		return pCubeTypeEntity;
 	}
@@ -1350,9 +1243,9 @@
 	public ParserRule getCubeTypeEntityRule() {
 		return getCubeTypeEntityAccess().getRule();
 	}
-
+	
 	//CubeDimensionEntity:
-	//	{CubeDimensionEntity} entityRef=CubeEntity "{" hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity? "}";
+	//	{CubeDimensionEntity} entityRef=CubeEntity '{' hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity? '}';
 	public CubeDimensionEntityElements getCubeDimensionEntityAccess() {
 		return pCubeDimensionEntity;
 	}
@@ -1360,10 +1253,10 @@
 	public ParserRule getCubeDimensionEntityRule() {
 		return getCubeDimensionEntityAccess().getRule();
 	}
-
+	
 	//CubeDimensionEntityEntity:
-	//	{CubeDimensionEntityEntity} entityRef=CubeEntity "{" "over" overValue=[entity::LEntityFeature|LFQN] ";"
-	//	hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity? "}";
+	//	{CubeDimensionEntityEntity} entityRef=CubeEntity '{' 'over' overValue=[entity::LEntityFeature|LFQN]
+	//	hierarchLevels+=CubeLevel* dimEntity=CubeDimensionEntityEntity? '}';
 	public CubeDimensionEntityEntityElements getCubeDimensionEntityEntityAccess() {
 		return pCubeDimensionEntityEntity;
 	}
@@ -1371,10 +1264,10 @@
 	public ParserRule getCubeDimensionEntityEntityRule() {
 		return getCubeDimensionEntityEntityAccess().getRule();
 	}
-
+	
 	//CubeLevel:
-	//	"level" name=TRANSLATABLEID "column=" levelColValue=[entity::LEntityFeature|LFQN] uniqueMembers?="uniqueMembers"?
-	//	(levelType?="levelType=" levelTypeValue=CubeLevelLevelType)? (";" | "{" properties+=CubeLevelProp* "}");
+	//	'level' name=TRANSLATABLEID 'column' levelColValue=[entity::LEntityFeature|LFQN] uniqueMembers?='uniqueMembers'?
+	//	(levelType?='levelType' levelTypeValue=CubeLevelLevelType)? ('{' properties+=CubeLevelProp* '}')?;
 	public CubeLevelElements getCubeLevelAccess() {
 		return pCubeLevel;
 	}
@@ -1382,10 +1275,10 @@
 	public ParserRule getCubeLevelRule() {
 		return getCubeLevelAccess().getRule();
 	}
-
+	
 	//CubeLevelProp:
-	//	"property" name=TRANSLATABLEID "column=" levelPropColValue=[entity::LEntityFeature|LFQN] (type?="type="
-	//	typeValue=CubeLevelPropType)? ";";
+	//	'property' name=TRANSLATABLEID 'column' levelPropColValue=[entity::LEntityFeature|LFQN] (type?='type'
+	//	typeValue=CubeLevelPropType)?;
 	public CubeLevelPropElements getCubeLevelPropAccess() {
 		return pCubeLevelProp;
 	}
@@ -1393,10 +1286,10 @@
 	public ParserRule getCubeLevelPropRule() {
 		return getCubeLevelPropAccess().getRule();
 	}
-
+	
 	//CubeMeasure:
-	//	"measure" name=TRANSLATABLEID aggregator=CubeAggregatorEnum "column=" measureCol=[entity::LEntityFeature|LFQN]
-	//	notVisible?="notVisible"? ";";
+	//	'measure' name=TRANSLATABLEID aggregator=CubeAggregatorEnum 'column' measureCol=[entity::LEntityFeature|LFQN]
+	//	notVisible?='notVisible'?;
 	public CubeMeasureElements getCubeMeasureAccess() {
 		return pCubeMeasure;
 	}
@@ -1404,83 +1297,44 @@
 	public ParserRule getCubeMeasureRule() {
 		return getCubeMeasureAccess().getRule();
 	}
-
+	
 	//enum CubeAggregatorEnum:
-	//	SUM="sum" | COUNT="count" | MIN="min" | MAX="max" | AVG="avg" | DSC="distinct-count";
+	//	SUM='sum' | COUNT='count' | MIN='min' | MAX='max' | AVG='avg' | DSC='distinct-count';
 	public CubeAggregatorEnumElements getCubeAggregatorEnumAccess() {
-		return unknownRuleCubeAggregatorEnum;
+		return eCubeAggregatorEnum;
 	}
 	
 	public EnumRule getCubeAggregatorEnumRule() {
 		return getCubeAggregatorEnumAccess().getRule();
 	}
-
+	
 	//enum CubeLevelPropType:
-	//	STRING="String" | NUMERIC="Numeric" | INTEGER="Integer" | BOOLEAN="Boolean" | DATE="Date" | TIME="Time" |
-	//	TIMESTAMP="Timestamp";
+	//	STRING='String' | NUMERIC='Numeric' | INTEGER='Integer' | BOOLEAN='Boolean' | DATE='Date' | TIME='Time' |
+	//	TIMESTAMP='Timestamp';
 	public CubeLevelPropTypeElements getCubeLevelPropTypeAccess() {
-		return unknownRuleCubeLevelPropType;
+		return eCubeLevelPropType;
 	}
 	
 	public EnumRule getCubeLevelPropTypeRule() {
 		return getCubeLevelPropTypeAccess().getRule();
 	}
-
+	
 	//enum CubeLevelLevelType:
-	//	MDLEVEL_TYPE_TIME="Time" | MDLEVEL_TYPE_TIME_YEARS="TimeYears" | MDLEVEL_TYPE_TIME_HALF_YEARS="TimeHalfYears" |
-	//	MDLEVEL_TYPE_TIME_QUARTERS="TimeQuarters" | MDLEVEL_TYPE_TIME_MONTHS="TimeMonths" |
-	//	MDLEVEL_TYPE_TIME_WEEKS="TimeWeeks" | MDLEVEL_TYPE_TIME_DAYS="TimeDays" | MDLEVEL_TYPE_TIME_HOURS="TimeHours" |
-	//	MDLEVEL_TYPE_TIME_MINUTES="TimeMinutes" | MDLEVEL_TYPE_TIME_SECONDS="TimeSeconds";
+	//	MDLEVEL_TYPE_TIME='Time' | MDLEVEL_TYPE_TIME_YEARS='TimeYears' | MDLEVEL_TYPE_TIME_HALF_YEARS='TimeHalfYears' |
+	//	MDLEVEL_TYPE_TIME_QUARTERS='TimeQuarters' | MDLEVEL_TYPE_TIME_MONTHS='TimeMonths' |
+	//	MDLEVEL_TYPE_TIME_WEEKS='TimeWeeks' |
+	//	MDLEVEL_TYPE_TIME_DAYS='TimeDays' | MDLEVEL_TYPE_TIME_HOURS='TimeHours' | MDLEVEL_TYPE_TIME_MINUTES='TimeMinutes' |
+	//	MDLEVEL_TYPE_TIME_SECONDS='TimeSeconds';
 	public CubeLevelLevelTypeElements getCubeLevelLevelTypeAccess() {
-		return unknownRuleCubeLevelLevelType;
+		return eCubeLevelLevelType;
 	}
 	
 	public EnumRule getCubeLevelLevelTypeRule() {
 		return getCubeLevelLevelTypeAccess().getRule();
 	}
-
-	//Import returns LImport:
-	//	"import" importedNamespace=CubeQualifiedNameWithWildCard ";";
-	public ImportElements getImportAccess() {
-		return pImport;
-	}
 	
-	public ParserRule getImportRule() {
-		return getImportAccess().getRule();
-	}
-
-	//CubeQualifiedNameWithWildCard:
-	//	QualifiedName ("." "*")?;
-	public CubeQualifiedNameWithWildCardElements getCubeQualifiedNameWithWildCardAccess() {
-		return pCubeQualifiedNameWithWildCard;
-	}
-	
-	public ParserRule getCubeQualifiedNameWithWildCardRule() {
-		return getCubeQualifiedNameWithWildCardAccess().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();
-	}
-
 	//LFQN:
-	//	ID ("." ID)*;
+	//	ID ('.' ID)*;
 	public LFQNElements getLFQNAccess() {
 		return pLFQN;
 	}
@@ -1488,7 +1342,7 @@
 	public ParserRule getLFQNRule() {
 		return getLFQNAccess().getRule();
 	}
-
+	
 	//TRANSLATABLEID:
 	//	ID;
 	public TRANSLATABLEIDElements getTRANSLATABLEIDAccess() {
@@ -1498,7 +1352,7 @@
 	public ParserRule getTRANSLATABLEIDRule() {
 		return getTRANSLATABLEIDAccess().getRule();
 	}
-
+	
 	//TRANSLATABLESTRING:
 	//	STRING;
 	public TRANSLATABLESTRINGElements getTRANSLATABLESTRINGAccess() {
@@ -1508,11 +1362,27 @@
 	public ParserRule getTRANSLATABLESTRINGRule() {
 		return getTRANSLATABLESTRINGAccess().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();
 	}
@@ -1520,9 +1390,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();
 	}
@@ -1530,10 +1400,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();
 	}
@@ -1541,10 +1411,10 @@
 	public ParserRule getXAnnotationElementValueOrCommaListRule() {
 		return getXAnnotationElementValueOrCommaListAccess().getRule();
 	}
-
-	//XAnnotationElementValue returns xbase::XExpression:
-	//	=> ({xbase::XListLiteral} "#" "[") (elements+=XAnnotationOrExpression ("," elements+=XAnnotationOrExpression)*)? "]" |
-	//	XAnnotationOrExpression;
+	
+	//XAnnotationElementValue xbase::XExpression:
+	//	=> ({xbase::XListLiteral} '#' '[') (elements+=XAnnotationOrExpression (',' elements+=XAnnotationOrExpression)*)? ']'
+	//	| XAnnotationOrExpression;
 	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValueElements getXAnnotationElementValueAccess() {
 		return gaXbaseWithAnnotations.getXAnnotationElementValueAccess();
 	}
@@ -1552,8 +1422,8 @@
 	public ParserRule getXAnnotationElementValueRule() {
 		return getXAnnotationElementValueAccess().getRule();
 	}
-
-	//XAnnotationOrExpression returns xbase::XExpression:
+	
+	//XAnnotationOrExpression xbase::XExpression:
 	//	XAnnotation | XExpression;
 	public XbaseWithAnnotationsGrammarAccess.XAnnotationOrExpressionElements getXAnnotationOrExpressionAccess() {
 		return gaXbaseWithAnnotations.getXAnnotationOrExpressionAccess();
@@ -1562,859 +1432,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.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/validation/AbstractCubeDSLValidator.java b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/validation/AbstractCubeDSLValidator.java
index 36de8b8..43241ec 100644
--- a/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/validation/AbstractCubeDSLValidator.java
+++ b/org.eclipse.osbp.xtext.cubedsl/src-gen/org/eclipse/osbp/xtext/cubedsl/validation/AbstractCubeDSLValidator.java
@@ -10,6 +10,8 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
 
 package org.eclipse.osbp.xtext.cubedsl.validation;
@@ -17,18 +19,20 @@
 import java.util.ArrayList;
 import java.util.List;
 import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.osbp.xtext.oxtype.validation.OXtypeValidator;
 
-public class AbstractCubeDSLValidator extends org.eclipse.xtext.xbase.annotations.validation.XbaseWithAnnotationsValidator {
-
+public abstract class AbstractCubeDSLValidator 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/cubedsl/CubeDSL"));
-	    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/cubedsl/CubeDSL"));
+		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.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSL.xtext b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSL.xtext
index 1b490d9..9aa07cd 100644
--- a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSL.xtext
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSL.xtext
@@ -12,7 +12,7 @@
  * 
  */
 
-grammar org.eclipse.osbp.xtext.cubedsl.CubeDSL with org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations
+grammar org.eclipse.osbp.xtext.cubedsl.CubeDSL with org.eclipse.osbp.xtext.oxtype.OXtype
 
 import "http://osbp.eclipse.org/xtext/cubedsl/CubeDSL"
 
@@ -21,26 +21,28 @@
 import "http://www.eclipse.org/emf/2002/Ecore" as ecore
 
 CubeModel:
-	{CubeModel} pckg=CubePackage;
+	{CubeModel} 
+	importSection=XImportSection?
+	pckg=CubePackage;
 
 CubePackage:
-	'package' name=QualifiedName ('{' (imports+=Import)* (dimensions+=CubeDimension)* (cubes+=CubeType)* '}')?;
+	'package' name=QualifiedName ('{'  (dimensions+=CubeDimension)* (cubes+=CubeType)* '}')?;
 	
 CubeType:
 	'cube' name=ID (defaultMeasure?='defaultMeasure' defaultMeasureValue=STRING)? '{' cubeTypeEntity=CubeTypeEntity'}';
 
 CubeDimensionUsage:
-	'dimensionUsage' sourceValue=[CubeDimension] 'over' overValue=[entity::LEntityFeature|LFQN] ';';
+	'dimensionUsage' sourceValue=[CubeDimension] 'over' overValue=[entity::LEntityFeature|LFQN] ;
 	
 CubeDimension:
 	'dimension' name=TRANSLATABLEID (typeTime?='typeTime')? '{' hierarchies+=CubeHierarchy* '}';
 
 CubeHierarchy:
-	{CubeHierarchy} 'hierarchy' (name=TRANSLATABLEID)? (hasAll?='hasAll')? (allMemberName?='allMemberName=' allMemberNameValue=TRANSLATABLESTRING)? (defaultMember?='defaultMember=' defaultMemberValue=TRANSLATABLESTRING)?
+	{CubeHierarchy} 'hierarchy' (name=TRANSLATABLEID)? (hasAll?='hasAll')? (allMemberName?='allMemberName' allMemberNameValue=TRANSLATABLESTRING)? (defaultMember?='defaultMember' defaultMemberValue=TRANSLATABLESTRING)?
 	'{' cubeDimEntity=CubeDimensionEntity '}';
 
 CubeEntity:
-	'entity' entityValue=[entity::LEntity|LFQN] (key?='key=' keyValue=[entity::LEntityFeature|LFQN])?;
+	'entity' entityValue=[entity::LEntity|LFQN] (key?='key' keyValue=[entity::LEntityFeature|LFQN])?;
 
 CubeTypeEntity:
 	 entityRef=CubeEntity '{' dimensionUsages+=CubeDimensionUsage* measures+=CubeMeasure* '}';
@@ -49,16 +51,17 @@
 	{CubeDimensionEntity} entityRef=CubeEntity '{' hierarchLevels+=CubeLevel* (dimEntity=CubeDimensionEntityEntity)? '}';
 	
 CubeDimensionEntityEntity:
-	{CubeDimensionEntityEntity} entityRef=CubeEntity '{' 'over' overValue=[entity::LEntityFeature|LFQN] ';' hierarchLevels+=CubeLevel* (dimEntity=CubeDimensionEntityEntity)? '}';
+	{CubeDimensionEntityEntity} entityRef=CubeEntity '{' 'over' overValue=[entity::LEntityFeature|LFQN] hierarchLevels+=CubeLevel* (dimEntity=CubeDimensionEntityEntity)? '}';
 	
 CubeLevel:
-	'level' name=TRANSLATABLEID  'column=' levelColValue=[entity::LEntityFeature|LFQN]  (uniqueMembers?='uniqueMembers')? (levelType?='levelType=' levelTypeValue=CubeLevelLevelType)? (';' | '{' properties+=CubeLevelProp* '}');
+	'level' name=TRANSLATABLEID  'column' levelColValue=[entity::LEntityFeature|LFQN]  (uniqueMembers?='uniqueMembers')? 
+	(levelType?='levelType' levelTypeValue=CubeLevelLevelType)? ('{' properties+=CubeLevelProp* '}')?;
 	
 CubeLevelProp:
-	'property' name=TRANSLATABLEID  'column=' levelPropColValue=[entity::LEntityFeature|LFQN] (type?='type=' typeValue=CubeLevelPropType)? ';';
+	'property' name=TRANSLATABLEID  'column' levelPropColValue=[entity::LEntityFeature|LFQN] (type?='type' typeValue=CubeLevelPropType)?;
 	
 CubeMeasure:
-	'measure' name=TRANSLATABLEID aggregator=CubeAggregatorEnum 'column=' measureCol=[entity::LEntityFeature|LFQN] (notVisible?='notVisible')? ';';
+	'measure' name=TRANSLATABLEID aggregator=CubeAggregatorEnum 'column' measureCol=[entity::LEntityFeature|LFQN] (notVisible?='notVisible')?;
 
 enum CubeAggregatorEnum:
 	 SUM='sum'| COUNT='count'| MIN='min'| MAX='max'| AVG='avg'| DSC='distinct-count';
@@ -70,18 +73,6 @@
 	MDLEVEL_TYPE_TIME='Time' | MDLEVEL_TYPE_TIME_YEARS='TimeYears' | MDLEVEL_TYPE_TIME_HALF_YEARS='TimeHalfYears' | MDLEVEL_TYPE_TIME_QUARTERS='TimeQuarters' | MDLEVEL_TYPE_TIME_MONTHS='TimeMonths' | MDLEVEL_TYPE_TIME_WEEKS='TimeWeeks' | 
 	MDLEVEL_TYPE_TIME_DAYS='TimeDays' | MDLEVEL_TYPE_TIME_HOURS='TimeHours' | MDLEVEL_TYPE_TIME_MINUTES='TimeMinutes' | MDLEVEL_TYPE_TIME_SECONDS='TimeSeconds';
 
-Import returns LImport:
-	'import' importedNamespace=CubeQualifiedNameWithWildCard ';';
-
-CubeQualifiedNameWithWildCard:
-	QualifiedName ('.' '*')?;
-		
-QualifiedName:
-  ValidID (=>'.' ValidID)*;
-  
-ValidID:
-	ID;
-	
 LFQN:
 	ID ('.' ID)*;
 	
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSLBundleSpaceStandaloneSetup.java b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSLBundleSpaceStandaloneSetup.java
index cab992c..a990e80 100644
--- a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSLBundleSpaceStandaloneSetup.java
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSLBundleSpaceStandaloneSetup.java
@@ -13,8 +13,8 @@
  */
  package org.eclipse.osbp.xtext.cubedsl;
 
-import org.eclipse.osbp.dsl.xtext.lazyresolver.hook.ExtensionsRuntimeModulesProvider;
 import org.eclipse.osbp.xtext.builder.xbase.setups.XbaseBundleSpaceStandaloneSetup;
+import org.eclipse.osbp.xtext.oxtype.hooks.ExtensionsRuntimeModulesProvider;
 import org.eclipse.xtext.util.Modules2;
 
 import com.google.inject.Guice;
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSLRuntimeModule.java b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSLRuntimeModule.java
index f99cdcd..6d9cfd2 100644
--- a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSLRuntimeModule.java
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/CubeDSLRuntimeModule.java
@@ -14,19 +14,40 @@
 
 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.cubedsl.formatting.CubeDSLFormatter;
+import org.eclipse.osbp.xtext.cubedsl.imports.ShouldImportProvider;
 import org.eclipse.osbp.xtext.cubedsl.jvmmodel.CubeModelGenerator;
+import org.eclipse.osbp.xtext.cubedsl.scoping.CubeDSLImportSectionNamespaceScopeProvider;
 import org.eclipse.osbp.xtext.cubedsl.scoping.CubeDSLScopeProvider;
 import org.eclipse.osbp.xtext.cubedsl.valueconverter.CubeQualifiedNameProvider;
 import org.eclipse.osbp.xtext.cubedsl.valueconverter.CubeValueConverterService;
 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.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.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 com.google.inject.Binder;
+import com.google.inject.name.Names;
 
 /**
  * Use this class to register components to be used at runtime / without the
@@ -36,9 +57,21 @@
 public class CubeDSLRuntimeModule extends
 		org.eclipse.osbp.xtext.cubedsl.AbstractCubeDSLRuntimeModule {
 
+	public Class<? extends IResourceStorageFacade> bindResourceStorageFacade() {
+		return BatchLinkableResourceStorageFacade.class;
+	}
+	
+	public Class<? extends TargetURICollector> bindTargetURICollector() {
+		return JvmModelTargetURICollector.class;
+	}
+	
 	public Class<? extends org.eclipse.xtext.scoping.IScopeProvider> bindIScopeProvider() {
 		return CubeDSLScopeProvider.class;
 	}
+	
+	public Class<? extends org.eclipse.xtext.formatting.IFormatter> bindIFormatter() {
+		return CubeDSLFormatter.class;
+	}
 
 	/**
 	 * Only required, if fqn can not be created by appending the names of the
@@ -69,20 +102,52 @@
 		return SemanticLoadingResource.class;
 	}
 
-	public Class<? extends org.eclipse.xtext.linking.ILinker> bindILinker() {
-		return LazyJvmTypeLinker.class;
-	}
-
 	@Override
-	public void configureSerializerIScopeProvider(Binder binder) {
-		binder.bind(org.eclipse.xtext.scoping.IScopeProvider.class)
+	public void configureIScopeProviderDelegate(Binder binder) {
+		binder.bind(IScopeProvider.class)
 				.annotatedWith(
-						org.eclipse.xtext.serializer.tokens.SerializerScopeProviderBinding.class)
-				.to(CubeDSLScopeProvider.class);
+						Names.named("org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.delegate"))
+				.to(CubeDSLImportSectionNamespaceScopeProvider.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);
+	}
+
+	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;
+	}
+
+	public Class<? extends IShouldImportProvider> bindIShouldImportProvider() {
+		return ShouldImportProvider.class;
 	}
 
 }
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/GenerateCubeDSL.mwe2 b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/GenerateCubeDSL.mwe2
index 3796581..35ae29a 100644
--- a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/GenerateCubeDSL.mwe2
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/GenerateCubeDSL.mwe2
@@ -15,144 +15,82 @@
 module org.eclipse.osbp.xtext.cubedsl.GenerateCubeDSL
 
 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.xtext.xtext.generator.*
+import org.eclipse.xtext.xtext.generator.model.project.*
 
-//var grammarURI = "classpath:/org/eclipse/osbp/xtext/cubedsl/CubeDSL.xtext"
+var rootPath = ".."
 
-var projectName = "org.eclipse.osbp.xtext.cubedsl"
-var grammarURI = "platform:/resource/${projectName}/src/org/eclipse/osbp/xtext/cubedsl/CubeDSL.xtext"
-var fileExtensions = "cube"
-var runtimeProject = "../${projectName}"
-var generateXtendStub = true
-var encoding = "UTF-8"
+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
+"Workflow {
+
+	component = XtextGenerator {
+		configuration = {
+			project = StandardProjectConfig {
+				baseName = "org.eclipse.osbp.xtext.cubedsl"
+				rootPath = rootPath
+				genericIde = {
+					enabled = true
+					name = "org.eclipse.osbp.xtext.cubedsl.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.cubedsl.CubeDSL"
+			fileExtensions = "cube"
+			
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.cubedsl/model/CubeDSL.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.dsl.entity.xtext/model/entity.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/org.eclipse.osbp.xtext.cubedsl/model/CubeDSL.xcore"
-		registerGeneratedEPackage = "org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage"
-		
-		registerGenModelFile = "platform:/resource/org.eclipse.osbp.dsl.entity.xtext/model/entity.xcore"
-		registerEcoreFile = "platform:/resource/org.eclipse.osbp.dsl.entity.xtext/model/entity.xcore"
-		registerGenModelFile = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
-		registerEcoreFile = "platform:/resource/org.eclipse.osbp.dsl.common.xtext/model/types.xcore"
-		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"
-    	exclude = "README.txt"
-	}
-	component = DirectoryCleaner {
-		directory = "${runtimeProject}.ui/src-gen"
-    	exclude = "README.txt"
-	}
-	component = DirectoryCleaner {
-		directory = "${runtimeProject}.tests/src-gen"
-    	exclude = "README.txt"
-	}
-	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 {}
-    
-    		// 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.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/formatting/CubeDSLFormatter.xtend b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/formatting/CubeDSLFormatter.xtend
index ac70c2a..d6df4d9 100644
--- a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/formatting/CubeDSLFormatter.xtend
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/formatting/CubeDSLFormatter.xtend
@@ -14,18 +14,17 @@
  *  This copyright notice shows up in the generated Java code
  *
  */
- 
 package org.eclipse.osbp.xtext.cubedsl.formatting
 
 import com.google.inject.Inject
+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.osbp.utils.xtext.GenericFormatter
-import org.eclipse.xtext.xbase.services.XtypeGrammarAccess
+
 //import org.eclipse.osbp.xtext.cubedsl.services.CubeDSLGrammarAccess
 //import org.eclipse.xtext.ParserRule
 //import org.eclipse.xtext.GrammarUtil
-
 /**
  * This class contains custom formatting description.
  * 
@@ -36,41 +35,13 @@
  */
 class CubeDSLFormatter extends AbstractDeclarativeFormatter {
 
-//	@Inject extension CubeDSLGrammarAccess
-	@Inject XtypeGrammarAccess grammarAccess
+	//	@Inject extension CubeDSLGrammarAccess
+	@Inject OXtypeGrammarAccess grammarAccess
 
 	override protected void configureFormatting(FormattingConfig c) {
 		val genericFormatter = new GenericFormatter()
-
-//		val ga = grammar as CubeDSLGrammarAccess
-
-//		val ParserRule iRule = GrammarUtil.findRuleForName( grammar.grammar, "Import" ) as ParserRule
-//		c.setLinewrap(2).between( iRule, cubeTypeRule )
-//		c.setLinewrap(2).before( cubeTypeRule )
-
-//		c.setLinewrap(2).between( CubePackageRule, importRule )
-//		c.setLinewrap(2).before( ga.CubePackageAccess.packageKeyword_0 )
-//		c.setLinewrap(2).between( importRule, CubeTypeRule )
-//		c.setLinewrap(2).before( ga.CubeTypeAccess.cubeKeyword_0 )
-//		c.setLinewrap(2).before( CubeTypeAccess.cubeKeyword_0 )
-//		c.setLinewrap(2).around( importRule )			// each import statement!
-//		c.setLinewrap( 0, 1, 2 ).before( SL_COMMENTRule )
-//		c.setLinewrap( 0, 1, 1 ).after ( SL_COMMENTRule )
-//		c.setLinewrap().between( SL_COMMENTRule, CubeTypeRule )
-//		c.setLinewrap().between( SL_COMMENTRule, CubeEntityRule )
-//		c.setNoLinewrap().between( SL_COMMENTRule, SL_COMMENTRule )
-//		c.setNoLinewrap().after(SL_COMMENTRule)
-//		c.setLinewrap( 0, 1, 2 ).around( ML_COMMENTRule )
-//		c.setLinewrap( 0, 1, 2 ).before( ML_COMMENTRule )
-//		c.setLinewrap( 0, 1, 2 ).after ( ML_COMMENTRule )
-//		c.setLinewrap(1, 1, 1).around(SL_COMMENTRule)
-//		c.setLinewrap(1, 1, 1).around(ML_COMMENTRule)
-//		c.setLinewrap( 2 ).after( ga.importAccess.importedNamespaceCubeQualifiedNameWithWildCardParserRuleCall_1_0 )
-
-//		c.setNoLinewrap().before( cubePackageAccess.packageKeyword_0 )
-
-		genericFormatter.formatFirstLevelBlocks( c, grammar.grammar, "CubeDimension", "Import" )
-		genericFormatter.formatFirstLevelBlocks( c, grammar.grammar, "CubeType"     , "Import" )
-		genericFormatter.genericFormatting( c, grammar, grammarAccess )
+		genericFormatter.formatFirstLevelBlocks(c, grammar.grammar, "CubeDimension")
+		genericFormatter.formatFirstLevelBlocks(c, grammar.grammar, "CubeType")
+		genericFormatter.genericFormatting(c, grammar, grammarAccess)
 	}
 }
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/imports/ShouldImportProvider.java b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/imports/ShouldImportProvider.java
new file mode 100644
index 0000000..5c960be
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/imports/ShouldImportProvider.java
@@ -0,0 +1,21 @@
+package org.eclipse.osbp.xtext.cubedsl.imports;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
+import org.eclipse.osbp.dsl.semantic.entity.OSBPEntityPackage;
+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 LEntity;
+	}
+	
+	protected boolean doShouldProposeAllElements(EObject object, EReference reference) {
+		EClass type = reference.getEReferenceType();
+		return OSBPEntityPackage.Literals.LENTITY.isSuperTypeOf(type);
+	}
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/scoping/CubeDSLImportSectionNamespaceScopeProvider.java b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/scoping/CubeDSLImportSectionNamespaceScopeProvider.java
new file mode 100644
index 0000000..8edd6ae
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/scoping/CubeDSLImportSectionNamespaceScopeProvider.java
@@ -0,0 +1,8 @@
+package org.eclipse.osbp.xtext.cubedsl.scoping;
+
+import org.eclipse.osbp.xtext.oxtype.scoping.OXDelegatingNamespaceScopeProvider;
+
+public class CubeDSLImportSectionNamespaceScopeProvider extends
+		OXDelegatingNamespaceScopeProvider {
+
+}
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/scoping/CubeDSLScopeProvider.xtend b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/scoping/CubeDSLScopeProvider.xtend
index 60c7c6c..ec95bdc 100644
--- a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/scoping/CubeDSLScopeProvider.xtend
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/scoping/CubeDSLScopeProvider.xtend
@@ -12,12 +12,21 @@
  * 
  * 
  *  This copyright notice shows up in the generated Java code
- *
+ * 
  */
- 
+
 package org.eclipse.osbp.xtext.cubedsl.scoping
 
+import java.util.ArrayList
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.ecore.EReference
+import org.eclipse.osbp.dsl.semantic.common.types.LDataType
+import org.eclipse.osbp.dsl.semantic.entity.LEntity
+import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute
+import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature
+import org.eclipse.osbp.dsl.semantic.entity.LEntityReference
 import org.eclipse.osbp.xtext.cubedsl.CubeAggregatorEnum
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage
 import org.eclipse.osbp.xtext.cubedsl.CubeDimension
 import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity
 import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity
@@ -27,29 +36,18 @@
 import org.eclipse.osbp.xtext.cubedsl.CubeMeasure
 import org.eclipse.osbp.xtext.cubedsl.CubePackage
 import org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity
-import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage
-import java.util.ArrayList
-import java.util.Date
-import org.eclipse.emf.ecore.EObject
-import org.eclipse.emf.ecore.EReference
 import org.eclipse.xtext.scoping.IScope
 import org.eclipse.xtext.scoping.Scopes
-import org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsBatchScopeProvider
-import org.eclipse.osbp.dsl.semantic.entity.LEntity
-import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute
-import org.eclipse.osbp.dsl.semantic.entity.LEntityReference
-import org.eclipse.osbp.dsl.semantic.common.types.LDataType
-import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature
 
 /**
  * This class contains custom scoping description.
  * 
  * see : http://www.eclipse.org/Xtext/documentation.html#scoping
  * on how and when to use it 
- *
+ * 
  */
 //class CubeDSLScopeProvider extends AbstractDeclarativeScopeProvider {
-class CubeDSLScopeProvider extends XbaseWithAnnotationsBatchScopeProvider /*XbaseWithAnnotationsScopeProvider*/ {
+class CubeDSLScopeProvider extends AbstractCubeDSLScopeProvider /*XbaseWithAnnotationsScopeProvider*/ {
 
 	@Override
 	override IScope getScope(EObject context, EReference reference) {
@@ -59,9 +57,8 @@
 			return getScope_CubeDimensionUsage_OverValue(context as CubeDimensionUsage)
 		} else if (reference == CubeDSLPackage.Literals.CUBE_MEASURE__MEASURE_COL) {
 			return getScope_CubeMeasureCol(context as CubeMeasure)
-		} else if ((reference == CubeDSLPackage.Literals.CUBE_LEVEL__LEVEL_COL_VALUE)  ||
-					(reference == CubeDSLPackage.Literals.CUBE_LEVEL_PROP__LEVEL_PROP_COL_VALUE)
-		   			) {
+		} else if ((reference == CubeDSLPackage.Literals.CUBE_LEVEL__LEVEL_COL_VALUE) ||
+			(reference == CubeDSLPackage.Literals.CUBE_LEVEL_PROP__LEVEL_PROP_COL_VALUE)) {
 			return getScope_CubeEntityColRef(context as EObject)
 		} else if (reference == CubeDSLPackage.Literals.CUBE_ENTITY__KEY_VALUE) {
 			return getScope_CubeEntity_KeyValue(context as CubeEntity)
@@ -72,7 +69,7 @@
 		}
 
 	}
-	
+
 	def IScope getScope_CubeDimensionUsage_SourceValue(CubeDimensionUsage cubeDimUsage) {
 		var result = <EObject>newArrayList
 		var eObj = cubeDimUsage.eContainer
@@ -80,9 +77,9 @@
 			eObj = eObj.eContainer
 		}
 		var cubePackage = (eObj as CubePackage)
-		if (cubePackage != null) {
+		if (cubePackage !== null) {
 			for (CubeDimension cubeDim : cubePackage.dimensions) {
-				if (cubeDim.name != null) {
+				if (cubeDim.name !== null) {
 					result.add(cubeDim)
 				}
 			}
@@ -95,69 +92,73 @@
 		var dimEntities = <String>newArrayList
 		var dimUsageSource = cubeDimUsage.getSourceValue
 		var LEntity cubeEnt = cubeDimUsage.getCubeEntity
-		if (dimUsageSource != null) {
-			for (CubeHierarchy cubeHierarchy : dimUsageSource.hierarchies){
+		if (dimUsageSource !== null) {
+			for (CubeHierarchy cubeHierarchy : dimUsageSource.hierarchies) {
 				dimEntities.add(cubeHierarchy.dimEntityName)
 			}
-			if (dimUsageSource.typeTime){
+			if (dimUsageSource.typeTime) {
 				for (LEntityAttribute entityAttr : cubeEnt.allAttributes) {
-					if (entityAttr.date){
+					if (entityAttr.date) {
 						result.add(entityAttr)
 					}
-				} 
+				}
 			}
 		}
-		if (cubeEnt != null){
+		if (cubeEnt !== null) {
 			// If the cube entity is as the used entity for the dimension
 			// only its attributes are used as foreign key 
-			if (dimEntities.contains(cubeEnt.name)) {  
+			if (dimEntities.contains(cubeEnt.name)) {
 				for (LEntityAttribute entityAttr : cubeEnt.allAttributes) {
 					result.add(entityAttr)
-				} 
+				}
 			} else {
 				for (LEntityReference entityRef : cubeEnt.allReferences) {
-					if (dimEntities.contains(entityRef.getTypeName)){
+					if (dimEntities.contains(entityRef.getTypeName)) {
 						result.add(entityRef)
 					}
-				} 
+				}
 			}
 		}
 		return Scopes.scopeFor(result)
 	}
-	
-	def ArrayList<EObject> getRefResultList(LEntity cubeEnt, ArrayList<EObject> result){
+
+	def ArrayList<EObject> getRefResultList(LEntity cubeEnt, ArrayList<EObject> result) {
 		for (LEntityReference entityRef : cubeEnt.allReferences) {
-			if (entityRef.name != null){
+			if (entityRef.name !== null) {
 				result.add(entityRef)
 			}
 		}
 		return result
 	}
 
-	def getCubeEntity(EObject childEObj){
+	def getCubeEntity(EObject childEObj) {
 		var LEntity cubeEnt;
 		var eObj = childEObj.eContainer
 		while (!(eObj instanceof CubeTypeEntity)) {
-			if (eObj != null) {
+			if (eObj !== null) {
 				eObj = eObj.eContainer
 			}
 		}
-		if (eObj != null) {
+		if (eObj !== null) {
 			cubeEnt = (eObj as CubeTypeEntity).entityRef.entityValue
 		}
 		return cubeEnt
 	}
-	
+
 	def getScope_CubeMeasureCol(CubeMeasure cubeMeasure) {
 		var result = <EObject>newArrayList
 		var LEntity cubeEnt = cubeMeasure.getCubeEntity
-		if (cubeEnt != null){
+		if (cubeEnt !== null) {
 			// if measure uses count aggregator only numeric entity attributes are provided
-			if (cubeMeasure.aggregator != null && (cubeMeasure.aggregator.equals(CubeAggregatorEnum.COUNT) || cubeMeasure.aggregator.equals(CubeAggregatorEnum.DSC))){
+			if (cubeMeasure.aggregator !== null &&
+				(cubeMeasure.aggregator.equals(CubeAggregatorEnum.COUNT) ||
+					cubeMeasure.aggregator.equals(CubeAggregatorEnum.DSC))) {
 				result = cubeEnt.getRefResultList(result)
 			} else {
 				for (LEntityAttribute entityAttr : cubeEnt.allAttributes) {
-					if (entityAttr.type != null && (entityAttr.type instanceof LDataType) && (entityAttr.type as LDataType).asPrimitive && !("String".equals((entityAttr.type as LDataType).name))){
+					if (entityAttr.type !== null && (entityAttr.type instanceof LDataType) &&
+						(entityAttr.type as LDataType).asPrimitive &&
+						!("String".equals((entityAttr.type as LDataType).name))) {
 						result.add(entityAttr)
 					}
 				}
@@ -165,58 +166,63 @@
 		}
 		return Scopes.scopeFor(result)
 	}
-	
+
 	def IScope getScope_CubeEntityColRef(EObject context) {
 		var result = <EObject>newArrayList
 		var eObj = context
-		while (!((eObj instanceof CubeDimensionEntity)||(eObj instanceof CubeDimensionEntityEntity)||(eObj instanceof CubeTypeEntity))) {
-			if (eObj != null) {
+		while (!((eObj instanceof CubeDimensionEntity) || (eObj instanceof CubeDimensionEntityEntity) ||
+			(eObj instanceof CubeTypeEntity))) {
+			if (eObj !== null) {
 				eObj = eObj.eContainer
 			}
 		}
-		if (eObj != null) {
+		if (eObj !== null) {
 			var LEntity cubeEnt = null;
-			if (eObj instanceof CubeDimensionEntityEntity){
+			if (eObj instanceof CubeDimensionEntityEntity) {
 				cubeEnt = (eObj as CubeDimensionEntityEntity).entityRef.entityValue
-			} else if (eObj instanceof CubeDimensionEntity){
+			} else if (eObj instanceof CubeDimensionEntity) {
 				cubeEnt = (eObj as CubeDimensionEntity).entityRef.entityValue
-			} else if (eObj instanceof CubeTypeEntity){
+			} else if (eObj instanceof CubeTypeEntity) {
 				cubeEnt = (eObj as CubeTypeEntity).entityRef.entityValue
-			} 
+			}
 			result = cubeEnt.getAttrResultList(result)
 		}
 		return Scopes.scopeFor(result)
 	}
-	
+
 	def IScope getScope_CubeDimensionEntityEntityOverValue(CubeDimensionEntityEntity cubeDimEntityEntity) {
 		var result = <EObject>newArrayList
 		var eObj = cubeDimEntityEntity.eContainer
 		while (!(eObj instanceof CubeDimensionEntity)) {
-			if (eObj != null) {
+			if (eObj !== null) {
 				eObj = eObj.eContainer
 			}
 		}
-		if (eObj != null) {
-			if (eObj instanceof CubeDimensionEntity){
+		if (eObj !== null) {
+			if (eObj instanceof CubeDimensionEntity) {
 				result = cubeDimEntityEntity.getJoinableRefsResultList((eObj as CubeDimensionEntity), result)
-			} 
+			}
 		}
 		return Scopes.scopeFor(result)
 	}
-	
+
 	def IScope getScope_CubeEntity_KeyValue(CubeEntity entity) {
 		var result = <EObject>newArrayList
-		if (entity!=null){
+		if (entity !== null) {
 			result = entity.entityValue.getAttrResultList(result)
 		}
 		return Scopes.scopeFor(result)
 	}
-	
-	def getJoinableRefsResultList(CubeDimensionEntityEntity cubeDimEntityEntity, CubeDimensionEntity entity, ArrayList<EObject> result) {
-		if (entity != null && entity.entityRef != null && entity.entityRef.entityValue != null && entity.entityRef.entityValue.name != null) {
+
+	def getJoinableRefsResultList(CubeDimensionEntityEntity cubeDimEntityEntity, CubeDimensionEntity entity,
+		ArrayList<EObject> result) {
+		if (entity !== null && entity.entityRef !== null && entity.entityRef.entityValue !== null &&
+			entity.entityRef.entityValue.name !== null) {
 			var LEntity cubeEnt = entity.entityRef.entityValue
-			for (LEntityReference lEntRef : cubeEnt.allReferences){
-				if (cubeDimEntityEntity.entityRef!=null && cubeDimEntityEntity.entityRef.entityValue !=null && cubeDimEntityEntity.entityRef.entityValue.name !=null && cubeDimEntityEntity.entityRef.entityValue.name.equals(lEntRef.type.name)){
+			for (LEntityReference lEntRef : cubeEnt.allReferences) {
+				if (cubeDimEntityEntity.entityRef !== null && cubeDimEntityEntity.entityRef.entityValue !== null &&
+					cubeDimEntityEntity.entityRef.entityValue.name !== null &&
+					cubeDimEntityEntity.entityRef.entityValue.name.equals(lEntRef.type.name)) {
 					result.add(lEntRef)
 				}
 			}
@@ -225,59 +231,43 @@
 	}
 
 	def getAttrResultList(LEntity cubeEnt, ArrayList<EObject> result) {
-		if (cubeEnt != null) {
+		if (cubeEnt !== null) {
 			for (LEntityAttribute entityAttr : cubeEnt.allAttributes) {
-				if (entityAttr.name != null) {
+				if (entityAttr.name !== null) {
 					result.add(entityAttr)
 				}
 			}
 		}
 		return result;
 	}
-	
-		def getAllFeaturesResultList(LEntity cubeEnt, ArrayList<EObject> result) {
-			if (cubeEnt != null) {
-				for (LEntityFeature entityFeature : cubeEnt.allFeatures) {
-					if (entityFeature.name != null) {
-						result.add(entityFeature)
-					}
+
+	def getAllFeaturesResultList(LEntity cubeEnt, ArrayList<EObject> result) {
+		if (cubeEnt !== null) {
+			for (LEntityFeature entityFeature : cubeEnt.allFeatures) {
+				if (entityFeature.name !== null) {
+					result.add(entityFeature)
 				}
 			}
-			return result;
 		}
-		
-		def getDimEntityName(CubeHierarchy cubeHierarchy){
-			if (cubeHierarchy!=null && cubeHierarchy.cubeDimEntity!=null && cubeHierarchy.cubeDimEntity.entityRef!=null && cubeHierarchy.cubeDimEntity.entityRef.entityValue!=null){
+		return result;
+	}
+
+	def getDimEntityName(CubeHierarchy cubeHierarchy) {
+		if (cubeHierarchy !== null && cubeHierarchy.cubeDimEntity !== null &&
+			cubeHierarchy.cubeDimEntity.entityRef !== null &&
+			cubeHierarchy.cubeDimEntity.entityRef.entityValue !== null) {
 				return cubeHierarchy.cubeDimEntity.entityRef.entityValue.name
 			}
 		}
-		
-		def getTypeName(LEntityReference entityRef){
-			if (entityRef.type.name!=null && entityRef.type.name!=null){
+
+		def getTypeName(LEntityReference entityRef) {
+			if (entityRef.type.name !== null && entityRef.type.name !== null) {
 				return entityRef.type.name
 			}
 		}
-		
-		def isDate(LEntityAttribute entityAttr){
-			var dateTypes = <Class>newArrayList
-			dateTypes.add(typeof(Date))
-			dateTypes.add(typeof(java.sql.Date))
-			var isDateBoolean = (	(entityAttr.type instanceof LDataType) && 
-									((entityAttr.type as LDataType).date || 
-//								  	 (dateTypes.contains((entityAttr.type as LDataType).jvmTypeReference.type.simpleName))
-									 dateTypes.containsInstanceOf((entityAttr.type as LDataType))
-									)
-								)
-			return isDateBoolean
+
+		def isDate(LEntityAttribute entityAttr) {
+			return (entityAttr.type instanceof LDataType && (entityAttr.type as LDataType).date)
 		}
-	
-	def containsInstanceOf(ArrayList<Class> dateTypes, LDataType dataType) {
-		for (Class dateObj : dateTypes){
-			if (dateObj != null && dateObj.name.equals(dataType.jvmTypeReference.type.identifier)){
-				return true
-			}
-		}
-		return false;
 	}
-	
-}
+	
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/validation/CubeDSLValidator.xtend b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/validation/CubeDSLValidator.xtend
index d609e4e..0bee78e 100644
--- a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/validation/CubeDSLValidator.xtend
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/validation/CubeDSLValidator.xtend
@@ -14,19 +14,20 @@
  *  This copyright notice shows up in the generated Java code
  *
  */
- 
 package org.eclipse.osbp.xtext.cubedsl.validation
 
+import com.google.inject.Inject
+import org.eclipse.emf.common.util.EList
+import org.eclipse.osbp.xtext.basic.validation.IBasicValidatorDelegate
+import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage
 import org.eclipse.osbp.xtext.cubedsl.CubeDimension
 import org.eclipse.osbp.xtext.cubedsl.CubeHierarchy
 import org.eclipse.osbp.xtext.cubedsl.CubeLevel
-import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage
-import org.eclipse.emf.common.util.EList
-import org.eclipse.xtext.validation.Check
 import org.eclipse.osbp.xtext.cubedsl.CubePackage
+import org.eclipse.osbp.xtext.cubedsl.CubeType
+import org.eclipse.xtext.validation.Check
 
 //import org.eclipse.xtext.validation.Check
-
 /**
  * Custom validation rules. 
  *
@@ -34,66 +35,72 @@
  */
 class CubeDSLValidator extends AbstractCubeDSLValidator {
 
-//  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)
-//		}
-//	}
-
+	@Inject(optional=true) IBasicValidatorDelegate delegate
+	
 	@Check
-	def void checkHierarchyLevelAtNoJoin(CubeHierarchy hierarchy){
-		if (hierarchy.cubeDimEntity.dimEntity==null && hierarchy.cubeDimEntity.hierarchLevels.size == 0){
+	def void checkHierarchyLevelAtNoJoin(CubeHierarchy hierarchy) {
+		if (hierarchy.cubeDimEntity.dimEntity === null && hierarchy.cubeDimEntity.hierarchLevels.size == 0) {
 			error("Level is required on a non-join hierarchy!", CubeDSLPackage.Literals.CUBE_HIERARCHY__CUBE_DIM_ENTITY)
 		}
 	}
-	
-	
+
 	@Check
-	def void checkTypeDimensionLevelType(CubeDimension cubeDimension){ 
+	def void checkTypeDimensionLevelType(CubeDimension cubeDimension) {
 		var boolean existLevelType = existLevelType(cubeDimension)
-		if (existLevelType && !cubeDimension.typeTime){
-			error("Dimension attribute 'type=\"TypeDimension\" required for Level attribute 'levelType'!", CubeDSLPackage.Literals.CUBE_BASE__NAME);
+		if (existLevelType && !cubeDimension.typeTime) {
+			error("Dimension attribute 'type=\"TypeDimension\" required for Level attribute 'levelType'!",
+				CubeDSLPackage.Literals.CUBE_BASE__NAME);
 		}
 	}
 
 	def private boolean existLevelType(CubeDimension cubeDimension) {
 		for (CubeHierarchy hierarchy : cubeDimension.getHierarchies()) {
 			for (CubeLevel level : hierarchy.getCubeDimEntity().getHierarchLevels()) {
-				if (level.levelType){
+				if (level.levelType) {
 					return true
 				}
 			}
 		}
 		return false
 	}
-	
+
 	@Check
-	def void checkDuplicateDimensionNames(CubeDimension cubeDimension){ 
+	def void checkDuplicateDimensionNames(CubeDimension cubeDimension) {
 		var eObj = cubeDimension.eContainer()
 		while (!(eObj instanceof CubePackage)) {
 			eObj = eObj.eContainer
 		}
-		if (eObj!=null){
+		if (eObj !== null) {
 			var cubePackage = eObj as CubePackage;
-			if (findDuplicateDimensions(cubePackage.getDimensions(), cubeDimension.getName()) != null){
-				error("Duplicate dimensionname '".concat(cubeDimension.name).concat("'!"), CubeDSLPackage.Literals.CUBE_BASE__NAME)
+			if (findDuplicateDimensions(cubePackage.getDimensions(), cubeDimension.getName()) !== null) {
+				error("Duplicate dimensionname '".concat(cubeDimension.name).concat("'!"),
+					CubeDSLPackage.Literals.CUBE_BASE__NAME)
 			}
 		}
 	}
-		
-	def private CubeDimension findDuplicateDimensions(
-			EList<CubeDimension> dims, String cubeDimensionName) {
+
+	def private CubeDimension findDuplicateDimensions(EList<CubeDimension> dims, String cubeDimensionName) {
 		var tempSet = <String>newHashSet()
-		for (CubeDimension dim : dims){
-		   if (!tempSet.add(dim.name) && (dim.name.equals(cubeDimensionName))){
-			   return dim
-		   }
+		for (CubeDimension dim : dims) {
+			if (!tempSet.add(dim.name) && (dim.name.equals(cubeDimensionName))) {
+				return dim
+			}
 		}
 		return null
 	}
+	
+	@Check
+	def checkCommercialLicensedDimension(CubeDimension dimension) {
+		if(delegate !== null && !delegate.validateCommercial("cube", "net.osbee.xtext.cube")) {
+			info('''Cube is needed and not yet licensed. License Cube at www.osbee.net''', dimension, null)
+		}
+	}
+	
+	@Check
+	def checkCommercialLicensedCube(CubeType cube) {
+		if(delegate !== null && !delegate.validateCommercial("cube", "net.osbee.xtext.cube")) {
+			info('''Cube is needed and not yet licensed. License Cube at www.osbee.net''', cube, null)
+		}
+	}
+	
 }
diff --git a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/valueconverter/CubeQualifiedNameProvider.java b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/valueconverter/CubeQualifiedNameProvider.java
index 33b4d14..0dd7437 100644
--- a/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/valueconverter/CubeQualifiedNameProvider.java
+++ b/org.eclipse.osbp.xtext.cubedsl/src/org/eclipse/osbp/xtext/cubedsl/valueconverter/CubeQualifiedNameProvider.java
@@ -36,35 +36,35 @@
 			return QualifiedName.create("");
 		}
 
-		if (obj instanceof CubeDimension) {
-			CubeDimension dim = (CubeDimension) obj;
-			if (dim.getName() == null) {
-				return null;
-			}
-			return qualifiedNameConverter.toQualifiedName(dim.getName());
-		} else if (obj instanceof CubeHierarchy) {
-				CubeHierarchy hier = (CubeHierarchy) obj;
-				if (hier.getName() == null) {
-					CubeDimension dim = (CubeDimension)hier.eContainer();
-					if (dim.getName() == null) {
-						return null;
-					}
-					return qualifiedNameConverter.toQualifiedName(dim.getName());
-				}
-				return qualifiedNameConverter.toQualifiedName(hier.getName());
-		} else if (obj instanceof CubeMeasure) {
-			CubeMeasure meas = (CubeMeasure) obj;
-			if (meas.getName() == null) {
-				return null;
-			}
-			return qualifiedNameConverter.toQualifiedName(meas.getName());
-		} else if (obj instanceof CubeLevel) {
-			CubeLevel lev = (CubeLevel) obj;
-			if (lev.getName() == null) {
-				return null;
-			}
-			return qualifiedNameConverter.toQualifiedName(lev.getName());
-		}
+//		if (obj instanceof CubeDimension) {
+//			CubeDimension dim = (CubeDimension) obj;
+//			if (dim.getName() == null) {
+//				return null;
+//			}
+//			return qualifiedNameConverter.toQualifiedName(dim.getName());
+//		} else if (obj instanceof CubeHierarchy) {
+//				CubeHierarchy hier = (CubeHierarchy) obj;
+//				if (hier.getName() == null) {
+//					CubeDimension dim = (CubeDimension)hier.eContainer();
+//					if (dim.getName() == null) {
+//						return null;
+//					}
+//					return qualifiedNameConverter.toQualifiedName(dim.getName());
+//				}
+//				return qualifiedNameConverter.toQualifiedName(hier.getName());
+//		} else if (obj instanceof CubeMeasure) {
+//			CubeMeasure meas = (CubeMeasure) obj;
+//			if (meas.getName() == null) {
+//				return null;
+//			}
+//			return qualifiedNameConverter.toQualifiedName(meas.getName());
+//		} else if (obj instanceof CubeLevel) {
+//			CubeLevel lev = (CubeLevel) obj;
+//			if (lev.getName() == null) {
+//				return null;
+//			}
+//			return qualifiedNameConverter.toQualifiedName(lev.getName());
+//		}
 		return super.getFullyQualifiedName(obj);
 	}
 }
diff --git a/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/formatting/.gitignore b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/formatting/.gitignore
new file mode 100644
index 0000000..fe72fdd
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/formatting/.gitignore
@@ -0,0 +1,2 @@
+/.CubeDSLFormatter.xtendbin
+/CubeDSLFormatter.java
diff --git a/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/formatting/CubeDSLFormatter.java b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/formatting/CubeDSLFormatter.java
index 49ba0ae..e972f53 100644
--- a/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/formatting/CubeDSLFormatter.java
+++ b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/formatting/CubeDSLFormatter.java
@@ -1,24 +1,24 @@
 /**
- *                                                                            
- *  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
+ * 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
  */
 package org.eclipse.osbp.xtext.cubedsl.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.
@@ -31,14 +31,13 @@
 @SuppressWarnings("all")
 public class CubeDSLFormatter 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, "CubeDimension", "Import");
-    Grammar _grammar_1 = this.grammar.getGrammar();
-    genericFormatter.formatFirstLevelBlocks(c, _grammar_1, "CubeType", "Import");
+    genericFormatter.formatFirstLevelBlocks(c, this.grammar.getGrammar(), "CubeDimension");
+    genericFormatter.formatFirstLevelBlocks(c, this.grammar.getGrammar(), "CubeType");
     genericFormatter.genericFormatting(c, this.grammar, this.grammarAccess);
   }
 }
diff --git a/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/jvmmodel/.gitignore b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/jvmmodel/.gitignore
new file mode 100644
index 0000000..181f4c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/jvmmodel/.gitignore
@@ -0,0 +1,4 @@
+/.CubeDSLGenerator.xtendbin
+/.CubeDSLJvmModelInferrer.xtendbin
+/CubeDSLJvmModelInferrer.java
+/CubeModelGenerator.java
diff --git a/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/jvmmodel/CubeDSLJvmModelInferrer.java b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/jvmmodel/CubeDSLJvmModelInferrer.java
index 7c925c1..e1a744a 100644
--- a/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/jvmmodel/CubeDSLJvmModelInferrer.java
+++ b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/jvmmodel/CubeDSLJvmModelInferrer.java
@@ -1,3 +1,17 @@
+/**
+ * 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
+ */
 package org.eclipse.osbp.xtext.cubedsl.jvmmodel;
 
 import java.util.Arrays;
diff --git a/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/jvmmodel/CubeModelGenerator.java b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/jvmmodel/CubeModelGenerator.java
index 74bfda7..29816ec 100644
--- a/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/jvmmodel/CubeModelGenerator.java
+++ b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/jvmmodel/CubeModelGenerator.java
@@ -1,3 +1,17 @@
+/**
+ * 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
+ */
 package org.eclipse.osbp.xtext.cubedsl.jvmmodel;
 
 import org.eclipse.emf.ecore.resource.Resource;
@@ -6,6 +20,7 @@
 
 @SuppressWarnings("all")
 public class CubeModelGenerator extends I18NModelGenerator {
+  @Override
   public void doGenerate(final Resource input, final IFileSystemAccess fsa) {
     super.doGenerate(input, fsa);
   }
diff --git a/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/scoping/.gitignore b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/scoping/.gitignore
new file mode 100644
index 0000000..4692d17
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/scoping/.gitignore
@@ -0,0 +1,2 @@
+/.CubeDSLScopeProvider.xtendbin
+/CubeDSLScopeProvider.java
diff --git a/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/scoping/CubeDSLScopeProvider.java b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/scoping/CubeDSLScopeProvider.java
index 70f4a55..9ee59f1 100644
--- a/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/scoping/CubeDSLScopeProvider.java
+++ b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/scoping/CubeDSLScopeProvider.java
@@ -1,27 +1,26 @@
 /**
- *                                                                            
- *  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
+ * 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
  */
 package org.eclipse.osbp.xtext.cubedsl.scoping;
 
 import com.google.common.base.Objects;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EReference;
 import org.eclipse.osbp.dsl.semantic.common.types.LDataType;
-import org.eclipse.osbp.dsl.semantic.common.types.LScalarType;
 import org.eclipse.osbp.dsl.semantic.entity.LEntity;
 import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
 import org.eclipse.osbp.dsl.semantic.entity.LEntityFeature;
@@ -37,11 +36,9 @@
 import org.eclipse.osbp.xtext.cubedsl.CubeMeasure;
 import org.eclipse.osbp.xtext.cubedsl.CubePackage;
 import org.eclipse.osbp.xtext.cubedsl.CubeTypeEntity;
-import org.eclipse.xtext.common.types.JvmType;
-import org.eclipse.xtext.common.types.JvmTypeReference;
+import org.eclipse.osbp.xtext.cubedsl.scoping.AbstractCubeDSLScopeProvider;
 import org.eclipse.xtext.scoping.IScope;
 import org.eclipse.xtext.scoping.Scopes;
-import org.eclipse.xtext.xbase.annotations.typesystem.XbaseWithAnnotationsBatchScopeProvider;
 import org.eclipse.xtext.xbase.lib.CollectionLiterals;
 
 /**
@@ -51,7 +48,7 @@
  * on how and when to use it
  */
 @SuppressWarnings("all")
-public class CubeDSLScopeProvider extends XbaseWithAnnotationsBatchScopeProvider {
+public class CubeDSLScopeProvider extends AbstractCubeDSLScopeProvider {
   @Override
   public IScope getScope(final EObject context, final EReference reference) {
     boolean _equals = Objects.equal(reference, CubeDSLPackage.Literals.CUBE_DIMENSION_ENTITY_ENTITY__OVER_VALUE);
@@ -66,23 +63,15 @@
         if (_equals_2) {
           return this.getScope_CubeMeasureCol(((CubeMeasure) context));
         } else {
-          boolean _or = false;
-          boolean _equals_3 = Objects.equal(reference, CubeDSLPackage.Literals.CUBE_LEVEL__LEVEL_COL_VALUE);
-          if (_equals_3) {
-            _or = true;
-          } else {
-            boolean _equals_4 = Objects.equal(reference, CubeDSLPackage.Literals.CUBE_LEVEL_PROP__LEVEL_PROP_COL_VALUE);
-            _or = _equals_4;
-          }
-          if (_or) {
+          if ((Objects.equal(reference, CubeDSLPackage.Literals.CUBE_LEVEL__LEVEL_COL_VALUE) || Objects.equal(reference, CubeDSLPackage.Literals.CUBE_LEVEL_PROP__LEVEL_PROP_COL_VALUE))) {
             return this.getScope_CubeEntityColRef(((EObject) context));
           } else {
-            boolean _equals_5 = Objects.equal(reference, CubeDSLPackage.Literals.CUBE_ENTITY__KEY_VALUE);
-            if (_equals_5) {
+            boolean _equals_3 = Objects.equal(reference, CubeDSLPackage.Literals.CUBE_ENTITY__KEY_VALUE);
+            if (_equals_3) {
               return this.getScope_CubeEntity_KeyValue(((CubeEntity) context));
             } else {
-              boolean _equals_6 = Objects.equal(reference, CubeDSLPackage.Literals.CUBE_DIMENSION_USAGE__SOURCE_VALUE);
-              if (_equals_6) {
+              boolean _equals_4 = Objects.equal(reference, CubeDSLPackage.Literals.CUBE_DIMENSION_USAGE__SOURCE_VALUE);
+              if (_equals_4) {
                 return this.getScope_CubeDimensionUsage_SourceValue(((CubeDimensionUsage) context));
               } else {
                 return super.getScope(context, reference);
@@ -98,17 +87,15 @@
     ArrayList<EObject> result = CollectionLiterals.<EObject>newArrayList();
     EObject eObj = cubeDimUsage.eContainer();
     while ((!(eObj instanceof CubePackage))) {
-      EObject _eContainer = eObj.eContainer();
-      eObj = _eContainer;
+      eObj = eObj.eContainer();
     }
     CubePackage cubePackage = ((CubePackage) eObj);
-    boolean _notEquals = (!Objects.equal(cubePackage, null));
-    if (_notEquals) {
+    if ((cubePackage != null)) {
       EList<CubeDimension> _dimensions = cubePackage.getDimensions();
       for (final CubeDimension cubeDim : _dimensions) {
         String _name = cubeDim.getName();
-        boolean _notEquals_1 = (!Objects.equal(_name, null));
-        if (_notEquals_1) {
+        boolean _tripleNotEquals = (_name != null);
+        if (_tripleNotEquals) {
           result.add(cubeDim);
         }
       }
@@ -121,12 +108,10 @@
     ArrayList<String> dimEntities = CollectionLiterals.<String>newArrayList();
     CubeDimension dimUsageSource = cubeDimUsage.getSourceValue();
     LEntity cubeEnt = this.getCubeEntity(cubeDimUsage);
-    boolean _notEquals = (!Objects.equal(dimUsageSource, null));
-    if (_notEquals) {
+    if ((dimUsageSource != null)) {
       EList<CubeHierarchy> _hierarchies = dimUsageSource.getHierarchies();
       for (final CubeHierarchy cubeHierarchy : _hierarchies) {
-        String _dimEntityName = this.getDimEntityName(cubeHierarchy);
-        dimEntities.add(_dimEntityName);
+        dimEntities.add(this.getDimEntityName(cubeHierarchy));
       }
       boolean _isTypeTime = dimUsageSource.isTypeTime();
       if (_isTypeTime) {
@@ -139,10 +124,8 @@
         }
       }
     }
-    boolean _notEquals_1 = (!Objects.equal(cubeEnt, null));
-    if (_notEquals_1) {
-      String _name = cubeEnt.getName();
-      boolean _contains = dimEntities.contains(_name);
+    if ((cubeEnt != null)) {
+      boolean _contains = dimEntities.contains(cubeEnt.getName());
       if (_contains) {
         List<LEntityAttribute> _allAttributes_1 = cubeEnt.getAllAttributes();
         for (final LEntityAttribute entityAttr_1 : _allAttributes_1) {
@@ -151,8 +134,7 @@
       } else {
         List<LEntityReference> _allReferences = cubeEnt.getAllReferences();
         for (final LEntityReference entityRef : _allReferences) {
-          String _typeName = this.getTypeName(entityRef);
-          boolean _contains_1 = dimEntities.contains(_typeName);
+          boolean _contains_1 = dimEntities.contains(this.getTypeName(entityRef));
           if (_contains_1) {
             result.add(entityRef);
           }
@@ -166,8 +148,8 @@
     List<LEntityReference> _allReferences = cubeEnt.getAllReferences();
     for (final LEntityReference entityRef : _allReferences) {
       String _name = entityRef.getName();
-      boolean _notEquals = (!Objects.equal(_name, null));
-      if (_notEquals) {
+      boolean _tripleNotEquals = (_name != null);
+      if (_tripleNotEquals) {
         result.add(entityRef);
       }
     }
@@ -178,17 +160,12 @@
     LEntity cubeEnt = null;
     EObject eObj = childEObj.eContainer();
     while ((!(eObj instanceof CubeTypeEntity))) {
-      boolean _notEquals = (!Objects.equal(eObj, null));
-      if (_notEquals) {
-        EObject _eContainer = eObj.eContainer();
-        eObj = _eContainer;
+      if ((eObj != null)) {
+        eObj = eObj.eContainer();
       }
     }
-    boolean _notEquals = (!Objects.equal(eObj, null));
-    if (_notEquals) {
-      CubeEntity _entityRef = ((CubeTypeEntity) eObj).getEntityRef();
-      LEntity _entityValue = _entityRef.getEntityValue();
-      cubeEnt = _entityValue;
+    if ((eObj != null)) {
+      cubeEnt = ((CubeTypeEntity) eObj).getEntityRef().getEntityValue();
     }
     return cubeEnt;
   }
@@ -196,60 +173,16 @@
   public IScope getScope_CubeMeasureCol(final CubeMeasure cubeMeasure) {
     ArrayList<EObject> result = CollectionLiterals.<EObject>newArrayList();
     LEntity cubeEnt = this.getCubeEntity(cubeMeasure);
-    boolean _notEquals = (!Objects.equal(cubeEnt, null));
-    if (_notEquals) {
-      boolean _and = false;
-      CubeAggregatorEnum _aggregator = cubeMeasure.getAggregator();
-      boolean _notEquals_1 = (!Objects.equal(_aggregator, null));
-      if (!_notEquals_1) {
-        _and = false;
-      } else {
-        boolean _or = false;
-        CubeAggregatorEnum _aggregator_1 = cubeMeasure.getAggregator();
-        boolean _equals = _aggregator_1.equals(CubeAggregatorEnum.COUNT);
-        if (_equals) {
-          _or = true;
-        } else {
-          CubeAggregatorEnum _aggregator_2 = cubeMeasure.getAggregator();
-          boolean _equals_1 = _aggregator_2.equals(CubeAggregatorEnum.DSC);
-          _or = _equals_1;
-        }
-        _and = _or;
-      }
-      if (_and) {
-        ArrayList<EObject> _refResultList = this.getRefResultList(cubeEnt, result);
-        result = _refResultList;
+    if ((cubeEnt != null)) {
+      if (((cubeMeasure.getAggregator() != null) && (cubeMeasure.getAggregator().equals(CubeAggregatorEnum.COUNT) || 
+        cubeMeasure.getAggregator().equals(CubeAggregatorEnum.DSC)))) {
+        result = this.getRefResultList(cubeEnt, result);
       } else {
         List<LEntityAttribute> _allAttributes = cubeEnt.getAllAttributes();
         for (final LEntityAttribute entityAttr : _allAttributes) {
-          boolean _and_1 = false;
-          boolean _and_2 = false;
-          boolean _and_3 = false;
-          LScalarType _type = entityAttr.getType();
-          boolean _notEquals_2 = (!Objects.equal(_type, null));
-          if (!_notEquals_2) {
-            _and_3 = false;
-          } else {
-            LScalarType _type_1 = entityAttr.getType();
-            _and_3 = (_type_1 instanceof LDataType);
-          }
-          if (!_and_3) {
-            _and_2 = false;
-          } else {
-            LScalarType _type_2 = entityAttr.getType();
-            boolean _isAsPrimitive = ((LDataType) _type_2).isAsPrimitive();
-            _and_2 = _isAsPrimitive;
-          }
-          if (!_and_2) {
-            _and_1 = false;
-          } else {
-            LScalarType _type_3 = entityAttr.getType();
-            String _name = ((LDataType) _type_3).getName();
-            boolean _equals_2 = "String".equals(_name);
-            boolean _not = (!_equals_2);
-            _and_1 = _not;
-          }
-          if (_and_1) {
+          if (((((entityAttr.getType() != null) && (entityAttr.getType() instanceof LDataType)) && 
+            ((LDataType) entityAttr.getType()).isAsPrimitive()) && 
+            (!"String".equals(((LDataType) entityAttr.getType()).getName())))) {
             result.add(entityAttr);
           }
         }
@@ -262,34 +195,24 @@
     ArrayList<EObject> result = CollectionLiterals.<EObject>newArrayList();
     EObject eObj = context;
     while ((!(((eObj instanceof CubeDimensionEntity) || (eObj instanceof CubeDimensionEntityEntity)) || (eObj instanceof CubeTypeEntity)))) {
-      boolean _notEquals = (!Objects.equal(eObj, null));
-      if (_notEquals) {
-        EObject _eContainer = eObj.eContainer();
-        eObj = _eContainer;
+      if ((eObj != null)) {
+        eObj = eObj.eContainer();
       }
     }
-    boolean _notEquals = (!Objects.equal(eObj, null));
-    if (_notEquals) {
+    if ((eObj != null)) {
       LEntity cubeEnt = null;
       if ((eObj instanceof CubeDimensionEntityEntity)) {
-        CubeEntity _entityRef = ((CubeDimensionEntityEntity) eObj).getEntityRef();
-        LEntity _entityValue = _entityRef.getEntityValue();
-        cubeEnt = _entityValue;
+        cubeEnt = ((CubeDimensionEntityEntity) eObj).getEntityRef().getEntityValue();
       } else {
         if ((eObj instanceof CubeDimensionEntity)) {
-          CubeEntity _entityRef_1 = ((CubeDimensionEntity) eObj).getEntityRef();
-          LEntity _entityValue_1 = _entityRef_1.getEntityValue();
-          cubeEnt = _entityValue_1;
+          cubeEnt = ((CubeDimensionEntity) eObj).getEntityRef().getEntityValue();
         } else {
           if ((eObj instanceof CubeTypeEntity)) {
-            CubeEntity _entityRef_2 = ((CubeTypeEntity) eObj).getEntityRef();
-            LEntity _entityValue_2 = _entityRef_2.getEntityValue();
-            cubeEnt = _entityValue_2;
+            cubeEnt = ((CubeTypeEntity) eObj).getEntityRef().getEntityValue();
           }
         }
       }
-      ArrayList<EObject> _attrResultList = this.getAttrResultList(cubeEnt, result);
-      result = _attrResultList;
+      result = this.getAttrResultList(cubeEnt, result);
     }
     return Scopes.scopeFor(result);
   }
@@ -298,17 +221,13 @@
     ArrayList<EObject> result = CollectionLiterals.<EObject>newArrayList();
     EObject eObj = cubeDimEntityEntity.eContainer();
     while ((!(eObj instanceof CubeDimensionEntity))) {
-      boolean _notEquals = (!Objects.equal(eObj, null));
-      if (_notEquals) {
-        EObject _eContainer = eObj.eContainer();
-        eObj = _eContainer;
+      if ((eObj != null)) {
+        eObj = eObj.eContainer();
       }
     }
-    boolean _notEquals = (!Objects.equal(eObj, null));
-    if (_notEquals) {
+    if ((eObj != null)) {
       if ((eObj instanceof CubeDimensionEntity)) {
-        ArrayList<EObject> _joinableRefsResultList = this.getJoinableRefsResultList(cubeDimEntityEntity, ((CubeDimensionEntity) eObj), result);
-        result = _joinableRefsResultList;
+        result = this.getJoinableRefsResultList(cubeDimEntityEntity, ((CubeDimensionEntity) eObj), result);
       }
     }
     return Scopes.scopeFor(result);
@@ -316,83 +235,21 @@
   
   public IScope getScope_CubeEntity_KeyValue(final CubeEntity entity) {
     ArrayList<EObject> result = CollectionLiterals.<EObject>newArrayList();
-    boolean _notEquals = (!Objects.equal(entity, null));
-    if (_notEquals) {
-      LEntity _entityValue = entity.getEntityValue();
-      ArrayList<EObject> _attrResultList = this.getAttrResultList(_entityValue, result);
-      result = _attrResultList;
+    if ((entity != null)) {
+      result = this.getAttrResultList(entity.getEntityValue(), result);
     }
     return Scopes.scopeFor(result);
   }
   
   public ArrayList<EObject> getJoinableRefsResultList(final CubeDimensionEntityEntity cubeDimEntityEntity, final CubeDimensionEntity entity, final ArrayList<EObject> result) {
-    boolean _and = false;
-    boolean _and_1 = false;
-    boolean _and_2 = false;
-    boolean _notEquals = (!Objects.equal(entity, null));
-    if (!_notEquals) {
-      _and_2 = false;
-    } else {
-      CubeEntity _entityRef = entity.getEntityRef();
-      boolean _notEquals_1 = (!Objects.equal(_entityRef, null));
-      _and_2 = _notEquals_1;
-    }
-    if (!_and_2) {
-      _and_1 = false;
-    } else {
-      CubeEntity _entityRef_1 = entity.getEntityRef();
-      LEntity _entityValue = _entityRef_1.getEntityValue();
-      boolean _notEquals_2 = (!Objects.equal(_entityValue, null));
-      _and_1 = _notEquals_2;
-    }
-    if (!_and_1) {
-      _and = false;
-    } else {
-      CubeEntity _entityRef_2 = entity.getEntityRef();
-      LEntity _entityValue_1 = _entityRef_2.getEntityValue();
-      String _name = _entityValue_1.getName();
-      boolean _notEquals_3 = (!Objects.equal(_name, null));
-      _and = _notEquals_3;
-    }
-    if (_and) {
-      CubeEntity _entityRef_3 = entity.getEntityRef();
-      LEntity cubeEnt = _entityRef_3.getEntityValue();
+    if (((((entity != null) && (entity.getEntityRef() != null)) && (entity.getEntityRef().getEntityValue() != null)) && 
+      (entity.getEntityRef().getEntityValue().getName() != null))) {
+      LEntity cubeEnt = entity.getEntityRef().getEntityValue();
       List<LEntityReference> _allReferences = cubeEnt.getAllReferences();
       for (final LEntityReference lEntRef : _allReferences) {
-        boolean _and_3 = false;
-        boolean _and_4 = false;
-        boolean _and_5 = false;
-        CubeEntity _entityRef_4 = cubeDimEntityEntity.getEntityRef();
-        boolean _notEquals_4 = (!Objects.equal(_entityRef_4, null));
-        if (!_notEquals_4) {
-          _and_5 = false;
-        } else {
-          CubeEntity _entityRef_5 = cubeDimEntityEntity.getEntityRef();
-          LEntity _entityValue_2 = _entityRef_5.getEntityValue();
-          boolean _notEquals_5 = (!Objects.equal(_entityValue_2, null));
-          _and_5 = _notEquals_5;
-        }
-        if (!_and_5) {
-          _and_4 = false;
-        } else {
-          CubeEntity _entityRef_6 = cubeDimEntityEntity.getEntityRef();
-          LEntity _entityValue_3 = _entityRef_6.getEntityValue();
-          String _name_1 = _entityValue_3.getName();
-          boolean _notEquals_6 = (!Objects.equal(_name_1, null));
-          _and_4 = _notEquals_6;
-        }
-        if (!_and_4) {
-          _and_3 = false;
-        } else {
-          CubeEntity _entityRef_7 = cubeDimEntityEntity.getEntityRef();
-          LEntity _entityValue_4 = _entityRef_7.getEntityValue();
-          String _name_2 = _entityValue_4.getName();
-          LEntity _type = lEntRef.getType();
-          String _name_3 = _type.getName();
-          boolean _equals = _name_2.equals(_name_3);
-          _and_3 = _equals;
-        }
-        if (_and_3) {
+        if (((((cubeDimEntityEntity.getEntityRef() != null) && (cubeDimEntityEntity.getEntityRef().getEntityValue() != null)) && 
+          (cubeDimEntityEntity.getEntityRef().getEntityValue().getName() != null)) && 
+          cubeDimEntityEntity.getEntityRef().getEntityValue().getName().equals(lEntRef.getType().getName()))) {
           result.add(lEntRef);
         }
       }
@@ -401,13 +258,12 @@
   }
   
   public ArrayList<EObject> getAttrResultList(final LEntity cubeEnt, final ArrayList<EObject> result) {
-    boolean _notEquals = (!Objects.equal(cubeEnt, null));
-    if (_notEquals) {
+    if ((cubeEnt != null)) {
       List<LEntityAttribute> _allAttributes = cubeEnt.getAllAttributes();
       for (final LEntityAttribute entityAttr : _allAttributes) {
         String _name = entityAttr.getName();
-        boolean _notEquals_1 = (!Objects.equal(_name, null));
-        if (_notEquals_1) {
+        boolean _tripleNotEquals = (_name != null);
+        if (_tripleNotEquals) {
           result.add(entityAttr);
         }
       }
@@ -416,13 +272,12 @@
   }
   
   public ArrayList<EObject> getAllFeaturesResultList(final LEntity cubeEnt, final ArrayList<EObject> result) {
-    boolean _notEquals = (!Objects.equal(cubeEnt, null));
-    if (_notEquals) {
+    if ((cubeEnt != null)) {
       List<LEntityFeature> _allFeatures = cubeEnt.getAllFeatures();
       for (final LEntityFeature entityFeature : _allFeatures) {
         String _name = entityFeature.getName();
-        boolean _notEquals_1 = (!Objects.equal(_name, null));
-        if (_notEquals_1) {
+        boolean _tripleNotEquals = (_name != null);
+        if (_tripleNotEquals) {
           result.add(entityFeature);
         }
       }
@@ -431,106 +286,22 @@
   }
   
   public String getDimEntityName(final CubeHierarchy cubeHierarchy) {
-    boolean _and = false;
-    boolean _and_1 = false;
-    boolean _and_2 = false;
-    boolean _notEquals = (!Objects.equal(cubeHierarchy, null));
-    if (!_notEquals) {
-      _and_2 = false;
-    } else {
-      CubeDimensionEntity _cubeDimEntity = cubeHierarchy.getCubeDimEntity();
-      boolean _notEquals_1 = (!Objects.equal(_cubeDimEntity, null));
-      _and_2 = _notEquals_1;
-    }
-    if (!_and_2) {
-      _and_1 = false;
-    } else {
-      CubeDimensionEntity _cubeDimEntity_1 = cubeHierarchy.getCubeDimEntity();
-      CubeEntity _entityRef = _cubeDimEntity_1.getEntityRef();
-      boolean _notEquals_2 = (!Objects.equal(_entityRef, null));
-      _and_1 = _notEquals_2;
-    }
-    if (!_and_1) {
-      _and = false;
-    } else {
-      CubeDimensionEntity _cubeDimEntity_2 = cubeHierarchy.getCubeDimEntity();
-      CubeEntity _entityRef_1 = _cubeDimEntity_2.getEntityRef();
-      LEntity _entityValue = _entityRef_1.getEntityValue();
-      boolean _notEquals_3 = (!Objects.equal(_entityValue, null));
-      _and = _notEquals_3;
-    }
-    if (_and) {
-      CubeDimensionEntity _cubeDimEntity_3 = cubeHierarchy.getCubeDimEntity();
-      CubeEntity _entityRef_2 = _cubeDimEntity_3.getEntityRef();
-      LEntity _entityValue_1 = _entityRef_2.getEntityValue();
-      return _entityValue_1.getName();
+    if (((((cubeHierarchy != null) && (cubeHierarchy.getCubeDimEntity() != null)) && 
+      (cubeHierarchy.getCubeDimEntity().getEntityRef() != null)) && 
+      (cubeHierarchy.getCubeDimEntity().getEntityRef().getEntityValue() != null))) {
+      return cubeHierarchy.getCubeDimEntity().getEntityRef().getEntityValue().getName();
     }
     return null;
   }
   
   public String getTypeName(final LEntityReference entityRef) {
-    boolean _and = false;
-    LEntity _type = entityRef.getType();
-    String _name = _type.getName();
-    boolean _notEquals = (!Objects.equal(_name, null));
-    if (!_notEquals) {
-      _and = false;
-    } else {
-      LEntity _type_1 = entityRef.getType();
-      String _name_1 = _type_1.getName();
-      boolean _notEquals_1 = (!Objects.equal(_name_1, null));
-      _and = _notEquals_1;
-    }
-    if (_and) {
-      LEntity _type_2 = entityRef.getType();
-      return _type_2.getName();
+    if (((entityRef.getType().getName() != null) && (entityRef.getType().getName() != null))) {
+      return entityRef.getType().getName();
     }
     return null;
   }
   
   public boolean isDate(final LEntityAttribute entityAttr) {
-    ArrayList<Class> dateTypes = CollectionLiterals.<Class>newArrayList();
-    dateTypes.add(Date.class);
-    dateTypes.add(java.sql.Date.class);
-    boolean _and = false;
-    LScalarType _type = entityAttr.getType();
-    if (!(_type instanceof LDataType)) {
-      _and = false;
-    } else {
-      boolean _or = false;
-      LScalarType _type_1 = entityAttr.getType();
-      boolean _isDate = ((LDataType) _type_1).isDate();
-      if (_isDate) {
-        _or = true;
-      } else {
-        LScalarType _type_2 = entityAttr.getType();
-        boolean _containsInstanceOf = this.containsInstanceOf(dateTypes, ((LDataType) _type_2));
-        _or = _containsInstanceOf;
-      }
-      _and = _or;
-    }
-    boolean isDateBoolean = _and;
-    return isDateBoolean;
-  }
-  
-  public boolean containsInstanceOf(final ArrayList<Class> dateTypes, final LDataType dataType) {
-    for (final Class dateObj : dateTypes) {
-      boolean _and = false;
-      boolean _notEquals = (!Objects.equal(dateObj, null));
-      if (!_notEquals) {
-        _and = false;
-      } else {
-        String _name = dateObj.getName();
-        JvmTypeReference _jvmTypeReference = dataType.getJvmTypeReference();
-        JvmType _type = _jvmTypeReference.getType();
-        String _identifier = _type.getIdentifier();
-        boolean _equals = _name.equals(_identifier);
-        _and = _equals;
-      }
-      if (_and) {
-        return true;
-      }
-    }
-    return false;
+    return ((entityAttr.getType() instanceof LDataType) && ((LDataType) entityAttr.getType()).isDate());
   }
 }
diff --git a/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/validation/.gitignore b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/validation/.gitignore
new file mode 100644
index 0000000..b5ad9f6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/validation/.gitignore
@@ -0,0 +1,2 @@
+/.CubeDSLValidator.xtendbin
+/CubeDSLValidator.java
diff --git a/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/validation/CubeDSLValidator.java b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/validation/CubeDSLValidator.java
index 60aa295..f9bd413 100644
--- a/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/validation/CubeDSLValidator.java
+++ b/org.eclipse.osbp.xtext.cubedsl/xtend-gen/org/eclipse/osbp/xtext/cubedsl/validation/CubeDSLValidator.java
@@ -1,30 +1,32 @@
 /**
- *                                                                            
- *  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
+ * 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
  */
 package org.eclipse.osbp.xtext.cubedsl.validation;
 
-import com.google.common.base.Objects;
+import com.google.inject.Inject;
 import java.util.HashSet;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EObject;
+import org.eclipse.osbp.xtext.basic.validation.IBasicValidatorDelegate;
 import org.eclipse.osbp.xtext.cubedsl.CubeDSLPackage;
 import org.eclipse.osbp.xtext.cubedsl.CubeDimension;
-import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntity;
-import org.eclipse.osbp.xtext.cubedsl.CubeDimensionEntityEntity;
 import org.eclipse.osbp.xtext.cubedsl.CubeHierarchy;
 import org.eclipse.osbp.xtext.cubedsl.CubeLevel;
 import org.eclipse.osbp.xtext.cubedsl.CubePackage;
+import org.eclipse.osbp.xtext.cubedsl.CubeType;
 import org.eclipse.osbp.xtext.cubedsl.validation.AbstractCubeDSLValidator;
+import org.eclipse.xtend2.lib.StringConcatenation;
 import org.eclipse.xtext.validation.Check;
 import org.eclipse.xtext.xbase.lib.CollectionLiterals;
 
@@ -35,22 +37,12 @@
  */
 @SuppressWarnings("all")
 public class CubeDSLValidator extends AbstractCubeDSLValidator {
+  @Inject(optional = true)
+  private IBasicValidatorDelegate delegate;
+  
   @Check
   public void checkHierarchyLevelAtNoJoin(final CubeHierarchy hierarchy) {
-    boolean _and = false;
-    CubeDimensionEntity _cubeDimEntity = hierarchy.getCubeDimEntity();
-    CubeDimensionEntityEntity _dimEntity = _cubeDimEntity.getDimEntity();
-    boolean _equals = Objects.equal(_dimEntity, null);
-    if (!_equals) {
-      _and = false;
-    } else {
-      CubeDimensionEntity _cubeDimEntity_1 = hierarchy.getCubeDimEntity();
-      EList<CubeLevel> _hierarchLevels = _cubeDimEntity_1.getHierarchLevels();
-      int _size = _hierarchLevels.size();
-      boolean _equals_1 = (_size == 0);
-      _and = _equals_1;
-    }
-    if (_and) {
+    if (((hierarchy.getCubeDimEntity().getDimEntity() == null) && (hierarchy.getCubeDimEntity().getHierarchLevels().size() == 0))) {
       this.error("Level is required on a non-join hierarchy!", CubeDSLPackage.Literals.CUBE_HIERARCHY__CUBE_DIM_ENTITY);
     }
   }
@@ -58,24 +50,16 @@
   @Check
   public void checkTypeDimensionLevelType(final CubeDimension cubeDimension) {
     boolean existLevelType = this.existLevelType(cubeDimension);
-    boolean _and = false;
-    if (!existLevelType) {
-      _and = false;
-    } else {
-      boolean _isTypeTime = cubeDimension.isTypeTime();
-      boolean _not = (!_isTypeTime);
-      _and = _not;
-    }
-    if (_and) {
-      this.error("Dimension attribute \'type=\"TypeDimension\" required for Level attribute \'levelType\'!", CubeDSLPackage.Literals.CUBE_BASE__NAME);
+    if ((existLevelType && (!cubeDimension.isTypeTime()))) {
+      this.error("Dimension attribute \'type=\"TypeDimension\" required for Level attribute \'levelType\'!", 
+        CubeDSLPackage.Literals.CUBE_BASE__NAME);
     }
   }
   
   private boolean existLevelType(final CubeDimension cubeDimension) {
     EList<CubeHierarchy> _hierarchies = cubeDimension.getHierarchies();
     for (final CubeHierarchy hierarchy : _hierarchies) {
-      CubeDimensionEntity _cubeDimEntity = hierarchy.getCubeDimEntity();
-      EList<CubeLevel> _hierarchLevels = _cubeDimEntity.getHierarchLevels();
+      EList<CubeLevel> _hierarchLevels = hierarchy.getCubeDimEntity().getHierarchLevels();
       for (final CubeLevel level : _hierarchLevels) {
         boolean _isLevelType = level.isLevelType();
         if (_isLevelType) {
@@ -90,21 +74,15 @@
   public void checkDuplicateDimensionNames(final CubeDimension cubeDimension) {
     EObject eObj = cubeDimension.eContainer();
     while ((!(eObj instanceof CubePackage))) {
-      EObject _eContainer = eObj.eContainer();
-      eObj = _eContainer;
+      eObj = eObj.eContainer();
     }
-    boolean _notEquals = (!Objects.equal(eObj, null));
-    if (_notEquals) {
+    if ((eObj != null)) {
       CubePackage cubePackage = ((CubePackage) eObj);
-      EList<CubeDimension> _dimensions = cubePackage.getDimensions();
-      String _name = cubeDimension.getName();
-      CubeDimension _findDuplicateDimensions = this.findDuplicateDimensions(_dimensions, _name);
-      boolean _notEquals_1 = (!Objects.equal(_findDuplicateDimensions, null));
-      if (_notEquals_1) {
-        String _name_1 = cubeDimension.getName();
-        String _concat = "Duplicate dimensionname \'".concat(_name_1);
-        String _concat_1 = _concat.concat("\'!");
-        this.error(_concat_1, CubeDSLPackage.Literals.CUBE_BASE__NAME);
+      CubeDimension _findDuplicateDimensions = this.findDuplicateDimensions(cubePackage.getDimensions(), cubeDimension.getName());
+      boolean _tripleNotEquals = (_findDuplicateDimensions != null);
+      if (_tripleNotEquals) {
+        this.error("Duplicate dimensionname \'".concat(cubeDimension.getName()).concat("\'!"), 
+          CubeDSLPackage.Literals.CUBE_BASE__NAME);
       }
     }
   }
@@ -112,21 +90,28 @@
   private CubeDimension findDuplicateDimensions(final EList<CubeDimension> dims, final String cubeDimensionName) {
     HashSet<String> tempSet = CollectionLiterals.<String>newHashSet();
     for (final CubeDimension dim : dims) {
-      boolean _and = false;
-      String _name = dim.getName();
-      boolean _add = tempSet.add(_name);
-      boolean _not = (!_add);
-      if (!_not) {
-        _and = false;
-      } else {
-        String _name_1 = dim.getName();
-        boolean _equals = _name_1.equals(cubeDimensionName);
-        _and = _equals;
-      }
-      if (_and) {
+      if (((!tempSet.add(dim.getName())) && dim.getName().equals(cubeDimensionName))) {
         return dim;
       }
     }
     return null;
   }
+  
+  @Check
+  public void checkCommercialLicensedDimension(final CubeDimension dimension) {
+    if (((this.delegate != null) && (!this.delegate.validateCommercial("cube", "net.osbee.xtext.cube")))) {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("Cube is needed and not yet licensed. License Cube at www.osbee.net");
+      this.info(_builder.toString(), dimension, null);
+    }
+  }
+  
+  @Check
+  public void checkCommercialLicensedCube(final CubeType cube) {
+    if (((this.delegate != null) && (!this.delegate.validateCommercial("cube", "net.osbee.xtext.cube")))) {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("Cube is needed and not yet licensed. License Cube at www.osbee.net");
+      this.info(_builder.toString(), cube, null);
+    }
+  }
 }
diff --git a/pom.xml b/pom.xml
index e52d1fb..cb28d22 100644
--- a/pom.xml
+++ b/pom.xml
@@ -46,6 +46,7 @@
 	<modules>
 		<module>org.eclipse.osbp.xtext.cubedsl</module>
 		<module>org.eclipse.osbp.xtext.cubedsl.tests</module>
+		<module>org.eclipse.osbp.xtext.cubedsl.ide</module>
 		<module>org.eclipse.osbp.xtext.cubedsl.ui</module>
 		<module>org.eclipse.osbp.xtext.cubedsl.feature</module>
 	</modules>
@@ -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>