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..1537c0a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,38 @@
+**/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 5747b73..0ab4282 100644
--- a/jenkins.build.config.xml
+++ b/jenkins.build.config.xml
@@ -21,7 +21,6 @@
                 <jenkins.build.dependency>org.eclipse.osbp.runtime</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.runtime.web</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.ui.api</jenkins.build.dependency>
-                <jenkins.build.dependency>org.eclipse.osbp.utils</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.utils.ui</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.addons</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.authorization</jenkins.build.dependency>
@@ -31,5 +30,6 @@
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.datamart.common</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.functionlibrary</jenkins.build.dependency>
                 <jenkins.build.dependency>org.eclipse.osbp.xtext.i18n</jenkins.build.dependency>
+                <jenkins.build.dependency>org.eclipse.osbp.xtext.oxtype</jenkins.build.dependency>
         </jenkins.build.dependencies>
 </jenkins>
diff --git a/org.eclipse.osbp.xtext.chart.feature/.gitignore b/org.eclipse.osbp.xtext.chart.feature/.gitignore
new file mode 100644
index 0000000..b83d222
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.feature/.gitignore
@@ -0,0 +1 @@
+/target/
diff --git a/org.eclipse.osbp.xtext.chart.feature/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.chart.feature/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.feature/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.chart.feature/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.feature/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.chart.feature/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.feature/feature.xml b/org.eclipse.osbp.xtext.chart.feature/feature.xml
index 8663537..611c2b5 100644
--- a/org.eclipse.osbp.xtext.chart.feature/feature.xml
+++ b/org.eclipse.osbp.xtext.chart.feature/feature.xml
@@ -14,7 +14,8 @@
         id="org.eclipse.osbp.xtext.chart.feature"
         label="%featureName"
         version="0.9.0.qualifier"
-        provider-name="%providerName">
+        provider-name="%providerName"
+		plugin="org.ecclipse.osbp.xtexxt.chart">
         
     <description>
         %description
@@ -43,6 +44,13 @@
         unpack="false"/>
         
     <plugin
+        id="org.eclipse.osbp.xtext.chart.ide"
+        download-size="0"
+        install-size="0"
+        version="0.0.0"
+        unpack="false"/>
+        
+    <plugin
         id="org.eclipse.osbp.xtext.chart.ui"
         download-size="0"
         install-size="0"
diff --git a/org.eclipse.osbp.xtext.chart.feature/pom.xml b/org.eclipse.osbp.xtext.chart.feature/pom.xml
index 5230d9a..7b7e6a2 100644
--- a/org.eclipse.osbp.xtext.chart.feature/pom.xml
+++ b/org.eclipse.osbp.xtext.chart.feature/pom.xml
@@ -84,6 +84,13 @@
             <artifactId>org.eclipse.osbp.xtext.chart.ui</artifactId>
             <version>0.9.0-SNAPSHOT</version>
         </dependency>
+		<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>
diff --git a/org.eclipse.osbp.xtext.chart.ide/.classpath b/org.eclipse.osbp.xtext.chart.ide/.classpath
new file mode 100644
index 0000000..5903347
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.ide/.project b/org.eclipse.osbp.xtext.chart.ide/.project
new file mode 100644
index 0000000..cf1083a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ide/.project
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.osbp.xtext.chart.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.chart.ide/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.chart.ide/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.ide/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.xtext.chart.ide/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.ide/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.chart.ide/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.ide/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.chart.ide/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..5da8aa3
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.ide/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.chart.ide/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..4051501
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ide/META-INF/MANIFEST.MF
@@ -0,0 +1,18 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: org.eclipse.osbp.xtext.chart.ide
+Bundle-Vendor: Eclipse OSBP
+Bundle-Version: 0.9.0.qualifier
+Bundle-SymbolicName: org.eclipse.osbp.xtext.chart.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.chart;bundle-version="[0.9.0,0.10.0)"
+Export-Package: org.eclipse.osbp.xtext.chart.ide,
+ org.eclipse.osbp.xtext.chart.ide.contentassist.antlr,
+ org.eclipse.osbp.xtext.chart.ide.contentassist.antlr.internal
+
diff --git a/org.eclipse.osbp.xtext.chart.ide/build.properties b/org.eclipse.osbp.xtext.chart.ide/build.properties
new file mode 100644
index 0000000..6ef1a59
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.ide/pom.xml b/org.eclipse.osbp.xtext.chart.ide/pom.xml
new file mode 100644
index 0000000..3091ae1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart</groupId>
+        <artifactId>org.eclipse.osbp.xtext.chart.aggregator</artifactId>
+        <version>0.9.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+    <artifactId>org.eclipse.osbp.xtext.chart.ide</artifactId>
+    <packaging>eclipse-plugin</packaging>
+
+</project>
diff --git a/org.eclipse.osbp.xtext.chart.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup b/org.eclipse.osbp.xtext.chart.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup
new file mode 100644
index 0000000..bb7d36e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ide/src-gen/META-INF/services/org.eclipse.xtext.ISetup
@@ -0,0 +1 @@
+org.eclipse.osbp.xtext.chart.ide.ChartDSLIdeSetup
diff --git a/org.eclipse.osbp.xtext.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/AbstractChartDSLIdeModule.java b/org.eclipse.osbp.xtext.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/AbstractChartDSLIdeModule.java
new file mode 100644
index 0000000..1915261
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/AbstractChartDSLIdeModule.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.chart.ide;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
+import org.eclipse.osbp.xtext.chart.ide.contentassist.antlr.ChartDSLParser;
+import org.eclipse.osbp.xtext.chart.ide.contentassist.antlr.internal.InternalChartDSLLexer;
+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 ChartDSLIdeModule}.
+ */
+@SuppressWarnings("all")
+public abstract class AbstractChartDSLIdeModule 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(InternalChartDSLLexer.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends IContentAssistParser> bindIContentAssistParser() {
+		return ChartDSLParser.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.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/contentassist/antlr/ChartDSLParser.java b/org.eclipse.osbp.xtext.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/contentassist/antlr/ChartDSLParser.java
new file mode 100644
index 0000000..860213f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/contentassist/antlr/ChartDSLParser.java
@@ -0,0 +1,561 @@
+/**
+ *                                                                            
+ *  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.chart.ide.contentassist.antlr;
+
+import com.google.inject.Inject;
+import java.util.HashMap;
+import java.util.Map;
+import org.eclipse.osbp.xtext.chart.ide.contentassist.antlr.internal.InternalChartDSLParser;
+import org.eclipse.osbp.xtext.chart.services.ChartDSLGrammarAccess;
+import org.eclipse.xtext.AbstractElement;
+import org.eclipse.xtext.ide.editor.contentassist.antlr.AbstractContentAssistParser;
+
+public class ChartDSLParser extends AbstractContentAssistParser {
+
+	@Inject
+	private ChartDSLGrammarAccess grammarAccess;
+
+	private Map<AbstractElement, String> nameMappings;
+
+	@Override
+	protected InternalChartDSLParser createParser() {
+		InternalChartDSLParser result = new InternalChartDSLParser(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.getChartOptionAccess().getAlternatives(), "rule__ChartOption__Alternatives");
+					put(grammarAccess.getChartBubbleAccess().getAlternatives_2_1(), "rule__ChartBubble__Alternatives_2_1");
+					put(grammarAccess.getChartTreeAccess().getAlternatives_2(), "rule__ChartTree__Alternatives_2");
+					put(grammarAccess.getChartElementAccess().getAlternatives(), "rule__ChartElement__Alternatives");
+					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.getLegendPlacementEnumAccess().getAlternatives(), "rule__LegendPlacementEnum__Alternatives");
+					put(grammarAccess.getToggleTypeEnumAccess().getAlternatives(), "rule__ToggleTypeEnum__Alternatives");
+					put(grammarAccess.getTooltipLocationEnumAccess().getAlternatives(), "rule__TooltipLocationEnum__Alternatives");
+					put(grammarAccess.getRenderTypeEnumAccess().getAlternatives(), "rule__RenderTypeEnum__Alternatives");
+					put(grammarAccess.getChartModelAccess().getGroup(), "rule__ChartModel__Group__0");
+					put(grammarAccess.getChartPackageAccess().getGroup(), "rule__ChartPackage__Group__0");
+					put(grammarAccess.getChartPackageAccess().getGroup_3(), "rule__ChartPackage__Group_3__0");
+					put(grammarAccess.getChartAccess().getGroup(), "rule__Chart__Group__0");
+					put(grammarAccess.getChartAccess().getGroup_3(), "rule__Chart__Group_3__0");
+					put(grammarAccess.getChartAccess().getGroup_6_0(), "rule__Chart__Group_6_0__0");
+					put(grammarAccess.getChartAccess().getGroup_7(), "rule__Chart__Group_7__0");
+					put(grammarAccess.getChartBarAccess().getGroup(), "rule__ChartBar__Group__0");
+					put(grammarAccess.getChartLineAccess().getGroup(), "rule__ChartLine__Group__0");
+					put(grammarAccess.getChartLineAccess().getGroup_2_3(), "rule__ChartLine__Group_2_3__0");
+					put(grammarAccess.getChartPieAccess().getGroup(), "rule__ChartPie__Group__0");
+					put(grammarAccess.getChartDonutAccess().getGroup(), "rule__ChartDonut__Group__0");
+					put(grammarAccess.getChartBubbleAccess().getGroup(), "rule__ChartBubble__Group__0");
+					put(grammarAccess.getChartBubbleAccess().getGroup_2_0(), "rule__ChartBubble__Group_2_0__0");
+					put(grammarAccess.getChartGaugeAccess().getGroup(), "rule__ChartGauge__Group__0");
+					put(grammarAccess.getChartGaugeAccess().getGroup_2_0(), "rule__ChartGauge__Group_2_0__0");
+					put(grammarAccess.getChartGaugeAccess().getGroup_2_1(), "rule__ChartGauge__Group_2_1__0");
+					put(grammarAccess.getChartGaugeAccess().getGroup_2_2(), "rule__ChartGauge__Group_2_2__0");
+					put(grammarAccess.getChartTreeAccess().getGroup(), "rule__ChartTree__Group__0");
+					put(grammarAccess.getChartNumberIntervalAccess().getGroup(), "rule__ChartNumberInterval__Group__0");
+					put(grammarAccess.getChartDatamartAccess().getGroup(), "rule__ChartDatamart__Group__0");
+					put(grammarAccess.getChartLegendAccess().getGroup(), "rule__ChartLegend__Group__0");
+					put(grammarAccess.getChartLegendAccess().getGroup_2(), "rule__ChartLegend__Group_2__0");
+					put(grammarAccess.getChartHighlighterAccess().getGroup(), "rule__ChartHighlighter__Group__0");
+					put(grammarAccess.getChartHighlighterAccess().getGroup_2(), "rule__ChartHighlighter__Group_2__0");
+					put(grammarAccess.getChartAxisAccess().getGroup(), "rule__ChartAxis__Group__0");
+					put(grammarAccess.getChartAxisAccess().getGroup_5(), "rule__ChartAxis__Group_5__0");
+					put(grammarAccess.getChartSegmentColorAccess().getGroup(), "rule__ChartSegmentColor__Group__0");
+					put(grammarAccess.getSignedNumberAccess().getGroup(), "rule__SignedNumber__Group__0");
+					put(grammarAccess.getXImportDeclarationAccess().getGroup(), "rule__XImportDeclaration__Group__0");
+					put(grammarAccess.getXImportDeclarationAccess().getGroup_2_0(), "rule__XImportDeclaration__Group_2_0__0");
+					put(grammarAccess.getXImportDeclarationAccess().getGroup_2_3(), "rule__XImportDeclaration__Group_2_3__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup(), "rule__XAnnotation__Group__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3(), "rule__XAnnotation__Group_3__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0(), "rule__XAnnotation__Group_3_1_0__0");
+					put(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1(), "rule__XAnnotation__Group_3_1_0_1__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup(), "rule__XAnnotationElementValuePair__Group__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0(), "rule__XAnnotationElementValuePair__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0(), "rule__XAnnotationElementValuePair__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0(), "rule__XAnnotationElementValueOrCommaList__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0(), "rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1(), "rule__XAnnotationElementValueOrCommaList__Group_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1(), "rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0(), "rule__XAnnotationElementValue__Group_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0(), "rule__XAnnotationElementValue__Group_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0(), "rule__XAnnotationElementValue__Group_0_0_0__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1(), "rule__XAnnotationElementValue__Group_0_1__0");
+					put(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1(), "rule__XAnnotationElementValue__Group_0_1_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_0(), "rule__XAssignment__Group_0__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1(), "rule__XAssignment__Group_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1(), "rule__XAssignment__Group_1_1__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0(), "rule__XAssignment__Group_1_1_0__0");
+					put(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0(), "rule__XAssignment__Group_1_1_0_0__0");
+					put(grammarAccess.getOpMultiAssignAccess().getGroup_5(), "rule__OpMultiAssign__Group_5__0");
+					put(grammarAccess.getOpMultiAssignAccess().getGroup_6(), "rule__OpMultiAssign__Group_6__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup(), "rule__XOrExpression__Group__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1(), "rule__XOrExpression__Group_1__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0(), "rule__XOrExpression__Group_1_0__0");
+					put(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0(), "rule__XOrExpression__Group_1_0_0__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup(), "rule__XAndExpression__Group__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1(), "rule__XAndExpression__Group_1__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0(), "rule__XAndExpression__Group_1_0__0");
+					put(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0(), "rule__XAndExpression__Group_1_0_0__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup(), "rule__XEqualityExpression__Group__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1(), "rule__XEqualityExpression__Group_1__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0(), "rule__XEqualityExpression__Group_1_0__0");
+					put(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0(), "rule__XEqualityExpression__Group_1_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup(), "rule__XRelationalExpression__Group__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0(), "rule__XRelationalExpression__Group_1_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0(), "rule__XRelationalExpression__Group_1_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0(), "rule__XRelationalExpression__Group_1_0_0_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1(), "rule__XRelationalExpression__Group_1_1__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0(), "rule__XRelationalExpression__Group_1_1_0__0");
+					put(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0(), "rule__XRelationalExpression__Group_1_1_0_0__0");
+					put(grammarAccess.getOpCompareAccess().getGroup_1(), "rule__OpCompare__Group_1__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup(), "rule__XOtherOperatorExpression__Group__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1(), "rule__XOtherOperatorExpression__Group_1__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0(), "rule__XOtherOperatorExpression__Group_1_0__0");
+					put(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0(), "rule__XOtherOperatorExpression__Group_1_0_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_2(), "rule__OpOther__Group_2__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5(), "rule__OpOther__Group_5__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0(), "rule__OpOther__Group_5_1_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0(), "rule__OpOther__Group_5_1_0_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6(), "rule__OpOther__Group_6__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0(), "rule__OpOther__Group_6_1_0__0");
+					put(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0(), "rule__OpOther__Group_6_1_0_0__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup(), "rule__XAdditiveExpression__Group__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1(), "rule__XAdditiveExpression__Group_1__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0(), "rule__XAdditiveExpression__Group_1_0__0");
+					put(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0(), "rule__XAdditiveExpression__Group_1_0_0__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup(), "rule__XMultiplicativeExpression__Group__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1(), "rule__XMultiplicativeExpression__Group_1__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0(), "rule__XMultiplicativeExpression__Group_1_0__0");
+					put(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0(), "rule__XMultiplicativeExpression__Group_1_0_0__0");
+					put(grammarAccess.getXUnaryOperationAccess().getGroup_0(), "rule__XUnaryOperation__Group_0__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup(), "rule__XCastedExpression__Group__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1(), "rule__XCastedExpression__Group_1__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0(), "rule__XCastedExpression__Group_1_0__0");
+					put(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0(), "rule__XCastedExpression__Group_1_0_0__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup(), "rule__XPostfixOperation__Group__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup_1(), "rule__XPostfixOperation__Group_1__0");
+					put(grammarAccess.getXPostfixOperationAccess().getGroup_1_0(), "rule__XPostfixOperation__Group_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup(), "rule__XMemberFeatureCall__Group__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0(), "rule__XMemberFeatureCall__Group_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0(), "rule__XMemberFeatureCall__Group_1_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0(), "rule__XMemberFeatureCall__Group_1_0_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1(), "rule__XMemberFeatureCall__Group_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0(), "rule__XMemberFeatureCall__Group_1_1_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0(), "rule__XMemberFeatureCall__Group_1_1_0_0__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2(), "rule__XMemberFeatureCall__Group_1_1_1_2__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3(), "rule__XMemberFeatureCall__Group_1_1_3__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1__0");
+					put(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1_1(), "rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup(), "rule__XSetLiteral__Group__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup_3(), "rule__XSetLiteral__Group_3__0");
+					put(grammarAccess.getXSetLiteralAccess().getGroup_3_1(), "rule__XSetLiteral__Group_3_1__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup(), "rule__XListLiteral__Group__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup_3(), "rule__XListLiteral__Group_3__0");
+					put(grammarAccess.getXListLiteralAccess().getGroup_3_1(), "rule__XListLiteral__Group_3_1__0");
+					put(grammarAccess.getXClosureAccess().getGroup(), "rule__XClosure__Group__0");
+					put(grammarAccess.getXClosureAccess().getGroup_0(), "rule__XClosure__Group_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_0_0(), "rule__XClosure__Group_0_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1(), "rule__XClosure__Group_1__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0(), "rule__XClosure__Group_1_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0_0(), "rule__XClosure__Group_1_0_0__0");
+					put(grammarAccess.getXClosureAccess().getGroup_1_0_0_1(), "rule__XClosure__Group_1_0_0_1__0");
+					put(grammarAccess.getXExpressionInClosureAccess().getGroup(), "rule__XExpressionInClosure__Group__0");
+					put(grammarAccess.getXExpressionInClosureAccess().getGroup_1(), "rule__XExpressionInClosure__Group_1__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup(), "rule__XShortClosure__Group__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0(), "rule__XShortClosure__Group_0__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0(), "rule__XShortClosure__Group_0_0__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1(), "rule__XShortClosure__Group_0_0_1__0");
+					put(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1(), "rule__XShortClosure__Group_0_0_1_1__0");
+					put(grammarAccess.getXParenthesizedExpressionAccess().getGroup(), "rule__XParenthesizedExpression__Group__0");
+					put(grammarAccess.getXIfExpressionAccess().getGroup(), "rule__XIfExpression__Group__0");
+					put(grammarAccess.getXIfExpressionAccess().getGroup_6(), "rule__XIfExpression__Group_6__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup(), "rule__XSwitchExpression__Group__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0(), "rule__XSwitchExpression__Group_2_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0(), "rule__XSwitchExpression__Group_2_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0(), "rule__XSwitchExpression__Group_2_0_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1(), "rule__XSwitchExpression__Group_2_1__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0(), "rule__XSwitchExpression__Group_2_1_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0(), "rule__XSwitchExpression__Group_2_1_0_0__0");
+					put(grammarAccess.getXSwitchExpressionAccess().getGroup_5(), "rule__XSwitchExpression__Group_5__0");
+					put(grammarAccess.getXCasePartAccess().getGroup(), "rule__XCasePart__Group__0");
+					put(grammarAccess.getXCasePartAccess().getGroup_2(), "rule__XCasePart__Group_2__0");
+					put(grammarAccess.getXCasePartAccess().getGroup_3_0(), "rule__XCasePart__Group_3_0__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup(), "rule__XForLoopExpression__Group__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0(), "rule__XForLoopExpression__Group_0__0");
+					put(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0(), "rule__XForLoopExpression__Group_0_0__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup(), "rule__XBasicForLoopExpression__Group__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3(), "rule__XBasicForLoopExpression__Group_3__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1(), "rule__XBasicForLoopExpression__Group_3_1__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7(), "rule__XBasicForLoopExpression__Group_7__0");
+					put(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1(), "rule__XBasicForLoopExpression__Group_7_1__0");
+					put(grammarAccess.getXWhileExpressionAccess().getGroup(), "rule__XWhileExpression__Group__0");
+					put(grammarAccess.getXDoWhileExpressionAccess().getGroup(), "rule__XDoWhileExpression__Group__0");
+					put(grammarAccess.getXBlockExpressionAccess().getGroup(), "rule__XBlockExpression__Group__0");
+					put(grammarAccess.getXBlockExpressionAccess().getGroup_2(), "rule__XBlockExpression__Group_2__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup(), "rule__XVariableDeclaration__Group__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0(), "rule__XVariableDeclaration__Group_2_0__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0(), "rule__XVariableDeclaration__Group_2_0_0__0");
+					put(grammarAccess.getXVariableDeclarationAccess().getGroup_3(), "rule__XVariableDeclaration__Group_3__0");
+					put(grammarAccess.getJvmFormalParameterAccess().getGroup(), "rule__JvmFormalParameter__Group__0");
+					put(grammarAccess.getFullJvmFormalParameterAccess().getGroup(), "rule__FullJvmFormalParameter__Group__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup(), "rule__XFeatureCall__Group__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_1(), "rule__XFeatureCall__Group_1__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_1_2(), "rule__XFeatureCall__Group_1_2__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3(), "rule__XFeatureCall__Group_3__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1(), "rule__XFeatureCall__Group_3_1_1__0");
+					put(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1(), "rule__XFeatureCall__Group_3_1_1_1__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup(), "rule__XConstructorCall__Group__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_3(), "rule__XConstructorCall__Group_3__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_3_2(), "rule__XConstructorCall__Group_3_2__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4(), "rule__XConstructorCall__Group_4__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1(), "rule__XConstructorCall__Group_4_1_1__0");
+					put(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1(), "rule__XConstructorCall__Group_4_1_1_1__0");
+					put(grammarAccess.getXBooleanLiteralAccess().getGroup(), "rule__XBooleanLiteral__Group__0");
+					put(grammarAccess.getXNullLiteralAccess().getGroup(), "rule__XNullLiteral__Group__0");
+					put(grammarAccess.getXNumberLiteralAccess().getGroup(), "rule__XNumberLiteral__Group__0");
+					put(grammarAccess.getXStringLiteralAccess().getGroup(), "rule__XStringLiteral__Group__0");
+					put(grammarAccess.getXTypeLiteralAccess().getGroup(), "rule__XTypeLiteral__Group__0");
+					put(grammarAccess.getXThrowExpressionAccess().getGroup(), "rule__XThrowExpression__Group__0");
+					put(grammarAccess.getXReturnExpressionAccess().getGroup(), "rule__XReturnExpression__Group__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup(), "rule__XTryCatchFinallyExpression__Group__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0(), "rule__XTryCatchFinallyExpression__Group_3_0__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1(), "rule__XTryCatchFinallyExpression__Group_3_0_1__0");
+					put(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1(), "rule__XTryCatchFinallyExpression__Group_3_1__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup(), "rule__XSynchronizedExpression__Group__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0(), "rule__XSynchronizedExpression__Group_0__0");
+					put(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0(), "rule__XSynchronizedExpression__Group_0_0__0");
+					put(grammarAccess.getXCatchClauseAccess().getGroup(), "rule__XCatchClause__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup(), "rule__QualifiedName__Group__0");
+					put(grammarAccess.getQualifiedNameAccess().getGroup_1(), "rule__QualifiedName__Group_1__0");
+					put(grammarAccess.getNumberAccess().getGroup_1(), "rule__Number__Group_1__0");
+					put(grammarAccess.getNumberAccess().getGroup_1_1(), "rule__Number__Group_1_1__0");
+					put(grammarAccess.getStaticQualifierAccess().getGroup(), "rule__StaticQualifier__Group__0");
+					put(grammarAccess.getJvmTypeReferenceAccess().getGroup_0(), "rule__JvmTypeReference__Group_0__0");
+					put(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1(), "rule__JvmTypeReference__Group_0_1__0");
+					put(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1_0(), "rule__JvmTypeReference__Group_0_1_0__0");
+					put(grammarAccess.getArrayBracketsAccess().getGroup(), "rule__ArrayBrackets__Group__0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getGroup(), "rule__XFunctionTypeRef__Group__0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getGroup_0(), "rule__XFunctionTypeRef__Group_0__0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1(), "rule__XFunctionTypeRef__Group_0_1__0");
+					put(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1_1(), "rule__XFunctionTypeRef__Group_0_1_1__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup(), "rule__JvmParameterizedTypeReference__Group__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1(), "rule__JvmParameterizedTypeReference__Group_1__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_2(), "rule__JvmParameterizedTypeReference__Group_1_2__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4(), "rule__JvmParameterizedTypeReference__Group_1_4__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0(), "rule__JvmParameterizedTypeReference__Group_1_4_0__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0_0(), "rule__JvmParameterizedTypeReference__Group_1_4_0_0__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2(), "rule__JvmParameterizedTypeReference__Group_1_4_2__0");
+					put(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2_2(), "rule__JvmParameterizedTypeReference__Group_1_4_2_2__0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup(), "rule__JvmWildcardTypeReference__Group__0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0(), "rule__JvmWildcardTypeReference__Group_2_0__0");
+					put(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1(), "rule__JvmWildcardTypeReference__Group_2_1__0");
+					put(grammarAccess.getJvmUpperBoundAccess().getGroup(), "rule__JvmUpperBound__Group__0");
+					put(grammarAccess.getJvmUpperBoundAndedAccess().getGroup(), "rule__JvmUpperBoundAnded__Group__0");
+					put(grammarAccess.getJvmLowerBoundAccess().getGroup(), "rule__JvmLowerBound__Group__0");
+					put(grammarAccess.getJvmLowerBoundAndedAccess().getGroup(), "rule__JvmLowerBoundAnded__Group__0");
+					put(grammarAccess.getJvmTypeParameterAccess().getGroup(), "rule__JvmTypeParameter__Group__0");
+					put(grammarAccess.getJvmTypeParameterAccess().getGroup_1(), "rule__JvmTypeParameter__Group_1__0");
+					put(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup(), "rule__QualifiedNameWithWildcard__Group__0");
+					put(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup(), "rule__QualifiedNameInStaticImport__Group__0");
+					put(grammarAccess.getChartModelAccess().getImportSectionAssignment_0(), "rule__ChartModel__ImportSectionAssignment_0");
+					put(grammarAccess.getChartModelAccess().getPackagesAssignment_1(), "rule__ChartModel__PackagesAssignment_1");
+					put(grammarAccess.getChartPackageAccess().getNameAssignment_2(), "rule__ChartPackage__NameAssignment_2");
+					put(grammarAccess.getChartPackageAccess().getChartsAssignment_3_1(), "rule__ChartPackage__ChartsAssignment_3_1");
+					put(grammarAccess.getChartAccess().getNameAssignment_2(), "rule__Chart__NameAssignment_2");
+					put(grammarAccess.getChartAccess().getDescriptionAssignment_3_0(), "rule__Chart__DescriptionAssignment_3_0");
+					put(grammarAccess.getChartAccess().getDescriptionValueAssignment_3_1(), "rule__Chart__DescriptionValueAssignment_3_1");
+					put(grammarAccess.getChartAccess().getCharttypeAssignment_5(), "rule__Chart__CharttypeAssignment_5");
+					put(grammarAccess.getChartAccess().getPollingAssignment_6_0_0(), "rule__Chart__PollingAssignment_6_0_0");
+					put(grammarAccess.getChartAccess().getPollingTimeAssignment_6_0_1(), "rule__Chart__PollingTimeAssignment_6_0_1");
+					put(grammarAccess.getChartAccess().getSelectByIdAssignment_6_1(), "rule__Chart__SelectByIdAssignment_6_1");
+					put(grammarAccess.getChartAccess().getSourceAssignment_7_1(), "rule__Chart__SourceAssignment_7_1");
+					put(grammarAccess.getChartBarAccess().getShadowAssignment_2_0(), "rule__ChartBar__ShadowAssignment_2_0");
+					put(grammarAccess.getChartBarAccess().getAnimatedAssignment_2_1(), "rule__ChartBar__AnimatedAssignment_2_1");
+					put(grammarAccess.getChartBarAccess().getSwappedAssignment_2_2(), "rule__ChartBar__SwappedAssignment_2_2");
+					put(grammarAccess.getChartBarAccess().getStackedAssignment_2_3(), "rule__ChartBar__StackedAssignment_2_3");
+					put(grammarAccess.getChartLineAccess().getAnimatedAssignment_2_0(), "rule__ChartLine__AnimatedAssignment_2_0");
+					put(grammarAccess.getChartLineAccess().getShowMarkerAssignment_2_1(), "rule__ChartLine__ShowMarkerAssignment_2_1");
+					put(grammarAccess.getChartLineAccess().getTrendLineAssignment_2_2(), "rule__ChartLine__TrendLineAssignment_2_2");
+					put(grammarAccess.getChartLineAccess().getCursorAssignment_2_3_0(), "rule__ChartLine__CursorAssignment_2_3_0");
+					put(grammarAccess.getChartLineAccess().getZoomAssignment_2_3_1(), "rule__ChartLine__ZoomAssignment_2_3_1");
+					put(grammarAccess.getChartLineAccess().getTooltipAssignment_2_3_2(), "rule__ChartLine__TooltipAssignment_2_3_2");
+					put(grammarAccess.getChartLineAccess().getFillToZeroAssignment_2_4(), "rule__ChartLine__FillToZeroAssignment_2_4");
+					put(grammarAccess.getChartLineAccess().getFillAreaAssignment_2_5(), "rule__ChartLine__FillAreaAssignment_2_5");
+					put(grammarAccess.getChartPieAccess().getEmptyAssignment_2(), "rule__ChartPie__EmptyAssignment_2");
+					put(grammarAccess.getChartBubbleAccess().getMultiplierAssignment_2_0_0(), "rule__ChartBubble__MultiplierAssignment_2_0_0");
+					put(grammarAccess.getChartBubbleAccess().getMultiplierValueAssignment_2_0_1(), "rule__ChartBubble__MultiplierValueAssignment_2_0_1");
+					put(grammarAccess.getChartBubbleAccess().getGradientAssignment_2_1_0(), "rule__ChartBubble__GradientAssignment_2_1_0");
+					put(grammarAccess.getChartBubbleAccess().getTransparentAssignment_2_1_1(), "rule__ChartBubble__TransparentAssignment_2_1_1");
+					put(grammarAccess.getChartGaugeAccess().getLabeledAssignment_2_0_0(), "rule__ChartGauge__LabeledAssignment_2_0_0");
+					put(grammarAccess.getChartGaugeAccess().getLabelValueAssignment_2_0_1(), "rule__ChartGauge__LabelValueAssignment_2_0_1");
+					put(grammarAccess.getChartGaugeAccess().getHasTicksAssignment_2_1_0(), "rule__ChartGauge__HasTicksAssignment_2_1_0");
+					put(grammarAccess.getChartGaugeAccess().getMinValueAssignment_2_1_2(), "rule__ChartGauge__MinValueAssignment_2_1_2");
+					put(grammarAccess.getChartGaugeAccess().getMaxValueAssignment_2_1_4(), "rule__ChartGauge__MaxValueAssignment_2_1_4");
+					put(grammarAccess.getChartGaugeAccess().getHasIntervalsAssignment_2_2_0(), "rule__ChartGauge__HasIntervalsAssignment_2_2_0");
+					put(grammarAccess.getChartGaugeAccess().getIntervalsAssignment_2_2_2(), "rule__ChartGauge__IntervalsAssignment_2_2_2");
+					put(grammarAccess.getChartTreeAccess().getMapAssignment_2_0(), "rule__ChartTree__MapAssignment_2_0");
+					put(grammarAccess.getChartTreeAccess().getCollapsibleAssignment_2_1(), "rule__ChartTree__CollapsibleAssignment_2_1");
+					put(grammarAccess.getChartNumberIntervalAccess().getNumberIntervalValueAssignment_2(), "rule__ChartNumberInterval__NumberIntervalValueAssignment_2");
+					put(grammarAccess.getChartNumberIntervalAccess().getNumberRangeAssignment_3(), "rule__ChartNumberInterval__NumberRangeAssignment_3");
+					put(grammarAccess.getChartDatamartAccess().getDatamartRefAssignment_1(), "rule__ChartDatamart__DatamartRefAssignment_1");
+					put(grammarAccess.getChartDatamartAccess().getElementsAssignment_3(), "rule__ChartDatamart__ElementsAssignment_3");
+					put(grammarAccess.getChartLegendAccess().getPlacementAssignment_1(), "rule__ChartLegend__PlacementAssignment_1");
+					put(grammarAccess.getChartLegendAccess().getToggleAssignment_2_0(), "rule__ChartLegend__ToggleAssignment_2_0");
+					put(grammarAccess.getChartLegendAccess().getReplotAssignment_2_1(), "rule__ChartLegend__ReplotAssignment_2_1");
+					put(grammarAccess.getChartLegendAccess().getToggleTypeAssignment_2_2(), "rule__ChartLegend__ToggleTypeAssignment_2_2");
+					put(grammarAccess.getChartHighlighterAccess().getLocationAssignment_1(), "rule__ChartHighlighter__LocationAssignment_1");
+					put(grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAssignment_2_0(), "rule__ChartHighlighter__TooltipAlwaysAssignment_2_0");
+					put(grammarAccess.getChartHighlighterAccess().getInsideChartAssignment_2_1(), "rule__ChartHighlighter__InsideChartAssignment_2_1");
+					put(grammarAccess.getChartAxisAccess().getAxisAssignment_1(), "rule__ChartAxis__AxisAssignment_1");
+					put(grammarAccess.getChartAxisAccess().getRenderTypeAssignment_3(), "rule__ChartAxis__RenderTypeAssignment_3");
+					put(grammarAccess.getChartAxisAccess().getShortLabelAssignment_4(), "rule__ChartAxis__ShortLabelAssignment_4");
+					put(grammarAccess.getChartAxisAccess().getAngleAssignment_5_1(), "rule__ChartAxis__AngleAssignment_5_1");
+					put(grammarAccess.getChartSegmentColorAccess().getRgbAssignment_1(), "rule__ChartSegmentColor__RgbAssignment_1");
+					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");
+					put(grammarAccess.getChartAccess().getUnorderedGroup_6(), "rule__Chart__UnorderedGroup_6");
+					put(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), "rule__ChartBar__UnorderedGroup_2");
+					put(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), "rule__ChartLine__UnorderedGroup_2");
+					put(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), "rule__ChartBubble__UnorderedGroup_2");
+					put(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), "rule__ChartGauge__UnorderedGroup_2");
+				}
+			};
+		}
+		return nameMappings.get(element);
+	}
+			
+	@Override
+	protected String[] getInitialHiddenTokens() {
+		return new String[] { "RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT" };
+	}
+
+	public ChartDSLGrammarAccess getGrammarAccess() {
+		return this.grammarAccess;
+	}
+
+	public void setGrammarAccess(ChartDSLGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+}
diff --git a/org.eclipse.osbp.xtext.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/contentassist/antlr/PartialChartDSLContentAssistParser.java b/org.eclipse.osbp.xtext.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/contentassist/antlr/PartialChartDSLContentAssistParser.java
new file mode 100644
index 0000000..a51483a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/contentassist/antlr/PartialChartDSLContentAssistParser.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.chart.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 PartialChartDSLContentAssistParser extends ChartDSLParser 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.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/contentassist/antlr/internal/InternalChartDSL.g b/org.eclipse.osbp.xtext.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/contentassist/antlr/internal/InternalChartDSL.g
new file mode 100644
index 0000000..2af5390
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/contentassist/antlr/internal/InternalChartDSL.g
@@ -0,0 +1,23584 @@
+/**
+ *                                                                            
+ *  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 InternalChartDSL;
+
+options {
+	superClass=AbstractInternalContentAssistParser;
+	backtrack=true;
+}
+
+@lexer::header {
+package org.eclipse.osbp.xtext.chart.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.chart.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.chart.services.ChartDSLGrammarAccess;
+
+}
+@parser::members {
+	private ChartDSLGrammarAccess grammarAccess;
+
+	public void setGrammarAccess(ChartDSLGrammarAccess grammarAccess) {
+		this.grammarAccess = grammarAccess;
+	}
+
+	@Override
+	protected Grammar getGrammar() {
+		return grammarAccess.getGrammar();
+	}
+
+	@Override
+	protected String getValueForTokenName(String tokenName) {
+		return tokenName;
+	}
+}
+
+// Entry rule entryRuleChartModel
+entryRuleChartModel
+:
+{ before(grammarAccess.getChartModelRule()); }
+	 ruleChartModel
+{ after(grammarAccess.getChartModelRule()); } 
+	 EOF 
+;
+
+// Rule ChartModel
+ruleChartModel 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getChartModelAccess().getGroup()); }
+		(rule__ChartModel__Group__0)
+		{ after(grammarAccess.getChartModelAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleChartPackage
+entryRuleChartPackage
+:
+{ before(grammarAccess.getChartPackageRule()); }
+	 ruleChartPackage
+{ after(grammarAccess.getChartPackageRule()); } 
+	 EOF 
+;
+
+// Rule ChartPackage
+ruleChartPackage 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getChartPackageAccess().getGroup()); }
+		(rule__ChartPackage__Group__0)
+		{ after(grammarAccess.getChartPackageAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleChart
+entryRuleChart
+:
+{ before(grammarAccess.getChartRule()); }
+	 ruleChart
+{ after(grammarAccess.getChartRule()); } 
+	 EOF 
+;
+
+// Rule Chart
+ruleChart 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getChartAccess().getGroup()); }
+		(rule__Chart__Group__0)
+		{ after(grammarAccess.getChartAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleChartOption
+entryRuleChartOption
+:
+{ before(grammarAccess.getChartOptionRule()); }
+	 ruleChartOption
+{ after(grammarAccess.getChartOptionRule()); } 
+	 EOF 
+;
+
+// Rule ChartOption
+ruleChartOption 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getChartOptionAccess().getAlternatives()); }
+		(rule__ChartOption__Alternatives)
+		{ after(grammarAccess.getChartOptionAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleChartBar
+entryRuleChartBar
+:
+{ before(grammarAccess.getChartBarRule()); }
+	 ruleChartBar
+{ after(grammarAccess.getChartBarRule()); } 
+	 EOF 
+;
+
+// Rule ChartBar
+ruleChartBar 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getChartBarAccess().getGroup()); }
+		(rule__ChartBar__Group__0)
+		{ after(grammarAccess.getChartBarAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleChartLine
+entryRuleChartLine
+:
+{ before(grammarAccess.getChartLineRule()); }
+	 ruleChartLine
+{ after(grammarAccess.getChartLineRule()); } 
+	 EOF 
+;
+
+// Rule ChartLine
+ruleChartLine 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getChartLineAccess().getGroup()); }
+		(rule__ChartLine__Group__0)
+		{ after(grammarAccess.getChartLineAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleChartPie
+entryRuleChartPie
+:
+{ before(grammarAccess.getChartPieRule()); }
+	 ruleChartPie
+{ after(grammarAccess.getChartPieRule()); } 
+	 EOF 
+;
+
+// Rule ChartPie
+ruleChartPie 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getChartPieAccess().getGroup()); }
+		(rule__ChartPie__Group__0)
+		{ after(grammarAccess.getChartPieAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleChartDonut
+entryRuleChartDonut
+:
+{ before(grammarAccess.getChartDonutRule()); }
+	 ruleChartDonut
+{ after(grammarAccess.getChartDonutRule()); } 
+	 EOF 
+;
+
+// Rule ChartDonut
+ruleChartDonut 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getChartDonutAccess().getGroup()); }
+		(rule__ChartDonut__Group__0)
+		{ after(grammarAccess.getChartDonutAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleChartBubble
+entryRuleChartBubble
+:
+{ before(grammarAccess.getChartBubbleRule()); }
+	 ruleChartBubble
+{ after(grammarAccess.getChartBubbleRule()); } 
+	 EOF 
+;
+
+// Rule ChartBubble
+ruleChartBubble 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getChartBubbleAccess().getGroup()); }
+		(rule__ChartBubble__Group__0)
+		{ after(grammarAccess.getChartBubbleAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleChartGauge
+entryRuleChartGauge
+:
+{ before(grammarAccess.getChartGaugeRule()); }
+	 ruleChartGauge
+{ after(grammarAccess.getChartGaugeRule()); } 
+	 EOF 
+;
+
+// Rule ChartGauge
+ruleChartGauge 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getChartGaugeAccess().getGroup()); }
+		(rule__ChartGauge__Group__0)
+		{ after(grammarAccess.getChartGaugeAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleChartTree
+entryRuleChartTree
+:
+{ before(grammarAccess.getChartTreeRule()); }
+	 ruleChartTree
+{ after(grammarAccess.getChartTreeRule()); } 
+	 EOF 
+;
+
+// Rule ChartTree
+ruleChartTree 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getChartTreeAccess().getGroup()); }
+		(rule__ChartTree__Group__0)
+		{ after(grammarAccess.getChartTreeAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleChartInterval
+entryRuleChartInterval
+:
+{ before(grammarAccess.getChartIntervalRule()); }
+	 ruleChartInterval
+{ after(grammarAccess.getChartIntervalRule()); } 
+	 EOF 
+;
+
+// Rule ChartInterval
+ruleChartInterval 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getChartIntervalAccess().getChartNumberIntervalParserRuleCall()); }
+		ruleChartNumberInterval
+		{ after(grammarAccess.getChartIntervalAccess().getChartNumberIntervalParserRuleCall()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleChartNumberInterval
+entryRuleChartNumberInterval
+:
+{ before(grammarAccess.getChartNumberIntervalRule()); }
+	 ruleChartNumberInterval
+{ after(grammarAccess.getChartNumberIntervalRule()); } 
+	 EOF 
+;
+
+// Rule ChartNumberInterval
+ruleChartNumberInterval 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getChartNumberIntervalAccess().getGroup()); }
+		(rule__ChartNumberInterval__Group__0)
+		{ after(grammarAccess.getChartNumberIntervalAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleChartDatamart
+entryRuleChartDatamart
+:
+{ before(grammarAccess.getChartDatamartRule()); }
+	 ruleChartDatamart
+{ after(grammarAccess.getChartDatamartRule()); } 
+	 EOF 
+;
+
+// Rule ChartDatamart
+ruleChartDatamart 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getChartDatamartAccess().getGroup()); }
+		(rule__ChartDatamart__Group__0)
+		{ after(grammarAccess.getChartDatamartAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleChartElement
+entryRuleChartElement
+:
+{ before(grammarAccess.getChartElementRule()); }
+	 ruleChartElement
+{ after(grammarAccess.getChartElementRule()); } 
+	 EOF 
+;
+
+// Rule ChartElement
+ruleChartElement 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getChartElementAccess().getAlternatives()); }
+		(rule__ChartElement__Alternatives)
+		{ after(grammarAccess.getChartElementAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleChartLegend
+entryRuleChartLegend
+:
+{ before(grammarAccess.getChartLegendRule()); }
+	 ruleChartLegend
+{ after(grammarAccess.getChartLegendRule()); } 
+	 EOF 
+;
+
+// Rule ChartLegend
+ruleChartLegend 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getChartLegendAccess().getGroup()); }
+		(rule__ChartLegend__Group__0)
+		{ after(grammarAccess.getChartLegendAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleChartHighlighter
+entryRuleChartHighlighter
+:
+{ before(grammarAccess.getChartHighlighterRule()); }
+	 ruleChartHighlighter
+{ after(grammarAccess.getChartHighlighterRule()); } 
+	 EOF 
+;
+
+// Rule ChartHighlighter
+ruleChartHighlighter 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getChartHighlighterAccess().getGroup()); }
+		(rule__ChartHighlighter__Group__0)
+		{ after(grammarAccess.getChartHighlighterAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleChartAxis
+entryRuleChartAxis
+:
+{ before(grammarAccess.getChartAxisRule()); }
+	 ruleChartAxis
+{ after(grammarAccess.getChartAxisRule()); } 
+	 EOF 
+;
+
+// Rule ChartAxis
+ruleChartAxis 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getChartAxisAccess().getGroup()); }
+		(rule__ChartAxis__Group__0)
+		{ after(grammarAccess.getChartAxisAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleChartRangeElement
+entryRuleChartRangeElement
+:
+{ before(grammarAccess.getChartRangeElementRule()); }
+	 ruleChartRangeElement
+{ after(grammarAccess.getChartRangeElementRule()); } 
+	 EOF 
+;
+
+// Rule ChartRangeElement
+ruleChartRangeElement 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getChartRangeElementAccess().getChartSegmentColorParserRuleCall()); }
+		ruleChartSegmentColor
+		{ after(grammarAccess.getChartRangeElementAccess().getChartSegmentColorParserRuleCall()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleChartSegmentColor
+entryRuleChartSegmentColor
+:
+{ before(grammarAccess.getChartSegmentColorRule()); }
+	 ruleChartSegmentColor
+{ after(grammarAccess.getChartSegmentColorRule()); } 
+	 EOF 
+;
+
+// Rule ChartSegmentColor
+ruleChartSegmentColor 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getChartSegmentColorAccess().getGroup()); }
+		(rule__ChartSegmentColor__Group__0)
+		{ after(grammarAccess.getChartSegmentColorAccess().getGroup()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Entry rule entryRuleSignedNumber
+entryRuleSignedNumber
+:
+{ before(grammarAccess.getSignedNumberRule()); }
+	 ruleSignedNumber
+{ after(grammarAccess.getSignedNumberRule()); } 
+	 EOF 
+;
+
+// Rule SignedNumber
+ruleSignedNumber 
+	@init {
+		int stackSize = keepStackSize();
+	}
+	:
+	(
+		{ before(grammarAccess.getSignedNumberAccess().getGroup()); }
+		(rule__SignedNumber__Group__0)?
+		{ after(grammarAccess.getSignedNumberAccess().getGroup()); }
+	)
+;
+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 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 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 LegendPlacementEnum
+ruleLegendPlacementEnum
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getLegendPlacementEnumAccess().getAlternatives()); }
+		(rule__LegendPlacementEnum__Alternatives)
+		{ after(grammarAccess.getLegendPlacementEnumAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Rule ToggleTypeEnum
+ruleToggleTypeEnum
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getToggleTypeEnumAccess().getAlternatives()); }
+		(rule__ToggleTypeEnum__Alternatives)
+		{ after(grammarAccess.getToggleTypeEnumAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Rule TooltipLocationEnum
+ruleTooltipLocationEnum
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getTooltipLocationEnumAccess().getAlternatives()); }
+		(rule__TooltipLocationEnum__Alternatives)
+		{ after(grammarAccess.getTooltipLocationEnumAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+// Rule RenderTypeEnum
+ruleRenderTypeEnum
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getRenderTypeEnumAccess().getAlternatives()); }
+		(rule__RenderTypeEnum__Alternatives)
+		{ after(grammarAccess.getRenderTypeEnumAccess().getAlternatives()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartOption__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartOptionAccess().getChartBarParserRuleCall_0()); }
+		ruleChartBar
+		{ after(grammarAccess.getChartOptionAccess().getChartBarParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getChartOptionAccess().getChartLineParserRuleCall_1()); }
+		ruleChartLine
+		{ after(grammarAccess.getChartOptionAccess().getChartLineParserRuleCall_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getChartOptionAccess().getChartPieParserRuleCall_2()); }
+		ruleChartPie
+		{ after(grammarAccess.getChartOptionAccess().getChartPieParserRuleCall_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getChartOptionAccess().getChartDonutParserRuleCall_3()); }
+		ruleChartDonut
+		{ after(grammarAccess.getChartOptionAccess().getChartDonutParserRuleCall_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getChartOptionAccess().getChartBubbleParserRuleCall_4()); }
+		ruleChartBubble
+		{ after(grammarAccess.getChartOptionAccess().getChartBubbleParserRuleCall_4()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getChartOptionAccess().getChartGaugeParserRuleCall_5()); }
+		ruleChartGauge
+		{ after(grammarAccess.getChartOptionAccess().getChartGaugeParserRuleCall_5()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getChartOptionAccess().getChartTreeParserRuleCall_6()); }
+		ruleChartTree
+		{ after(grammarAccess.getChartOptionAccess().getChartTreeParserRuleCall_6()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__Alternatives_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartBubbleAccess().getGradientAssignment_2_1_0()); }
+		(rule__ChartBubble__GradientAssignment_2_1_0)
+		{ after(grammarAccess.getChartBubbleAccess().getGradientAssignment_2_1_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getChartBubbleAccess().getTransparentAssignment_2_1_1()); }
+		(rule__ChartBubble__TransparentAssignment_2_1_1)
+		{ after(grammarAccess.getChartBubbleAccess().getTransparentAssignment_2_1_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartTree__Alternatives_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartTreeAccess().getMapAssignment_2_0()); }
+		(rule__ChartTree__MapAssignment_2_0)
+		{ after(grammarAccess.getChartTreeAccess().getMapAssignment_2_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getChartTreeAccess().getCollapsibleAssignment_2_1()); }
+		(rule__ChartTree__CollapsibleAssignment_2_1)
+		{ after(grammarAccess.getChartTreeAccess().getCollapsibleAssignment_2_1()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartElement__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartElementAccess().getChartAxisParserRuleCall_0()); }
+		ruleChartAxis
+		{ after(grammarAccess.getChartElementAccess().getChartAxisParserRuleCall_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getChartElementAccess().getChartLegendParserRuleCall_1()); }
+		ruleChartLegend
+		{ after(grammarAccess.getChartElementAccess().getChartLegendParserRuleCall_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getChartElementAccess().getChartHighlighterParserRuleCall_2()); }
+		ruleChartHighlighter
+		{ after(grammarAccess.getChartElementAccess().getChartHighlighterParserRuleCall_2()); }
+	)
+;
+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__LegendPlacementEnum__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getLegendPlacementEnumAccess().getINSIDEEnumLiteralDeclaration_0()); }
+		('inside')
+		{ after(grammarAccess.getLegendPlacementEnumAccess().getINSIDEEnumLiteralDeclaration_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getLegendPlacementEnumAccess().getINSIDE_GRIDEnumLiteralDeclaration_1()); }
+		('inside-grid')
+		{ after(grammarAccess.getLegendPlacementEnumAccess().getINSIDE_GRIDEnumLiteralDeclaration_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getLegendPlacementEnumAccess().getOUTSIDEEnumLiteralDeclaration_2()); }
+		('outside')
+		{ after(grammarAccess.getLegendPlacementEnumAccess().getOUTSIDEEnumLiteralDeclaration_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getLegendPlacementEnumAccess().getOUTSIDE_GRIDEnumLiteralDeclaration_3()); }
+		('outside-grid')
+		{ after(grammarAccess.getLegendPlacementEnumAccess().getOUTSIDE_GRIDEnumLiteralDeclaration_3()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ToggleTypeEnum__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getToggleTypeEnumAccess().getNORMALEnumLiteralDeclaration_0()); }
+		('normal')
+		{ after(grammarAccess.getToggleTypeEnumAccess().getNORMALEnumLiteralDeclaration_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getToggleTypeEnumAccess().getSLOWEnumLiteralDeclaration_1()); }
+		('slow')
+		{ after(grammarAccess.getToggleTypeEnumAccess().getSLOWEnumLiteralDeclaration_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getToggleTypeEnumAccess().getFASTEnumLiteralDeclaration_2()); }
+		('fast')
+		{ after(grammarAccess.getToggleTypeEnumAccess().getFASTEnumLiteralDeclaration_2()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__TooltipLocationEnum__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getTooltipLocationEnumAccess().getNORTHEnumLiteralDeclaration_0()); }
+		('north')
+		{ after(grammarAccess.getTooltipLocationEnumAccess().getNORTHEnumLiteralDeclaration_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTooltipLocationEnumAccess().getNORTH_EASTEnumLiteralDeclaration_1()); }
+		('north-east')
+		{ after(grammarAccess.getTooltipLocationEnumAccess().getNORTH_EASTEnumLiteralDeclaration_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTooltipLocationEnumAccess().getEASTEnumLiteralDeclaration_2()); }
+		('east')
+		{ after(grammarAccess.getTooltipLocationEnumAccess().getEASTEnumLiteralDeclaration_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTooltipLocationEnumAccess().getSOUTH_EASTEnumLiteralDeclaration_3()); }
+		('south-east')
+		{ after(grammarAccess.getTooltipLocationEnumAccess().getSOUTH_EASTEnumLiteralDeclaration_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTooltipLocationEnumAccess().getSOUTHEnumLiteralDeclaration_4()); }
+		('south')
+		{ after(grammarAccess.getTooltipLocationEnumAccess().getSOUTHEnumLiteralDeclaration_4()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTooltipLocationEnumAccess().getSOUTH_WESTEnumLiteralDeclaration_5()); }
+		('south-west')
+		{ after(grammarAccess.getTooltipLocationEnumAccess().getSOUTH_WESTEnumLiteralDeclaration_5()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTooltipLocationEnumAccess().getWESTEnumLiteralDeclaration_6()); }
+		('west')
+		{ after(grammarAccess.getTooltipLocationEnumAccess().getWESTEnumLiteralDeclaration_6()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getTooltipLocationEnumAccess().getNORTH_WESTEnumLiteralDeclaration_7()); }
+		('north-west')
+		{ after(grammarAccess.getTooltipLocationEnumAccess().getNORTH_WESTEnumLiteralDeclaration_7()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__RenderTypeEnum__Alternatives
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getRenderTypeEnumAccess().getCATEGORYEnumLiteralDeclaration_0()); }
+		('category')
+		{ after(grammarAccess.getRenderTypeEnumAccess().getCATEGORYEnumLiteralDeclaration_0()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getRenderTypeEnumAccess().getLINEAREnumLiteralDeclaration_1()); }
+		('linear')
+		{ after(grammarAccess.getRenderTypeEnumAccess().getLINEAREnumLiteralDeclaration_1()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getRenderTypeEnumAccess().getDATEEnumLiteralDeclaration_2()); }
+		('date')
+		{ after(grammarAccess.getRenderTypeEnumAccess().getDATEEnumLiteralDeclaration_2()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getRenderTypeEnumAccess().getLOGEnumLiteralDeclaration_3()); }
+		('logarithmic')
+		{ after(grammarAccess.getRenderTypeEnumAccess().getLOGEnumLiteralDeclaration_3()); }
+	)
+	|
+	(
+		{ before(grammarAccess.getRenderTypeEnumAccess().getPYRAMIDEnumLiteralDeclaration_4()); }
+		('pyramid')
+		{ after(grammarAccess.getRenderTypeEnumAccess().getPYRAMIDEnumLiteralDeclaration_4()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartModel__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartModel__Group__0__Impl
+	rule__ChartModel__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartModel__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartModelAccess().getImportSectionAssignment_0()); }
+	(rule__ChartModel__ImportSectionAssignment_0)?
+	{ after(grammarAccess.getChartModelAccess().getImportSectionAssignment_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartModel__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartModel__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartModel__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartModelAccess().getPackagesAssignment_1()); }
+	(rule__ChartModel__PackagesAssignment_1)*
+	{ after(grammarAccess.getChartModelAccess().getPackagesAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartPackage__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartPackage__Group__0__Impl
+	rule__ChartPackage__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartPackageAccess().getChartPackageAction_0()); }
+	()
+	{ after(grammarAccess.getChartPackageAccess().getChartPackageAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartPackage__Group__1__Impl
+	rule__ChartPackage__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartPackageAccess().getPackageKeyword_1()); }
+	'package'
+	{ after(grammarAccess.getChartPackageAccess().getPackageKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartPackage__Group__2__Impl
+	rule__ChartPackage__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartPackageAccess().getNameAssignment_2()); }
+	(rule__ChartPackage__NameAssignment_2)
+	{ after(grammarAccess.getChartPackageAccess().getNameAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartPackage__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartPackageAccess().getGroup_3()); }
+	(rule__ChartPackage__Group_3__0)?
+	{ after(grammarAccess.getChartPackageAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartPackage__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartPackage__Group_3__0__Impl
+	rule__ChartPackage__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartPackageAccess().getLeftCurlyBracketKeyword_3_0()); }
+	'{'
+	{ after(grammarAccess.getChartPackageAccess().getLeftCurlyBracketKeyword_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartPackage__Group_3__1__Impl
+	rule__ChartPackage__Group_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartPackageAccess().getChartsAssignment_3_1()); }
+	(rule__ChartPackage__ChartsAssignment_3_1)*
+	{ after(grammarAccess.getChartPackageAccess().getChartsAssignment_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__Group_3__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartPackage__Group_3__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__Group_3__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartPackageAccess().getRightCurlyBracketKeyword_3_2()); }
+	'}'
+	{ after(grammarAccess.getChartPackageAccess().getRightCurlyBracketKeyword_3_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Chart__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Chart__Group__0__Impl
+	rule__Chart__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAccess().getChartAction_0()); }
+	()
+	{ after(grammarAccess.getChartAccess().getChartAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Chart__Group__1__Impl
+	rule__Chart__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAccess().getChartKeyword_1()); }
+	'chart'
+	{ after(grammarAccess.getChartAccess().getChartKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Chart__Group__2__Impl
+	rule__Chart__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAccess().getNameAssignment_2()); }
+	(rule__Chart__NameAssignment_2)
+	{ after(grammarAccess.getChartAccess().getNameAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Chart__Group__3__Impl
+	rule__Chart__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAccess().getGroup_3()); }
+	(rule__Chart__Group_3__0)?
+	{ after(grammarAccess.getChartAccess().getGroup_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Chart__Group__4__Impl
+	rule__Chart__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAccess().getAsKeyword_4()); }
+	'as'
+	{ after(grammarAccess.getChartAccess().getAsKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Chart__Group__5__Impl
+	rule__Chart__Group__6
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAccess().getCharttypeAssignment_5()); }
+	(rule__Chart__CharttypeAssignment_5)
+	{ after(grammarAccess.getChartAccess().getCharttypeAssignment_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__6
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Chart__Group__6__Impl
+	rule__Chart__Group__7
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__6__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAccess().getUnorderedGroup_6()); }
+	(rule__Chart__UnorderedGroup_6)
+	{ after(grammarAccess.getChartAccess().getUnorderedGroup_6()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__7
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Chart__Group__7__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group__7__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAccess().getGroup_7()); }
+	(rule__Chart__Group_7__0)?
+	{ after(grammarAccess.getChartAccess().getGroup_7()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Chart__Group_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Chart__Group_3__0__Impl
+	rule__Chart__Group_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAccess().getDescriptionAssignment_3_0()); }
+	(rule__Chart__DescriptionAssignment_3_0)
+	{ after(grammarAccess.getChartAccess().getDescriptionAssignment_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Chart__Group_3__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAccess().getDescriptionValueAssignment_3_1()); }
+	(rule__Chart__DescriptionValueAssignment_3_1)
+	{ after(grammarAccess.getChartAccess().getDescriptionValueAssignment_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Chart__Group_6_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Chart__Group_6_0__0__Impl
+	rule__Chart__Group_6_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group_6_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAccess().getPollingAssignment_6_0_0()); }
+	(rule__Chart__PollingAssignment_6_0_0)
+	{ after(grammarAccess.getChartAccess().getPollingAssignment_6_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group_6_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Chart__Group_6_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group_6_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAccess().getPollingTimeAssignment_6_0_1()); }
+	(rule__Chart__PollingTimeAssignment_6_0_1)
+	{ after(grammarAccess.getChartAccess().getPollingTimeAssignment_6_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__Chart__Group_7__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Chart__Group_7__0__Impl
+	rule__Chart__Group_7__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group_7__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAccess().getUsingKeyword_7_0()); }
+	'using'
+	{ after(grammarAccess.getChartAccess().getUsingKeyword_7_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group_7__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Chart__Group_7__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__Group_7__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAccess().getSourceAssignment_7_1()); }
+	(rule__Chart__SourceAssignment_7_1)
+	{ after(grammarAccess.getChartAccess().getSourceAssignment_7_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartBar__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartBar__Group__0__Impl
+	rule__ChartBar__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBar__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartBarAccess().getChartBarAction_0()); }
+	()
+	{ after(grammarAccess.getChartBarAccess().getChartBarAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBar__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartBar__Group__1__Impl
+	rule__ChartBar__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBar__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartBarAccess().getBarKeyword_1()); }
+	'bar'
+	{ after(grammarAccess.getChartBarAccess().getBarKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBar__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartBar__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBar__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartBarAccess().getUnorderedGroup_2()); }
+	(rule__ChartBar__UnorderedGroup_2)
+	{ after(grammarAccess.getChartBarAccess().getUnorderedGroup_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartLine__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartLine__Group__0__Impl
+	rule__ChartLine__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartLineAccess().getChartLineAction_0()); }
+	()
+	{ after(grammarAccess.getChartLineAccess().getChartLineAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartLine__Group__1__Impl
+	rule__ChartLine__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartLineAccess().getLineKeyword_1()); }
+	'line'
+	{ after(grammarAccess.getChartLineAccess().getLineKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartLine__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartLineAccess().getUnorderedGroup_2()); }
+	(rule__ChartLine__UnorderedGroup_2)
+	{ after(grammarAccess.getChartLineAccess().getUnorderedGroup_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartLine__Group_2_3__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartLine__Group_2_3__0__Impl
+	rule__ChartLine__Group_2_3__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__Group_2_3__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartLineAccess().getCursorAssignment_2_3_0()); }
+	(rule__ChartLine__CursorAssignment_2_3_0)
+	{ after(grammarAccess.getChartLineAccess().getCursorAssignment_2_3_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__Group_2_3__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartLine__Group_2_3__1__Impl
+	rule__ChartLine__Group_2_3__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__Group_2_3__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartLineAccess().getZoomAssignment_2_3_1()); }
+	(rule__ChartLine__ZoomAssignment_2_3_1)?
+	{ after(grammarAccess.getChartLineAccess().getZoomAssignment_2_3_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__Group_2_3__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartLine__Group_2_3__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__Group_2_3__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartLineAccess().getTooltipAssignment_2_3_2()); }
+	(rule__ChartLine__TooltipAssignment_2_3_2)?
+	{ after(grammarAccess.getChartLineAccess().getTooltipAssignment_2_3_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartPie__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartPie__Group__0__Impl
+	rule__ChartPie__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPie__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartPieAccess().getChartPieAction_0()); }
+	()
+	{ after(grammarAccess.getChartPieAccess().getChartPieAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPie__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartPie__Group__1__Impl
+	rule__ChartPie__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPie__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartPieAccess().getPieKeyword_1()); }
+	'pie'
+	{ after(grammarAccess.getChartPieAccess().getPieKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPie__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartPie__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPie__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartPieAccess().getEmptyAssignment_2()); }
+	(rule__ChartPie__EmptyAssignment_2)?
+	{ after(grammarAccess.getChartPieAccess().getEmptyAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartDonut__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartDonut__Group__0__Impl
+	rule__ChartDonut__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDonut__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartDonutAccess().getChartDonutAction_0()); }
+	()
+	{ after(grammarAccess.getChartDonutAccess().getChartDonutAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDonut__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartDonut__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDonut__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartDonutAccess().getDonutKeyword_1()); }
+	'donut'
+	{ after(grammarAccess.getChartDonutAccess().getDonutKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartBubble__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartBubble__Group__0__Impl
+	rule__ChartBubble__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartBubbleAccess().getChartBubbleAction_0()); }
+	()
+	{ after(grammarAccess.getChartBubbleAccess().getChartBubbleAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartBubble__Group__1__Impl
+	rule__ChartBubble__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartBubbleAccess().getBubbleKeyword_1()); }
+	'bubble'
+	{ after(grammarAccess.getChartBubbleAccess().getBubbleKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartBubble__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2()); }
+	(rule__ChartBubble__UnorderedGroup_2)?
+	{ after(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartBubble__Group_2_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartBubble__Group_2_0__0__Impl
+	rule__ChartBubble__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__Group_2_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartBubbleAccess().getMultiplierAssignment_2_0_0()); }
+	(rule__ChartBubble__MultiplierAssignment_2_0_0)
+	{ after(grammarAccess.getChartBubbleAccess().getMultiplierAssignment_2_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__Group_2_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartBubble__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__Group_2_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartBubbleAccess().getMultiplierValueAssignment_2_0_1()); }
+	(rule__ChartBubble__MultiplierValueAssignment_2_0_1)
+	{ after(grammarAccess.getChartBubbleAccess().getMultiplierValueAssignment_2_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartGauge__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartGauge__Group__0__Impl
+	rule__ChartGauge__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartGaugeAccess().getChartGaugeAction_0()); }
+	()
+	{ after(grammarAccess.getChartGaugeAccess().getChartGaugeAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartGauge__Group__1__Impl
+	rule__ChartGauge__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartGaugeAccess().getGaugeKeyword_1()); }
+	'gauge'
+	{ after(grammarAccess.getChartGaugeAccess().getGaugeKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartGauge__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2()); }
+	(rule__ChartGauge__UnorderedGroup_2)
+	{ after(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartGauge__Group_2_0__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartGauge__Group_2_0__0__Impl
+	rule__ChartGauge__Group_2_0__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_0__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartGaugeAccess().getLabeledAssignment_2_0_0()); }
+	(rule__ChartGauge__LabeledAssignment_2_0_0)
+	{ after(grammarAccess.getChartGaugeAccess().getLabeledAssignment_2_0_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_0__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartGauge__Group_2_0__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_0__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartGaugeAccess().getLabelValueAssignment_2_0_1()); }
+	(rule__ChartGauge__LabelValueAssignment_2_0_1)
+	{ after(grammarAccess.getChartGaugeAccess().getLabelValueAssignment_2_0_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartGauge__Group_2_1__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartGauge__Group_2_1__0__Impl
+	rule__ChartGauge__Group_2_1__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_1__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartGaugeAccess().getHasTicksAssignment_2_1_0()); }
+	(rule__ChartGauge__HasTicksAssignment_2_1_0)
+	{ after(grammarAccess.getChartGaugeAccess().getHasTicksAssignment_2_1_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_1__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartGauge__Group_2_1__1__Impl
+	rule__ChartGauge__Group_2_1__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_1__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartGaugeAccess().getMinimumKeyword_2_1_1()); }
+	'minimum'
+	{ after(grammarAccess.getChartGaugeAccess().getMinimumKeyword_2_1_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_1__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartGauge__Group_2_1__2__Impl
+	rule__ChartGauge__Group_2_1__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_1__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartGaugeAccess().getMinValueAssignment_2_1_2()); }
+	(rule__ChartGauge__MinValueAssignment_2_1_2)
+	{ after(grammarAccess.getChartGaugeAccess().getMinValueAssignment_2_1_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_1__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartGauge__Group_2_1__3__Impl
+	rule__ChartGauge__Group_2_1__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_1__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartGaugeAccess().getMaximumKeyword_2_1_3()); }
+	'maximum'
+	{ after(grammarAccess.getChartGaugeAccess().getMaximumKeyword_2_1_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_1__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartGauge__Group_2_1__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_1__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartGaugeAccess().getMaxValueAssignment_2_1_4()); }
+	(rule__ChartGauge__MaxValueAssignment_2_1_4)
+	{ after(grammarAccess.getChartGaugeAccess().getMaxValueAssignment_2_1_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartGauge__Group_2_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartGauge__Group_2_2__0__Impl
+	rule__ChartGauge__Group_2_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartGaugeAccess().getHasIntervalsAssignment_2_2_0()); }
+	(rule__ChartGauge__HasIntervalsAssignment_2_2_0)
+	{ after(grammarAccess.getChartGaugeAccess().getHasIntervalsAssignment_2_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartGauge__Group_2_2__1__Impl
+	rule__ChartGauge__Group_2_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartGaugeAccess().getLeftCurlyBracketKeyword_2_2_1()); }
+	'{'
+	{ after(grammarAccess.getChartGaugeAccess().getLeftCurlyBracketKeyword_2_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_2__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartGauge__Group_2_2__2__Impl
+	rule__ChartGauge__Group_2_2__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_2__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartGaugeAccess().getIntervalsAssignment_2_2_2()); }
+	(rule__ChartGauge__IntervalsAssignment_2_2_2)*
+	{ after(grammarAccess.getChartGaugeAccess().getIntervalsAssignment_2_2_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_2__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartGauge__Group_2_2__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__Group_2_2__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartGaugeAccess().getRightCurlyBracketKeyword_2_2_3()); }
+	'}'
+	{ after(grammarAccess.getChartGaugeAccess().getRightCurlyBracketKeyword_2_2_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartTree__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartTree__Group__0__Impl
+	rule__ChartTree__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartTree__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartTreeAccess().getChartTreeAction_0()); }
+	()
+	{ after(grammarAccess.getChartTreeAccess().getChartTreeAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartTree__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartTree__Group__1__Impl
+	rule__ChartTree__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartTree__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartTreeAccess().getTreeKeyword_1()); }
+	'tree'
+	{ after(grammarAccess.getChartTreeAccess().getTreeKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartTree__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartTree__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartTree__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartTreeAccess().getAlternatives_2()); }
+	(rule__ChartTree__Alternatives_2)
+	{ after(grammarAccess.getChartTreeAccess().getAlternatives_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartNumberInterval__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartNumberInterval__Group__0__Impl
+	rule__ChartNumberInterval__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartNumberInterval__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartNumberIntervalAccess().getChartNumberIntervalAction_0()); }
+	()
+	{ after(grammarAccess.getChartNumberIntervalAccess().getChartNumberIntervalAction_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartNumberInterval__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartNumberInterval__Group__1__Impl
+	rule__ChartNumberInterval__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartNumberInterval__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartNumberIntervalAccess().getUpToKeyword_1()); }
+	'upTo'
+	{ after(grammarAccess.getChartNumberIntervalAccess().getUpToKeyword_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartNumberInterval__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartNumberInterval__Group__2__Impl
+	rule__ChartNumberInterval__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartNumberInterval__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartNumberIntervalAccess().getNumberIntervalValueAssignment_2()); }
+	(rule__ChartNumberInterval__NumberIntervalValueAssignment_2)
+	{ after(grammarAccess.getChartNumberIntervalAccess().getNumberIntervalValueAssignment_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartNumberInterval__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartNumberInterval__Group__3__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartNumberInterval__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartNumberIntervalAccess().getNumberRangeAssignment_3()); }
+	(rule__ChartNumberInterval__NumberRangeAssignment_3)
+	{ after(grammarAccess.getChartNumberIntervalAccess().getNumberRangeAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartDatamart__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartDatamart__Group__0__Impl
+	rule__ChartDatamart__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDatamart__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartDatamartAccess().getDatamartKeyword_0()); }
+	'datamart'
+	{ after(grammarAccess.getChartDatamartAccess().getDatamartKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDatamart__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartDatamart__Group__1__Impl
+	rule__ChartDatamart__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDatamart__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartDatamartAccess().getDatamartRefAssignment_1()); }
+	(rule__ChartDatamart__DatamartRefAssignment_1)
+	{ after(grammarAccess.getChartDatamartAccess().getDatamartRefAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDatamart__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartDatamart__Group__2__Impl
+	rule__ChartDatamart__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDatamart__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartDatamartAccess().getLeftCurlyBracketKeyword_2()); }
+	'{'
+	{ after(grammarAccess.getChartDatamartAccess().getLeftCurlyBracketKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDatamart__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartDatamart__Group__3__Impl
+	rule__ChartDatamart__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDatamart__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartDatamartAccess().getElementsAssignment_3()); }
+	(rule__ChartDatamart__ElementsAssignment_3)*
+	{ after(grammarAccess.getChartDatamartAccess().getElementsAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDatamart__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartDatamart__Group__4__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDatamart__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartDatamartAccess().getRightCurlyBracketKeyword_4()); }
+	'}'
+	{ after(grammarAccess.getChartDatamartAccess().getRightCurlyBracketKeyword_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartLegend__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartLegend__Group__0__Impl
+	rule__ChartLegend__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLegend__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartLegendAccess().getLegendKeyword_0()); }
+	'legend'
+	{ after(grammarAccess.getChartLegendAccess().getLegendKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLegend__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartLegend__Group__1__Impl
+	rule__ChartLegend__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLegend__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartLegendAccess().getPlacementAssignment_1()); }
+	(rule__ChartLegend__PlacementAssignment_1)
+	{ after(grammarAccess.getChartLegendAccess().getPlacementAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLegend__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartLegend__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLegend__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartLegendAccess().getGroup_2()); }
+	(rule__ChartLegend__Group_2__0)?
+	{ after(grammarAccess.getChartLegendAccess().getGroup_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartLegend__Group_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartLegend__Group_2__0__Impl
+	rule__ChartLegend__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLegend__Group_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartLegendAccess().getToggleAssignment_2_0()); }
+	(rule__ChartLegend__ToggleAssignment_2_0)
+	{ after(grammarAccess.getChartLegendAccess().getToggleAssignment_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLegend__Group_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartLegend__Group_2__1__Impl
+	rule__ChartLegend__Group_2__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLegend__Group_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartLegendAccess().getReplotAssignment_2_1()); }
+	(rule__ChartLegend__ReplotAssignment_2_1)
+	{ after(grammarAccess.getChartLegendAccess().getReplotAssignment_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLegend__Group_2__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartLegend__Group_2__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLegend__Group_2__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartLegendAccess().getToggleTypeAssignment_2_2()); }
+	(rule__ChartLegend__ToggleTypeAssignment_2_2)
+	{ after(grammarAccess.getChartLegendAccess().getToggleTypeAssignment_2_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartHighlighter__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartHighlighter__Group__0__Impl
+	rule__ChartHighlighter__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartHighlighter__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartHighlighterAccess().getTooltipKeyword_0()); }
+	'tooltip'
+	{ after(grammarAccess.getChartHighlighterAccess().getTooltipKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartHighlighter__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartHighlighter__Group__1__Impl
+	rule__ChartHighlighter__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartHighlighter__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartHighlighterAccess().getLocationAssignment_1()); }
+	(rule__ChartHighlighter__LocationAssignment_1)
+	{ after(grammarAccess.getChartHighlighterAccess().getLocationAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartHighlighter__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartHighlighter__Group__2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartHighlighter__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartHighlighterAccess().getGroup_2()); }
+	(rule__ChartHighlighter__Group_2__0)
+	{ after(grammarAccess.getChartHighlighterAccess().getGroup_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartHighlighter__Group_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartHighlighter__Group_2__0__Impl
+	rule__ChartHighlighter__Group_2__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartHighlighter__Group_2__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAssignment_2_0()); }
+	(rule__ChartHighlighter__TooltipAlwaysAssignment_2_0)?
+	{ after(grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAssignment_2_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartHighlighter__Group_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartHighlighter__Group_2__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartHighlighter__Group_2__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartHighlighterAccess().getInsideChartAssignment_2_1()); }
+	(rule__ChartHighlighter__InsideChartAssignment_2_1)?
+	{ after(grammarAccess.getChartHighlighterAccess().getInsideChartAssignment_2_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartAxis__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartAxis__Group__0__Impl
+	rule__ChartAxis__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAxisAccess().getAxisKeyword_0()); }
+	'axis'
+	{ after(grammarAccess.getChartAxisAccess().getAxisKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartAxis__Group__1__Impl
+	rule__ChartAxis__Group__2
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAxisAccess().getAxisAssignment_1()); }
+	(rule__ChartAxis__AxisAssignment_1)
+	{ after(grammarAccess.getChartAxisAccess().getAxisAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartAxis__Group__2__Impl
+	rule__ChartAxis__Group__3
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group__2__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAxisAccess().getRendersKeyword_2()); }
+	'renders'
+	{ after(grammarAccess.getChartAxisAccess().getRendersKeyword_2()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartAxis__Group__3__Impl
+	rule__ChartAxis__Group__4
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group__3__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAxisAccess().getRenderTypeAssignment_3()); }
+	(rule__ChartAxis__RenderTypeAssignment_3)
+	{ after(grammarAccess.getChartAxisAccess().getRenderTypeAssignment_3()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartAxis__Group__4__Impl
+	rule__ChartAxis__Group__5
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group__4__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAxisAccess().getShortLabelAssignment_4()); }
+	(rule__ChartAxis__ShortLabelAssignment_4)?
+	{ after(grammarAccess.getChartAxisAccess().getShortLabelAssignment_4()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartAxis__Group__5__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group__5__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAxisAccess().getGroup_5()); }
+	(rule__ChartAxis__Group_5__0)?
+	{ after(grammarAccess.getChartAxisAccess().getGroup_5()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartAxis__Group_5__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartAxis__Group_5__0__Impl
+	rule__ChartAxis__Group_5__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group_5__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAxisAccess().getAngleKeyword_5_0()); }
+	'angle'
+	{ after(grammarAccess.getChartAxisAccess().getAngleKeyword_5_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group_5__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartAxis__Group_5__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__Group_5__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartAxisAccess().getAngleAssignment_5_1()); }
+	(rule__ChartAxis__AngleAssignment_5_1)
+	{ after(grammarAccess.getChartAxisAccess().getAngleAssignment_5_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartSegmentColor__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartSegmentColor__Group__0__Impl
+	rule__ChartSegmentColor__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartSegmentColor__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartSegmentColorAccess().getSegmentcolorKeyword_0()); }
+	'segmentcolor'
+	{ after(grammarAccess.getChartSegmentColorAccess().getSegmentcolorKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartSegmentColor__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartSegmentColor__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartSegmentColor__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getChartSegmentColorAccess().getRgbAssignment_1()); }
+	(rule__ChartSegmentColor__RgbAssignment_1)
+	{ after(grammarAccess.getChartSegmentColorAccess().getRgbAssignment_1()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__SignedNumber__Group__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__SignedNumber__Group__0__Impl
+	rule__SignedNumber__Group__1
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignedNumber__Group__0__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getSignedNumberAccess().getHyphenMinusKeyword_0()); }
+	('-')?
+	{ after(grammarAccess.getSignedNumberAccess().getHyphenMinusKeyword_0()); }
+)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignedNumber__Group__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__SignedNumber__Group__1__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__SignedNumber__Group__1__Impl
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+(
+	{ before(grammarAccess.getSignedNumberAccess().getINTTerminalRuleCall_1()); }
+	RULE_INT
+	{ after(grammarAccess.getSignedNumberAccess().getINTTerminalRuleCall_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__Chart__UnorderedGroup_6
+	@init {
+		int stackSize = keepStackSize();
+		getUnorderedGroupHelper().enter(grammarAccess.getChartAccess().getUnorderedGroup_6());
+	}
+:
+	rule__Chart__UnorderedGroup_6__0
+	?
+;
+finally {
+	getUnorderedGroupHelper().leave(grammarAccess.getChartAccess().getUnorderedGroup_6());
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__UnorderedGroup_6__Impl
+	@init {
+		int stackSize = keepStackSize();
+		boolean selected = false;
+	}
+:
+		(
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 0)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getChartAccess().getUnorderedGroup_6(), 0);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getChartAccess().getGroup_6_0()); }
+					(rule__Chart__Group_6_0__0)
+					{ after(grammarAccess.getChartAccess().getGroup_6_0()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 1)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getChartAccess().getUnorderedGroup_6(), 1);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getChartAccess().getSelectByIdAssignment_6_1()); }
+					(rule__Chart__SelectByIdAssignment_6_1)
+					{ after(grammarAccess.getChartAccess().getSelectByIdAssignment_6_1()); }
+				)
+			)
+		)
+		)
+;
+finally {
+	if (selected)
+		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartAccess().getUnorderedGroup_6());
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__UnorderedGroup_6__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Chart__UnorderedGroup_6__Impl
+	rule__Chart__UnorderedGroup_6__1?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__UnorderedGroup_6__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__Chart__UnorderedGroup_6__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartBar__UnorderedGroup_2
+	@init {
+		int stackSize = keepStackSize();
+		getUnorderedGroupHelper().enter(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+	}
+:
+	rule__ChartBar__UnorderedGroup_2__0
+	?
+;
+finally {
+	getUnorderedGroupHelper().leave(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBar__UnorderedGroup_2__Impl
+	@init {
+		int stackSize = keepStackSize();
+		boolean selected = false;
+	}
+:
+		(
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getChartBarAccess().getShadowAssignment_2_0()); }
+					(rule__ChartBar__ShadowAssignment_2_0)
+					{ after(grammarAccess.getChartBarAccess().getShadowAssignment_2_0()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getChartBarAccess().getAnimatedAssignment_2_1()); }
+					(rule__ChartBar__AnimatedAssignment_2_1)
+					{ after(grammarAccess.getChartBarAccess().getAnimatedAssignment_2_1()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getChartBarAccess().getSwappedAssignment_2_2()); }
+					(rule__ChartBar__SwappedAssignment_2_2)
+					{ after(grammarAccess.getChartBarAccess().getSwappedAssignment_2_2()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getChartBarAccess().getStackedAssignment_2_3()); }
+					(rule__ChartBar__StackedAssignment_2_3)
+					{ after(grammarAccess.getChartBarAccess().getStackedAssignment_2_3()); }
+				)
+			)
+		)
+		)
+;
+finally {
+	if (selected)
+		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBar__UnorderedGroup_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartBar__UnorderedGroup_2__Impl
+	rule__ChartBar__UnorderedGroup_2__1?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBar__UnorderedGroup_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartBar__UnorderedGroup_2__Impl
+	rule__ChartBar__UnorderedGroup_2__2?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBar__UnorderedGroup_2__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartBar__UnorderedGroup_2__Impl
+	rule__ChartBar__UnorderedGroup_2__3?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBar__UnorderedGroup_2__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartBar__UnorderedGroup_2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartLine__UnorderedGroup_2
+	@init {
+		int stackSize = keepStackSize();
+		getUnorderedGroupHelper().enter(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+	}
+:
+	rule__ChartLine__UnorderedGroup_2__0
+	?
+;
+finally {
+	getUnorderedGroupHelper().leave(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__UnorderedGroup_2__Impl
+	@init {
+		int stackSize = keepStackSize();
+		boolean selected = false;
+	}
+:
+		(
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getChartLineAccess().getAnimatedAssignment_2_0()); }
+					(rule__ChartLine__AnimatedAssignment_2_0)
+					{ after(grammarAccess.getChartLineAccess().getAnimatedAssignment_2_0()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getChartLineAccess().getShowMarkerAssignment_2_1()); }
+					(rule__ChartLine__ShowMarkerAssignment_2_1)
+					{ after(grammarAccess.getChartLineAccess().getShowMarkerAssignment_2_1()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getChartLineAccess().getTrendLineAssignment_2_2()); }
+					(rule__ChartLine__TrendLineAssignment_2_2)
+					{ after(grammarAccess.getChartLineAccess().getTrendLineAssignment_2_2()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getChartLineAccess().getGroup_2_3()); }
+					(rule__ChartLine__Group_2_3__0)
+					{ after(grammarAccess.getChartLineAccess().getGroup_2_3()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getChartLineAccess().getFillToZeroAssignment_2_4()); }
+					(rule__ChartLine__FillToZeroAssignment_2_4)
+					{ after(grammarAccess.getChartLineAccess().getFillToZeroAssignment_2_4()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getChartLineAccess().getFillAreaAssignment_2_5()); }
+					(rule__ChartLine__FillAreaAssignment_2_5)
+					{ after(grammarAccess.getChartLineAccess().getFillAreaAssignment_2_5()); }
+				)
+			)
+		)
+		)
+;
+finally {
+	if (selected)
+		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__UnorderedGroup_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartLine__UnorderedGroup_2__Impl
+	rule__ChartLine__UnorderedGroup_2__1?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__UnorderedGroup_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartLine__UnorderedGroup_2__Impl
+	rule__ChartLine__UnorderedGroup_2__2?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__UnorderedGroup_2__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartLine__UnorderedGroup_2__Impl
+	rule__ChartLine__UnorderedGroup_2__3?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__UnorderedGroup_2__3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartLine__UnorderedGroup_2__Impl
+	rule__ChartLine__UnorderedGroup_2__4?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__UnorderedGroup_2__4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartLine__UnorderedGroup_2__Impl
+	rule__ChartLine__UnorderedGroup_2__5?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__UnorderedGroup_2__5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartLine__UnorderedGroup_2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartBubble__UnorderedGroup_2
+	@init {
+		int stackSize = keepStackSize();
+		getUnorderedGroupHelper().enter(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
+	}
+:
+	rule__ChartBubble__UnorderedGroup_2__0
+	{getUnorderedGroupHelper().canLeave(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2())}?
+;
+finally {
+	getUnorderedGroupHelper().leave(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__UnorderedGroup_2__Impl
+	@init {
+		int stackSize = keepStackSize();
+		boolean selected = false;
+	}
+:
+		(
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getChartBubbleAccess().getGroup_2_0()); }
+					(rule__ChartBubble__Group_2_0__0)
+					{ after(grammarAccess.getChartBubbleAccess().getGroup_2_0()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getChartBubbleAccess().getAlternatives_2_1()); }
+					(rule__ChartBubble__Alternatives_2_1)
+					{ after(grammarAccess.getChartBubbleAccess().getAlternatives_2_1()); }
+				)
+			)
+		)
+		)
+;
+finally {
+	if (selected)
+		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__UnorderedGroup_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartBubble__UnorderedGroup_2__Impl
+	rule__ChartBubble__UnorderedGroup_2__1?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__UnorderedGroup_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartBubble__UnorderedGroup_2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartGauge__UnorderedGroup_2
+	@init {
+		int stackSize = keepStackSize();
+		getUnorderedGroupHelper().enter(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+	}
+:
+	rule__ChartGauge__UnorderedGroup_2__0
+	?
+;
+finally {
+	getUnorderedGroupHelper().leave(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__UnorderedGroup_2__Impl
+	@init {
+		int stackSize = keepStackSize();
+		boolean selected = false;
+	}
+:
+		(
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getChartGaugeAccess().getGroup_2_0()); }
+					(rule__ChartGauge__Group_2_0__0)
+					{ after(grammarAccess.getChartGaugeAccess().getGroup_2_0()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getChartGaugeAccess().getGroup_2_1()); }
+					(rule__ChartGauge__Group_2_1__0)
+					{ after(grammarAccess.getChartGaugeAccess().getGroup_2_1()); }
+				)
+			)
+		)|
+		( 
+			{getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2)}?=>(
+				{
+					getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2);
+				}
+				{
+					selected = true;
+				}
+				(
+					{ before(grammarAccess.getChartGaugeAccess().getGroup_2_2()); }
+					(rule__ChartGauge__Group_2_2__0)
+					{ after(grammarAccess.getChartGaugeAccess().getGroup_2_2()); }
+				)
+			)
+		)
+		)
+;
+finally {
+	if (selected)
+		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__UnorderedGroup_2__0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartGauge__UnorderedGroup_2__Impl
+	rule__ChartGauge__UnorderedGroup_2__1?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__UnorderedGroup_2__1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartGauge__UnorderedGroup_2__Impl
+	rule__ChartGauge__UnorderedGroup_2__2?
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__UnorderedGroup_2__2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	rule__ChartGauge__UnorderedGroup_2__Impl
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+
+rule__ChartModel__ImportSectionAssignment_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartModelAccess().getImportSectionXImportSectionParserRuleCall_0_0()); }
+		ruleXImportSection
+		{ after(grammarAccess.getChartModelAccess().getImportSectionXImportSectionParserRuleCall_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartModel__PackagesAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartModelAccess().getPackagesChartPackageParserRuleCall_1_0()); }
+		ruleChartPackage
+		{ after(grammarAccess.getChartModelAccess().getPackagesChartPackageParserRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__NameAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); }
+		ruleQualifiedName
+		{ after(grammarAccess.getChartPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPackage__ChartsAssignment_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartPackageAccess().getChartsChartParserRuleCall_3_1_0()); }
+		ruleChart
+		{ after(grammarAccess.getChartPackageAccess().getChartsChartParserRuleCall_3_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__NameAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); }
+		ruleTRANSLATABLEID
+		{ after(grammarAccess.getChartAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__DescriptionAssignment_3_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartAccess().getDescriptionDescribedByKeyword_3_0_0()); }
+		(
+			{ before(grammarAccess.getChartAccess().getDescriptionDescribedByKeyword_3_0_0()); }
+			'describedBy'
+			{ after(grammarAccess.getChartAccess().getDescriptionDescribedByKeyword_3_0_0()); }
+		)
+		{ after(grammarAccess.getChartAccess().getDescriptionDescribedByKeyword_3_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__DescriptionValueAssignment_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); }
+		ruleTRANSLATABLESTRING
+		{ after(grammarAccess.getChartAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__CharttypeAssignment_5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartAccess().getCharttypeChartOptionParserRuleCall_5_0()); }
+		ruleChartOption
+		{ after(grammarAccess.getChartAccess().getCharttypeChartOptionParserRuleCall_5_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__PollingAssignment_6_0_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartAccess().getPollingPollingKeyword_6_0_0_0()); }
+		(
+			{ before(grammarAccess.getChartAccess().getPollingPollingKeyword_6_0_0_0()); }
+			'polling'
+			{ after(grammarAccess.getChartAccess().getPollingPollingKeyword_6_0_0_0()); }
+		)
+		{ after(grammarAccess.getChartAccess().getPollingPollingKeyword_6_0_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__PollingTimeAssignment_6_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartAccess().getPollingTimeINTTerminalRuleCall_6_0_1_0()); }
+		RULE_INT
+		{ after(grammarAccess.getChartAccess().getPollingTimeINTTerminalRuleCall_6_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__SelectByIdAssignment_6_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartAccess().getSelectByIdSelectByIdKeyword_6_1_0()); }
+		(
+			{ before(grammarAccess.getChartAccess().getSelectByIdSelectByIdKeyword_6_1_0()); }
+			'selectById'
+			{ after(grammarAccess.getChartAccess().getSelectByIdSelectByIdKeyword_6_1_0()); }
+		)
+		{ after(grammarAccess.getChartAccess().getSelectByIdSelectByIdKeyword_6_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__Chart__SourceAssignment_7_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartAccess().getSourceChartDatamartParserRuleCall_7_1_0()); }
+		ruleChartDatamart
+		{ after(grammarAccess.getChartAccess().getSourceChartDatamartParserRuleCall_7_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBar__ShadowAssignment_2_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartBarAccess().getShadowShadedKeyword_2_0_0()); }
+		(
+			{ before(grammarAccess.getChartBarAccess().getShadowShadedKeyword_2_0_0()); }
+			'shaded'
+			{ after(grammarAccess.getChartBarAccess().getShadowShadedKeyword_2_0_0()); }
+		)
+		{ after(grammarAccess.getChartBarAccess().getShadowShadedKeyword_2_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBar__AnimatedAssignment_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartBarAccess().getAnimatedAnimatedKeyword_2_1_0()); }
+		(
+			{ before(grammarAccess.getChartBarAccess().getAnimatedAnimatedKeyword_2_1_0()); }
+			'animated'
+			{ after(grammarAccess.getChartBarAccess().getAnimatedAnimatedKeyword_2_1_0()); }
+		)
+		{ after(grammarAccess.getChartBarAccess().getAnimatedAnimatedKeyword_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBar__SwappedAssignment_2_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartBarAccess().getSwappedSwappedKeyword_2_2_0()); }
+		(
+			{ before(grammarAccess.getChartBarAccess().getSwappedSwappedKeyword_2_2_0()); }
+			'swapped'
+			{ after(grammarAccess.getChartBarAccess().getSwappedSwappedKeyword_2_2_0()); }
+		)
+		{ after(grammarAccess.getChartBarAccess().getSwappedSwappedKeyword_2_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBar__StackedAssignment_2_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartBarAccess().getStackedStackedKeyword_2_3_0()); }
+		(
+			{ before(grammarAccess.getChartBarAccess().getStackedStackedKeyword_2_3_0()); }
+			'stacked'
+			{ after(grammarAccess.getChartBarAccess().getStackedStackedKeyword_2_3_0()); }
+		)
+		{ after(grammarAccess.getChartBarAccess().getStackedStackedKeyword_2_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__AnimatedAssignment_2_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartLineAccess().getAnimatedAnimatedKeyword_2_0_0()); }
+		(
+			{ before(grammarAccess.getChartLineAccess().getAnimatedAnimatedKeyword_2_0_0()); }
+			'animated'
+			{ after(grammarAccess.getChartLineAccess().getAnimatedAnimatedKeyword_2_0_0()); }
+		)
+		{ after(grammarAccess.getChartLineAccess().getAnimatedAnimatedKeyword_2_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__ShowMarkerAssignment_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartLineAccess().getShowMarkerShowMarkerKeyword_2_1_0()); }
+		(
+			{ before(grammarAccess.getChartLineAccess().getShowMarkerShowMarkerKeyword_2_1_0()); }
+			'showMarker'
+			{ after(grammarAccess.getChartLineAccess().getShowMarkerShowMarkerKeyword_2_1_0()); }
+		)
+		{ after(grammarAccess.getChartLineAccess().getShowMarkerShowMarkerKeyword_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__TrendLineAssignment_2_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartLineAccess().getTrendLineTrendLineKeyword_2_2_0()); }
+		(
+			{ before(grammarAccess.getChartLineAccess().getTrendLineTrendLineKeyword_2_2_0()); }
+			'trendLine'
+			{ after(grammarAccess.getChartLineAccess().getTrendLineTrendLineKeyword_2_2_0()); }
+		)
+		{ after(grammarAccess.getChartLineAccess().getTrendLineTrendLineKeyword_2_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__CursorAssignment_2_3_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartLineAccess().getCursorCursorKeyword_2_3_0_0()); }
+		(
+			{ before(grammarAccess.getChartLineAccess().getCursorCursorKeyword_2_3_0_0()); }
+			'cursor'
+			{ after(grammarAccess.getChartLineAccess().getCursorCursorKeyword_2_3_0_0()); }
+		)
+		{ after(grammarAccess.getChartLineAccess().getCursorCursorKeyword_2_3_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__ZoomAssignment_2_3_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartLineAccess().getZoomZoomKeyword_2_3_1_0()); }
+		(
+			{ before(grammarAccess.getChartLineAccess().getZoomZoomKeyword_2_3_1_0()); }
+			'zoom'
+			{ after(grammarAccess.getChartLineAccess().getZoomZoomKeyword_2_3_1_0()); }
+		)
+		{ after(grammarAccess.getChartLineAccess().getZoomZoomKeyword_2_3_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__TooltipAssignment_2_3_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartLineAccess().getTooltipTooltipKeyword_2_3_2_0()); }
+		(
+			{ before(grammarAccess.getChartLineAccess().getTooltipTooltipKeyword_2_3_2_0()); }
+			'tooltip'
+			{ after(grammarAccess.getChartLineAccess().getTooltipTooltipKeyword_2_3_2_0()); }
+		)
+		{ after(grammarAccess.getChartLineAccess().getTooltipTooltipKeyword_2_3_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__FillToZeroAssignment_2_4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartLineAccess().getFillToZeroFillZeroKeyword_2_4_0()); }
+		(
+			{ before(grammarAccess.getChartLineAccess().getFillToZeroFillZeroKeyword_2_4_0()); }
+			'fillZero'
+			{ after(grammarAccess.getChartLineAccess().getFillToZeroFillZeroKeyword_2_4_0()); }
+		)
+		{ after(grammarAccess.getChartLineAccess().getFillToZeroFillZeroKeyword_2_4_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLine__FillAreaAssignment_2_5
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartLineAccess().getFillAreaFilledKeyword_2_5_0()); }
+		(
+			{ before(grammarAccess.getChartLineAccess().getFillAreaFilledKeyword_2_5_0()); }
+			'filled'
+			{ after(grammarAccess.getChartLineAccess().getFillAreaFilledKeyword_2_5_0()); }
+		)
+		{ after(grammarAccess.getChartLineAccess().getFillAreaFilledKeyword_2_5_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartPie__EmptyAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartPieAccess().getEmptyEmptyKeyword_2_0()); }
+		(
+			{ before(grammarAccess.getChartPieAccess().getEmptyEmptyKeyword_2_0()); }
+			'empty'
+			{ after(grammarAccess.getChartPieAccess().getEmptyEmptyKeyword_2_0()); }
+		)
+		{ after(grammarAccess.getChartPieAccess().getEmptyEmptyKeyword_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__MultiplierAssignment_2_0_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartBubbleAccess().getMultiplierMultiplierKeyword_2_0_0_0()); }
+		(
+			{ before(grammarAccess.getChartBubbleAccess().getMultiplierMultiplierKeyword_2_0_0_0()); }
+			'multiplier'
+			{ after(grammarAccess.getChartBubbleAccess().getMultiplierMultiplierKeyword_2_0_0_0()); }
+		)
+		{ after(grammarAccess.getChartBubbleAccess().getMultiplierMultiplierKeyword_2_0_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__MultiplierValueAssignment_2_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartBubbleAccess().getMultiplierValueNumberParserRuleCall_2_0_1_0()); }
+		ruleNumber
+		{ after(grammarAccess.getChartBubbleAccess().getMultiplierValueNumberParserRuleCall_2_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__GradientAssignment_2_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartBubbleAccess().getGradientGradientKeyword_2_1_0_0()); }
+		(
+			{ before(grammarAccess.getChartBubbleAccess().getGradientGradientKeyword_2_1_0_0()); }
+			'gradient'
+			{ after(grammarAccess.getChartBubbleAccess().getGradientGradientKeyword_2_1_0_0()); }
+		)
+		{ after(grammarAccess.getChartBubbleAccess().getGradientGradientKeyword_2_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartBubble__TransparentAssignment_2_1_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartBubbleAccess().getTransparentTransparentKeyword_2_1_1_0()); }
+		(
+			{ before(grammarAccess.getChartBubbleAccess().getTransparentTransparentKeyword_2_1_1_0()); }
+			'transparent'
+			{ after(grammarAccess.getChartBubbleAccess().getTransparentTransparentKeyword_2_1_1_0()); }
+		)
+		{ after(grammarAccess.getChartBubbleAccess().getTransparentTransparentKeyword_2_1_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__LabeledAssignment_2_0_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartGaugeAccess().getLabeledLabelKeyword_2_0_0_0()); }
+		(
+			{ before(grammarAccess.getChartGaugeAccess().getLabeledLabelKeyword_2_0_0_0()); }
+			'label'
+			{ after(grammarAccess.getChartGaugeAccess().getLabeledLabelKeyword_2_0_0_0()); }
+		)
+		{ after(grammarAccess.getChartGaugeAccess().getLabeledLabelKeyword_2_0_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__LabelValueAssignment_2_0_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartGaugeAccess().getLabelValueSTRINGTerminalRuleCall_2_0_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getChartGaugeAccess().getLabelValueSTRINGTerminalRuleCall_2_0_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__HasTicksAssignment_2_1_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartGaugeAccess().getHasTicksHasTicksKeyword_2_1_0_0()); }
+		(
+			{ before(grammarAccess.getChartGaugeAccess().getHasTicksHasTicksKeyword_2_1_0_0()); }
+			'hasTicks'
+			{ after(grammarAccess.getChartGaugeAccess().getHasTicksHasTicksKeyword_2_1_0_0()); }
+		)
+		{ after(grammarAccess.getChartGaugeAccess().getHasTicksHasTicksKeyword_2_1_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__MinValueAssignment_2_1_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartGaugeAccess().getMinValueINTTerminalRuleCall_2_1_2_0()); }
+		RULE_INT
+		{ after(grammarAccess.getChartGaugeAccess().getMinValueINTTerminalRuleCall_2_1_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__MaxValueAssignment_2_1_4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartGaugeAccess().getMaxValueINTTerminalRuleCall_2_1_4_0()); }
+		RULE_INT
+		{ after(grammarAccess.getChartGaugeAccess().getMaxValueINTTerminalRuleCall_2_1_4_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__HasIntervalsAssignment_2_2_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartGaugeAccess().getHasIntervalsIntervalsKeyword_2_2_0_0()); }
+		(
+			{ before(grammarAccess.getChartGaugeAccess().getHasIntervalsIntervalsKeyword_2_2_0_0()); }
+			'intervals'
+			{ after(grammarAccess.getChartGaugeAccess().getHasIntervalsIntervalsKeyword_2_2_0_0()); }
+		)
+		{ after(grammarAccess.getChartGaugeAccess().getHasIntervalsIntervalsKeyword_2_2_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartGauge__IntervalsAssignment_2_2_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartGaugeAccess().getIntervalsChartIntervalParserRuleCall_2_2_2_0()); }
+		ruleChartInterval
+		{ after(grammarAccess.getChartGaugeAccess().getIntervalsChartIntervalParserRuleCall_2_2_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartTree__MapAssignment_2_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartTreeAccess().getMapMapKeyword_2_0_0()); }
+		(
+			{ before(grammarAccess.getChartTreeAccess().getMapMapKeyword_2_0_0()); }
+			'map'
+			{ after(grammarAccess.getChartTreeAccess().getMapMapKeyword_2_0_0()); }
+		)
+		{ after(grammarAccess.getChartTreeAccess().getMapMapKeyword_2_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartTree__CollapsibleAssignment_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartTreeAccess().getCollapsibleCollapsibleKeyword_2_1_0()); }
+		(
+			{ before(grammarAccess.getChartTreeAccess().getCollapsibleCollapsibleKeyword_2_1_0()); }
+			'collapsible'
+			{ after(grammarAccess.getChartTreeAccess().getCollapsibleCollapsibleKeyword_2_1_0()); }
+		)
+		{ after(grammarAccess.getChartTreeAccess().getCollapsibleCollapsibleKeyword_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartNumberInterval__NumberIntervalValueAssignment_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartNumberIntervalAccess().getNumberIntervalValueSignedNumberParserRuleCall_2_0()); }
+		ruleSignedNumber
+		{ after(grammarAccess.getChartNumberIntervalAccess().getNumberIntervalValueSignedNumberParserRuleCall_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartNumberInterval__NumberRangeAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartNumberIntervalAccess().getNumberRangeChartRangeElementParserRuleCall_3_0()); }
+		ruleChartRangeElement
+		{ after(grammarAccess.getChartNumberIntervalAccess().getNumberRangeChartRangeElementParserRuleCall_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDatamart__DatamartRefAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartDatamartAccess().getDatamartRefDatamartDefinitionCrossReference_1_0()); }
+		(
+			{ before(grammarAccess.getChartDatamartAccess().getDatamartRefDatamartDefinitionIDTerminalRuleCall_1_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getChartDatamartAccess().getDatamartRefDatamartDefinitionIDTerminalRuleCall_1_0_1()); }
+		)
+		{ after(grammarAccess.getChartDatamartAccess().getDatamartRefDatamartDefinitionCrossReference_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartDatamart__ElementsAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartDatamartAccess().getElementsChartElementParserRuleCall_3_0()); }
+		ruleChartElement
+		{ after(grammarAccess.getChartDatamartAccess().getElementsChartElementParserRuleCall_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLegend__PlacementAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartLegendAccess().getPlacementLegendPlacementEnumEnumRuleCall_1_0()); }
+		ruleLegendPlacementEnum
+		{ after(grammarAccess.getChartLegendAccess().getPlacementLegendPlacementEnumEnumRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLegend__ToggleAssignment_2_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartLegendAccess().getToggleToggleKeyword_2_0_0()); }
+		(
+			{ before(grammarAccess.getChartLegendAccess().getToggleToggleKeyword_2_0_0()); }
+			'toggle'
+			{ after(grammarAccess.getChartLegendAccess().getToggleToggleKeyword_2_0_0()); }
+		)
+		{ after(grammarAccess.getChartLegendAccess().getToggleToggleKeyword_2_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLegend__ReplotAssignment_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartLegendAccess().getReplotReplotKeyword_2_1_0()); }
+		(
+			{ before(grammarAccess.getChartLegendAccess().getReplotReplotKeyword_2_1_0()); }
+			'replot'
+			{ after(grammarAccess.getChartLegendAccess().getReplotReplotKeyword_2_1_0()); }
+		)
+		{ after(grammarAccess.getChartLegendAccess().getReplotReplotKeyword_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartLegend__ToggleTypeAssignment_2_2
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartLegendAccess().getToggleTypeToggleTypeEnumEnumRuleCall_2_2_0()); }
+		ruleToggleTypeEnum
+		{ after(grammarAccess.getChartLegendAccess().getToggleTypeToggleTypeEnumEnumRuleCall_2_2_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartHighlighter__LocationAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartHighlighterAccess().getLocationTooltipLocationEnumEnumRuleCall_1_0()); }
+		ruleTooltipLocationEnum
+		{ after(grammarAccess.getChartHighlighterAccess().getLocationTooltipLocationEnumEnumRuleCall_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartHighlighter__TooltipAlwaysAssignment_2_0
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAlwaysKeyword_2_0_0()); }
+		(
+			{ before(grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAlwaysKeyword_2_0_0()); }
+			'always'
+			{ after(grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAlwaysKeyword_2_0_0()); }
+		)
+		{ after(grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAlwaysKeyword_2_0_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartHighlighter__InsideChartAssignment_2_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartHighlighterAccess().getInsideChartInsideKeyword_2_1_0()); }
+		(
+			{ before(grammarAccess.getChartHighlighterAccess().getInsideChartInsideKeyword_2_1_0()); }
+			'inside'
+			{ after(grammarAccess.getChartHighlighterAccess().getInsideChartInsideKeyword_2_1_0()); }
+		)
+		{ after(grammarAccess.getChartHighlighterAccess().getInsideChartInsideKeyword_2_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__AxisAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartAxisAccess().getAxisDatamartAxisCrossReference_1_0()); }
+		(
+			{ before(grammarAccess.getChartAxisAccess().getAxisDatamartAxisIDTerminalRuleCall_1_0_1()); }
+			RULE_ID
+			{ after(grammarAccess.getChartAxisAccess().getAxisDatamartAxisIDTerminalRuleCall_1_0_1()); }
+		)
+		{ after(grammarAccess.getChartAxisAccess().getAxisDatamartAxisCrossReference_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__RenderTypeAssignment_3
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartAxisAccess().getRenderTypeRenderTypeEnumEnumRuleCall_3_0()); }
+		ruleRenderTypeEnum
+		{ after(grammarAccess.getChartAxisAccess().getRenderTypeRenderTypeEnumEnumRuleCall_3_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__ShortLabelAssignment_4
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartAxisAccess().getShortLabelShortLabelKeyword_4_0()); }
+		(
+			{ before(grammarAccess.getChartAxisAccess().getShortLabelShortLabelKeyword_4_0()); }
+			'shortLabel'
+			{ after(grammarAccess.getChartAxisAccess().getShortLabelShortLabelKeyword_4_0()); }
+		)
+		{ after(grammarAccess.getChartAxisAccess().getShortLabelShortLabelKeyword_4_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartAxis__AngleAssignment_5_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartAxisAccess().getAngleSignedNumberParserRuleCall_5_1_0()); }
+		ruleSignedNumber
+		{ after(grammarAccess.getChartAxisAccess().getAngleSignedNumberParserRuleCall_5_1_0()); }
+	)
+;
+finally {
+	restoreStackSize(stackSize);
+}
+
+rule__ChartSegmentColor__RgbAssignment_1
+	@init {
+		int stackSize = keepStackSize();
+	}
+:
+	(
+		{ before(grammarAccess.getChartSegmentColorAccess().getRgbSTRINGTerminalRuleCall_1_0()); }
+		RULE_STRING
+		{ after(grammarAccess.getChartSegmentColorAccess().getRgbSTRINGTerminalRuleCall_1_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.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/contentassist/antlr/internal/InternalChartDSL.tokens b/org.eclipse.osbp.xtext.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/contentassist/antlr/internal/InternalChartDSL.tokens
new file mode 100644
index 0000000..ca069d4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/contentassist/antlr/internal/InternalChartDSL.tokens
@@ -0,0 +1,293 @@
+'!'=40
+'!='=22
+'!=='=24
+'#'=100
+'%'=39
+'%='=20
+'&&'=15
+'&'=122
+'('=96
+')'=97
+'*'=36
+'**'=37
+'*='=18
+'+'=34
+'++'=41
+'+='=16
+','=98
+'-'=35
+'--'=42
+'-='=17
+'->'=28
+'.'=43
+'..'=30
+'..<'=29
+'/'=38
+'/='=19
+':'=106
+'::'=150
+';'=94
+'<'=27
+'<>'=32
+'='=13
+'=='=21
+'==='=23
+'=>'=31
+'>'=26
+'>='=25
+'?'=121
+'?.'=151
+'?:'=33
+'@'=95
+'['=101
+']'=99
+'always'=147
+'angle'=92
+'animated'=127
+'as'=75
+'axis'=90
+'bar'=77
+'bubble'=81
+'case'=108
+'catch'=120
+'category'=66
+'chart'=74
+'collapsible'=144
+'cursor'=132
+'datamart'=87
+'date'=68
+'default'=107
+'describedBy'=123
+'do'=111
+'donut'=80
+'east'=60
+'else'=104
+'empty'=136
+'extends'=45
+'extension'=48
+'false'=50
+'fast'=57
+'fillZero'=134
+'filled'=135
+'finally'=118
+'for'=109
+'gauge'=82
+'gradient'=138
+'hasTicks'=141
+'if'=103
+'import'=47
+'inside'=51
+'inside-grid'=52
+'instanceof'=102
+'intervals'=142
+'label'=140
+'legend'=88
+'line'=78
+'linear'=67
+'logarithmic'=69
+'map'=143
+'maximum'=84
+'minimum'=83
+'multiplier'=137
+'new'=112
+'normal'=55
+'north'=58
+'north-east'=59
+'north-west'=65
+'ns'=149
+'null'=113
+'outside'=53
+'outside-grid'=54
+'package'=71
+'pie'=79
+'polling'=124
+'pyramid'=70
+'renders'=91
+'replot'=146
+'return'=116
+'segmentcolor'=93
+'selectById'=125
+'shaded'=126
+'shortLabel'=148
+'showMarker'=130
+'slow'=56
+'south'=62
+'south-east'=61
+'south-west'=63
+'stacked'=129
+'static'=46
+'super'=49
+'swapped'=128
+'switch'=105
+'synchronized'=119
+'throw'=115
+'toggle'=145
+'tooltip'=89
+'transparent'=139
+'tree'=85
+'trendLine'=131
+'true'=154
+'try'=117
+'typeof'=114
+'upTo'=86
+'using'=76
+'val'=44
+'var'=153
+'west'=64
+'while'=110
+'zoom'=133
+'{'=72
+'|'=152
+'||'=14
+'}'=73
+RULE_ANY_OTHER=12
+RULE_DECIMAL=8
+RULE_HEX=6
+RULE_ID=5
+RULE_INT=7
+RULE_ML_COMMENT=9
+RULE_SL_COMMENT=10
+RULE_STRING=4
+RULE_WS=11
+T__100=100
+T__101=101
+T__102=102
+T__103=103
+T__104=104
+T__105=105
+T__106=106
+T__107=107
+T__108=108
+T__109=109
+T__110=110
+T__111=111
+T__112=112
+T__113=113
+T__114=114
+T__115=115
+T__116=116
+T__117=117
+T__118=118
+T__119=119
+T__120=120
+T__121=121
+T__122=122
+T__123=123
+T__124=124
+T__125=125
+T__126=126
+T__127=127
+T__128=128
+T__129=129
+T__130=130
+T__131=131
+T__132=132
+T__133=133
+T__134=134
+T__135=135
+T__136=136
+T__137=137
+T__138=138
+T__139=139
+T__13=13
+T__140=140
+T__141=141
+T__142=142
+T__143=143
+T__144=144
+T__145=145
+T__146=146
+T__147=147
+T__148=148
+T__149=149
+T__14=14
+T__150=150
+T__151=151
+T__152=152
+T__153=153
+T__154=154
+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.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/contentassist/antlr/internal/InternalChartDSLLexer.java b/org.eclipse.osbp.xtext.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/contentassist/antlr/internal/InternalChartDSLLexer.java
new file mode 100644
index 0000000..423959f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/contentassist/antlr/internal/InternalChartDSLLexer.java
@@ -0,0 +1,5839 @@
+package org.eclipse.osbp.xtext.chart.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 InternalChartDSLLexer extends Lexer {
+    public static final int T__144=144;
+    public static final int T__143=143;
+    public static final int T__146=146;
+    public static final int RULE_HEX=6;
+    public static final int T__50=50;
+    public static final int T__145=145;
+    public static final int T__140=140;
+    public static final int T__142=142;
+    public static final int T__141=141;
+    public static final int T__59=59;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__137=137;
+    public static final int T__52=52;
+    public static final int T__136=136;
+    public static final int T__53=53;
+    public static final int T__139=139;
+    public static final int T__54=54;
+    public static final int T__138=138;
+    public static final int T__133=133;
+    public static final int T__132=132;
+    public static final int T__60=60;
+    public static final int T__135=135;
+    public static final int T__61=61;
+    public static final int T__134=134;
+    public static final int RULE_ID=5;
+    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__154=154;
+    public static final int T__151=151;
+    public static final int T__150=150;
+    public static final int T__153=153;
+    public static final int T__152=152;
+    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__148=148;
+    public static final int T__41=41;
+    public static final int T__147=147;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__149=149;
+    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=4;
+    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 InternalChartDSLLexer() {;} 
+    public InternalChartDSLLexer(CharStream input) {
+        this(input, new RecognizerSharedState());
+    }
+    public InternalChartDSLLexer(CharStream input, RecognizerSharedState state) {
+        super(input,state);
+
+    }
+    public String getGrammarFileName() { return "InternalChartDSL.g"; }
+
+    // $ANTLR start "T__13"
+    public final void mT__13() throws RecognitionException {
+        try {
+            int _type = T__13;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:11:7: ( '=' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:12:7: ( '||' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:13:7: ( '&&' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:14:7: ( '+=' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:15:7: ( '-=' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:16:7: ( '*=' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:17:7: ( '/=' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:18:7: ( '%=' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:19:7: ( '==' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:20:7: ( '!=' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:21:7: ( '===' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:22:7: ( '!==' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:23:7: ( '>=' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:24:7: ( '>' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:25:7: ( '<' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:26:7: ( '->' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:27:7: ( '..<' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:28:7: ( '..' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:29:7: ( '=>' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:30:7: ( '<>' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:31:7: ( '?:' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:32:7: ( '+' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:33:7: ( '-' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:34:7: ( '*' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:35:7: ( '**' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:36:7: ( '/' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:37:7: ( '%' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:38:7: ( '!' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:39:7: ( '++' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:40:7: ( '--' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:41:7: ( '.' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:42:7: ( 'val' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:43:7: ( 'extends' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:44:7: ( 'static' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:45:7: ( 'import' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:46:7: ( 'extension' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:47:7: ( 'super' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:48:7: ( 'false' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:49:7: ( 'inside' )
+            // InternalChartDSL.g:49:9: 'inside'
+            {
+            match("inside"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:50:7: ( 'inside-grid' )
+            // InternalChartDSL.g:50:9: 'inside-grid'
+            {
+            match("inside-grid"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:51:7: ( 'outside' )
+            // InternalChartDSL.g:51:9: 'outside'
+            {
+            match("outside"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:52:7: ( 'outside-grid' )
+            // InternalChartDSL.g:52:9: 'outside-grid'
+            {
+            match("outside-grid"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:53:7: ( 'normal' )
+            // InternalChartDSL.g:53:9: 'normal'
+            {
+            match("normal"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:54:7: ( 'slow' )
+            // InternalChartDSL.g:54:9: 'slow'
+            {
+            match("slow"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:55:7: ( 'fast' )
+            // InternalChartDSL.g:55:9: 'fast'
+            {
+            match("fast"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:56:7: ( 'north' )
+            // InternalChartDSL.g:56:9: 'north'
+            {
+            match("north"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:57:7: ( 'north-east' )
+            // InternalChartDSL.g:57:9: 'north-east'
+            {
+            match("north-east"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:58:7: ( 'east' )
+            // InternalChartDSL.g:58:9: 'east'
+            {
+            match("east"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:59:7: ( 'south-east' )
+            // InternalChartDSL.g:59:9: 'south-east'
+            {
+            match("south-east"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:60:7: ( 'south' )
+            // InternalChartDSL.g:60:9: 'south'
+            {
+            match("south"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:61:7: ( 'south-west' )
+            // InternalChartDSL.g:61:9: 'south-west'
+            {
+            match("south-west"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:62:7: ( 'west' )
+            // InternalChartDSL.g:62:9: 'west'
+            {
+            match("west"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:63:7: ( 'north-west' )
+            // InternalChartDSL.g:63:9: 'north-west'
+            {
+            match("north-west"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:64:7: ( 'category' )
+            // InternalChartDSL.g:64:9: 'category'
+            {
+            match("category"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:65:7: ( 'linear' )
+            // InternalChartDSL.g:65:9: 'linear'
+            {
+            match("linear"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:66:7: ( 'date' )
+            // InternalChartDSL.g:66:9: 'date'
+            {
+            match("date"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:67:7: ( 'logarithmic' )
+            // InternalChartDSL.g:67:9: 'logarithmic'
+            {
+            match("logarithmic"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:68:7: ( 'pyramid' )
+            // InternalChartDSL.g:68:9: 'pyramid'
+            {
+            match("pyramid"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:69:7: ( 'package' )
+            // InternalChartDSL.g:69:9: 'package'
+            {
+            match("package"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:70:7: ( '{' )
+            // InternalChartDSL.g:70:9: '{'
+            {
+            match('{'); 
+
+            }
+
+            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;
+            // InternalChartDSL.g:71:7: ( '}' )
+            // InternalChartDSL.g:71:9: '}'
+            {
+            match('}'); 
+
+            }
+
+            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;
+            // InternalChartDSL.g:72:7: ( 'chart' )
+            // InternalChartDSL.g:72:9: 'chart'
+            {
+            match("chart"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:73:7: ( 'as' )
+            // InternalChartDSL.g:73:9: 'as'
+            {
+            match("as"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:74:7: ( 'using' )
+            // InternalChartDSL.g:74:9: 'using'
+            {
+            match("using"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:75:7: ( 'bar' )
+            // InternalChartDSL.g:75:9: 'bar'
+            {
+            match("bar"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:76:7: ( 'line' )
+            // InternalChartDSL.g:76:9: 'line'
+            {
+            match("line"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:77:7: ( 'pie' )
+            // InternalChartDSL.g:77:9: 'pie'
+            {
+            match("pie"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:78:7: ( 'donut' )
+            // InternalChartDSL.g:78:9: 'donut'
+            {
+            match("donut"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:79:7: ( 'bubble' )
+            // InternalChartDSL.g:79:9: 'bubble'
+            {
+            match("bubble"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:80:7: ( 'gauge' )
+            // InternalChartDSL.g:80:9: 'gauge'
+            {
+            match("gauge"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:81:7: ( 'minimum' )
+            // InternalChartDSL.g:81:9: 'minimum'
+            {
+            match("minimum"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:82:7: ( 'maximum' )
+            // InternalChartDSL.g:82:9: 'maximum'
+            {
+            match("maximum"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:83:7: ( 'tree' )
+            // InternalChartDSL.g:83:9: 'tree'
+            {
+            match("tree"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:84:7: ( 'upTo' )
+            // InternalChartDSL.g:84:9: 'upTo'
+            {
+            match("upTo"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:85:7: ( 'datamart' )
+            // InternalChartDSL.g:85:9: 'datamart'
+            {
+            match("datamart"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:86:7: ( 'legend' )
+            // InternalChartDSL.g:86:9: 'legend'
+            {
+            match("legend"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:87:7: ( 'tooltip' )
+            // InternalChartDSL.g:87:9: 'tooltip'
+            {
+            match("tooltip"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:88:7: ( 'axis' )
+            // InternalChartDSL.g:88:9: 'axis'
+            {
+            match("axis"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:89:7: ( 'renders' )
+            // InternalChartDSL.g:89:9: 'renders'
+            {
+            match("renders"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:90:7: ( 'angle' )
+            // InternalChartDSL.g:90:9: 'angle'
+            {
+            match("angle"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:91:7: ( 'segmentcolor' )
+            // InternalChartDSL.g:91:9: 'segmentcolor'
+            {
+            match("segmentcolor"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:92:7: ( ';' )
+            // InternalChartDSL.g:92:9: ';'
+            {
+            match(';'); 
+
+            }
+
+            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;
+            // InternalChartDSL.g:93:7: ( '@' )
+            // InternalChartDSL.g:93:9: '@'
+            {
+            match('@'); 
+
+            }
+
+            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;
+            // InternalChartDSL.g:94:7: ( '(' )
+            // InternalChartDSL.g:94:9: '('
+            {
+            match('('); 
+
+            }
+
+            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;
+            // InternalChartDSL.g:95:7: ( ')' )
+            // InternalChartDSL.g:95:9: ')'
+            {
+            match(')'); 
+
+            }
+
+            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;
+            // InternalChartDSL.g:96:7: ( ',' )
+            // InternalChartDSL.g:96:9: ','
+            {
+            match(','); 
+
+            }
+
+            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;
+            // InternalChartDSL.g:97:7: ( ']' )
+            // InternalChartDSL.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;
+            // InternalChartDSL.g:98:8: ( '#' )
+            // InternalChartDSL.g:98:10: '#'
+            {
+            match('#'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__100"
+
+    // $ANTLR start "T__101"
+    public final void mT__101() throws RecognitionException {
+        try {
+            int _type = T__101;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:99:8: ( '[' )
+            // InternalChartDSL.g:99:10: '['
+            {
+            match('['); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__101"
+
+    // $ANTLR start "T__102"
+    public final void mT__102() throws RecognitionException {
+        try {
+            int _type = T__102;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:100:8: ( 'instanceof' )
+            // InternalChartDSL.g:100:10: 'instanceof'
+            {
+            match("instanceof"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:101:8: ( 'if' )
+            // InternalChartDSL.g:101:10: 'if'
+            {
+            match("if"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:102:8: ( 'else' )
+            // InternalChartDSL.g:102:10: 'else'
+            {
+            match("else"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:103:8: ( 'switch' )
+            // InternalChartDSL.g:103:10: 'switch'
+            {
+            match("switch"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:104:8: ( ':' )
+            // InternalChartDSL.g:104:10: ':'
+            {
+            match(':'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__106"
+
+    // $ANTLR start "T__107"
+    public final void mT__107() throws RecognitionException {
+        try {
+            int _type = T__107;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:105:8: ( 'default' )
+            // InternalChartDSL.g:105:10: 'default'
+            {
+            match("default"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:106:8: ( 'case' )
+            // InternalChartDSL.g:106:10: 'case'
+            {
+            match("case"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:107:8: ( 'for' )
+            // InternalChartDSL.g:107:10: 'for'
+            {
+            match("for"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:108:8: ( 'while' )
+            // InternalChartDSL.g:108:10: 'while'
+            {
+            match("while"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:109:8: ( 'do' )
+            // InternalChartDSL.g:109:10: 'do'
+            {
+            match("do"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:110:8: ( 'new' )
+            // InternalChartDSL.g:110:10: 'new'
+            {
+            match("new"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:111:8: ( 'null' )
+            // InternalChartDSL.g:111:10: 'null'
+            {
+            match("null"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:112:8: ( 'typeof' )
+            // InternalChartDSL.g:112:10: 'typeof'
+            {
+            match("typeof"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:113:8: ( 'throw' )
+            // InternalChartDSL.g:113:10: 'throw'
+            {
+            match("throw"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:114:8: ( 'return' )
+            // InternalChartDSL.g:114:10: 'return'
+            {
+            match("return"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:115:8: ( 'try' )
+            // InternalChartDSL.g:115:10: 'try'
+            {
+            match("try"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:116:8: ( 'finally' )
+            // InternalChartDSL.g:116:10: 'finally'
+            {
+            match("finally"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:117:8: ( 'synchronized' )
+            // InternalChartDSL.g:117:10: 'synchronized'
+            {
+            match("synchronized"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:118:8: ( 'catch' )
+            // InternalChartDSL.g:118:10: 'catch'
+            {
+            match("catch"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:119:8: ( '?' )
+            // InternalChartDSL.g:119:10: '?'
+            {
+            match('?'); 
+
+            }
+
+            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;
+            // InternalChartDSL.g:120:8: ( '&' )
+            // InternalChartDSL.g:120:10: '&'
+            {
+            match('&'); 
+
+            }
+
+            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;
+            // InternalChartDSL.g:121:8: ( 'describedBy' )
+            // InternalChartDSL.g:121:10: 'describedBy'
+            {
+            match("describedBy"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:122:8: ( 'polling' )
+            // InternalChartDSL.g:122:10: 'polling'
+            {
+            match("polling"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:123:8: ( 'selectById' )
+            // InternalChartDSL.g:123:10: 'selectById'
+            {
+            match("selectById"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:124:8: ( 'shaded' )
+            // InternalChartDSL.g:124:10: 'shaded'
+            {
+            match("shaded"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:125:8: ( 'animated' )
+            // InternalChartDSL.g:125:10: 'animated'
+            {
+            match("animated"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:126:8: ( 'swapped' )
+            // InternalChartDSL.g:126:10: 'swapped'
+            {
+            match("swapped"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:127:8: ( 'stacked' )
+            // InternalChartDSL.g:127:10: 'stacked'
+            {
+            match("stacked"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:128:8: ( 'showMarker' )
+            // InternalChartDSL.g:128:10: 'showMarker'
+            {
+            match("showMarker"); 
+
+
+            }
+
+            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;
+            // InternalChartDSL.g:129:8: ( 'trendLine' )
+            // InternalChartDSL.g:129:10: 'trendLine'
+            {
+            match("trendLine"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__131"
+
+    // $ANTLR start "T__132"
+    public final void mT__132() throws RecognitionException {
+        try {
+            int _type = T__132;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:130:8: ( 'cursor' )
+            // InternalChartDSL.g:130:10: 'cursor'
+            {
+            match("cursor"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__132"
+
+    // $ANTLR start "T__133"
+    public final void mT__133() throws RecognitionException {
+        try {
+            int _type = T__133;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:131:8: ( 'zoom' )
+            // InternalChartDSL.g:131:10: 'zoom'
+            {
+            match("zoom"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__133"
+
+    // $ANTLR start "T__134"
+    public final void mT__134() throws RecognitionException {
+        try {
+            int _type = T__134;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:132:8: ( 'fillZero' )
+            // InternalChartDSL.g:132:10: 'fillZero'
+            {
+            match("fillZero"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__134"
+
+    // $ANTLR start "T__135"
+    public final void mT__135() throws RecognitionException {
+        try {
+            int _type = T__135;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:133:8: ( 'filled' )
+            // InternalChartDSL.g:133:10: 'filled'
+            {
+            match("filled"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__135"
+
+    // $ANTLR start "T__136"
+    public final void mT__136() throws RecognitionException {
+        try {
+            int _type = T__136;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:134:8: ( 'empty' )
+            // InternalChartDSL.g:134:10: 'empty'
+            {
+            match("empty"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__136"
+
+    // $ANTLR start "T__137"
+    public final void mT__137() throws RecognitionException {
+        try {
+            int _type = T__137;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:135:8: ( 'multiplier' )
+            // InternalChartDSL.g:135:10: 'multiplier'
+            {
+            match("multiplier"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__137"
+
+    // $ANTLR start "T__138"
+    public final void mT__138() throws RecognitionException {
+        try {
+            int _type = T__138;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:136:8: ( 'gradient' )
+            // InternalChartDSL.g:136:10: 'gradient'
+            {
+            match("gradient"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__138"
+
+    // $ANTLR start "T__139"
+    public final void mT__139() throws RecognitionException {
+        try {
+            int _type = T__139;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:137:8: ( 'transparent' )
+            // InternalChartDSL.g:137:10: 'transparent'
+            {
+            match("transparent"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__139"
+
+    // $ANTLR start "T__140"
+    public final void mT__140() throws RecognitionException {
+        try {
+            int _type = T__140;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:138:8: ( 'label' )
+            // InternalChartDSL.g:138:10: 'label'
+            {
+            match("label"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__140"
+
+    // $ANTLR start "T__141"
+    public final void mT__141() throws RecognitionException {
+        try {
+            int _type = T__141;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:139:8: ( 'hasTicks' )
+            // InternalChartDSL.g:139:10: 'hasTicks'
+            {
+            match("hasTicks"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__141"
+
+    // $ANTLR start "T__142"
+    public final void mT__142() throws RecognitionException {
+        try {
+            int _type = T__142;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:140:8: ( 'intervals' )
+            // InternalChartDSL.g:140:10: 'intervals'
+            {
+            match("intervals"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__142"
+
+    // $ANTLR start "T__143"
+    public final void mT__143() throws RecognitionException {
+        try {
+            int _type = T__143;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:141:8: ( 'map' )
+            // InternalChartDSL.g:141:10: 'map'
+            {
+            match("map"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__143"
+
+    // $ANTLR start "T__144"
+    public final void mT__144() throws RecognitionException {
+        try {
+            int _type = T__144;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:142:8: ( 'collapsible' )
+            // InternalChartDSL.g:142:10: 'collapsible'
+            {
+            match("collapsible"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__144"
+
+    // $ANTLR start "T__145"
+    public final void mT__145() throws RecognitionException {
+        try {
+            int _type = T__145;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:143:8: ( 'toggle' )
+            // InternalChartDSL.g:143:10: 'toggle'
+            {
+            match("toggle"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__145"
+
+    // $ANTLR start "T__146"
+    public final void mT__146() throws RecognitionException {
+        try {
+            int _type = T__146;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:144:8: ( 'replot' )
+            // InternalChartDSL.g:144:10: 'replot'
+            {
+            match("replot"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__146"
+
+    // $ANTLR start "T__147"
+    public final void mT__147() throws RecognitionException {
+        try {
+            int _type = T__147;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:145:8: ( 'always' )
+            // InternalChartDSL.g:145:10: 'always'
+            {
+            match("always"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__147"
+
+    // $ANTLR start "T__148"
+    public final void mT__148() throws RecognitionException {
+        try {
+            int _type = T__148;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:146:8: ( 'shortLabel' )
+            // InternalChartDSL.g:146:10: 'shortLabel'
+            {
+            match("shortLabel"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__148"
+
+    // $ANTLR start "T__149"
+    public final void mT__149() throws RecognitionException {
+        try {
+            int _type = T__149;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:147:8: ( 'ns' )
+            // InternalChartDSL.g:147:10: 'ns'
+            {
+            match("ns"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__149"
+
+    // $ANTLR start "T__150"
+    public final void mT__150() throws RecognitionException {
+        try {
+            int _type = T__150;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:148:8: ( '::' )
+            // InternalChartDSL.g:148:10: '::'
+            {
+            match("::"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__150"
+
+    // $ANTLR start "T__151"
+    public final void mT__151() throws RecognitionException {
+        try {
+            int _type = T__151;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:149:8: ( '?.' )
+            // InternalChartDSL.g:149:10: '?.'
+            {
+            match("?."); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__151"
+
+    // $ANTLR start "T__152"
+    public final void mT__152() throws RecognitionException {
+        try {
+            int _type = T__152;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:150:8: ( '|' )
+            // InternalChartDSL.g:150:10: '|'
+            {
+            match('|'); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__152"
+
+    // $ANTLR start "T__153"
+    public final void mT__153() throws RecognitionException {
+        try {
+            int _type = T__153;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:151:8: ( 'var' )
+            // InternalChartDSL.g:151:10: 'var'
+            {
+            match("var"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__153"
+
+    // $ANTLR start "T__154"
+    public final void mT__154() throws RecognitionException {
+        try {
+            int _type = T__154;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:152:8: ( 'true' )
+            // InternalChartDSL.g:152:10: 'true'
+            {
+            match("true"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__154"
+
+    // $ANTLR start "RULE_HEX"
+    public final void mRULE_HEX() throws RecognitionException {
+        try {
+            int _type = RULE_HEX;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:23568:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // InternalChartDSL.g:23568:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            {
+            // InternalChartDSL.g:23568: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 :
+                    // InternalChartDSL.g:23568:13: '0x'
+                    {
+                    match("0x"); 
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:23568:18: '0X'
+                    {
+                    match("0X"); 
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalChartDSL.g:23568: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 :
+            	    // InternalChartDSL.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);
+
+            // InternalChartDSL.g:23568: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 :
+                    // InternalChartDSL.g:23568:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    {
+                    match('#'); 
+                    // InternalChartDSL.g:23568: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 :
+                            // InternalChartDSL.g:23568: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 :
+                            // InternalChartDSL.g:23568: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;
+            // InternalChartDSL.g:23570:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // InternalChartDSL.g:23570:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            {
+            matchRange('0','9'); 
+            // InternalChartDSL.g:23570: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 :
+            	    // InternalChartDSL.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;
+            // InternalChartDSL.g:23572:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // InternalChartDSL.g:23572:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            {
+            mRULE_INT(); 
+            // InternalChartDSL.g:23572: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 :
+                    // InternalChartDSL.g:23572: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;}
+
+                    // InternalChartDSL.g:23572:36: ( '+' | '-' )?
+                    int alt6=2;
+                    int LA6_0 = input.LA(1);
+
+                    if ( (LA6_0=='+'||LA6_0=='-') ) {
+                        alt6=1;
+                    }
+                    switch (alt6) {
+                        case 1 :
+                            // InternalChartDSL.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;
+
+            }
+
+            // InternalChartDSL.g:23572: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 :
+                    // InternalChartDSL.g:23572: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 :
+                    // InternalChartDSL.g:23572: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;
+            // InternalChartDSL.g:23574:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // InternalChartDSL.g:23574:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            {
+            // InternalChartDSL.g:23574:11: ( '^' )?
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0=='^') ) {
+                alt9=1;
+            }
+            switch (alt9) {
+                case 1 :
+                    // InternalChartDSL.g:23574: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;}
+
+            // InternalChartDSL.g:23574: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 :
+            	    // InternalChartDSL.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;
+            // InternalChartDSL.g:23576:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // InternalChartDSL.g:23576:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            {
+            // InternalChartDSL.g:23576: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 :
+                    // InternalChartDSL.g:23576:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    {
+                    match('\"'); 
+                    // InternalChartDSL.g:23576: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 :
+                    	    // InternalChartDSL.g:23576:21: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // InternalChartDSL.g:23576: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);
+
+                    // InternalChartDSL.g:23576:44: ( '\"' )?
+                    int alt12=2;
+                    int LA12_0 = input.LA(1);
+
+                    if ( (LA12_0=='\"') ) {
+                        alt12=1;
+                    }
+                    switch (alt12) {
+                        case 1 :
+                            // InternalChartDSL.g:23576:44: '\"'
+                            {
+                            match('\"'); 
+
+                            }
+                            break;
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:23576:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    {
+                    match('\''); 
+                    // InternalChartDSL.g:23576: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 :
+                    	    // InternalChartDSL.g:23576:55: '\\\\' .
+                    	    {
+                    	    match('\\'); 
+                    	    matchAny(); 
+
+                    	    }
+                    	    break;
+                    	case 2 :
+                    	    // InternalChartDSL.g:23576: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);
+
+                    // InternalChartDSL.g:23576:79: ( '\\'' )?
+                    int alt14=2;
+                    int LA14_0 = input.LA(1);
+
+                    if ( (LA14_0=='\'') ) {
+                        alt14=1;
+                    }
+                    switch (alt14) {
+                        case 1 :
+                            // InternalChartDSL.g:23576: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;
+            // InternalChartDSL.g:23578:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalChartDSL.g:23578:19: '/*' ( options {greedy=false; } : . )* '*/'
+            {
+            match("/*"); 
+
+            // InternalChartDSL.g:23578: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 :
+            	    // InternalChartDSL.g:23578: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;
+            // InternalChartDSL.g:23580:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalChartDSL.g:23580:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            {
+            match("//"); 
+
+            // InternalChartDSL.g:23580: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 :
+            	    // InternalChartDSL.g:23580: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);
+
+            // InternalChartDSL.g:23580: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 :
+                    // InternalChartDSL.g:23580:41: ( '\\r' )? '\\n'
+                    {
+                    // InternalChartDSL.g:23580:41: ( '\\r' )?
+                    int alt18=2;
+                    int LA18_0 = input.LA(1);
+
+                    if ( (LA18_0=='\r') ) {
+                        alt18=1;
+                    }
+                    switch (alt18) {
+                        case 1 :
+                            // InternalChartDSL.g:23580: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;
+            // InternalChartDSL.g:23582:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalChartDSL.g:23582:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            {
+            // InternalChartDSL.g:23582: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 :
+            	    // InternalChartDSL.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;
+            // InternalChartDSL.g:23584:16: ( . )
+            // InternalChartDSL.g:23584:18: .
+            {
+            matchAny(); 
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "RULE_ANY_OTHER"
+
+    public void mTokens() throws RecognitionException {
+        // InternalChartDSL.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=151;
+        alt21 = dfa21.predict(input);
+        switch (alt21) {
+            case 1 :
+                // InternalChartDSL.g:1:10: T__13
+                {
+                mT__13(); 
+
+                }
+                break;
+            case 2 :
+                // InternalChartDSL.g:1:16: T__14
+                {
+                mT__14(); 
+
+                }
+                break;
+            case 3 :
+                // InternalChartDSL.g:1:22: T__15
+                {
+                mT__15(); 
+
+                }
+                break;
+            case 4 :
+                // InternalChartDSL.g:1:28: T__16
+                {
+                mT__16(); 
+
+                }
+                break;
+            case 5 :
+                // InternalChartDSL.g:1:34: T__17
+                {
+                mT__17(); 
+
+                }
+                break;
+            case 6 :
+                // InternalChartDSL.g:1:40: T__18
+                {
+                mT__18(); 
+
+                }
+                break;
+            case 7 :
+                // InternalChartDSL.g:1:46: T__19
+                {
+                mT__19(); 
+
+                }
+                break;
+            case 8 :
+                // InternalChartDSL.g:1:52: T__20
+                {
+                mT__20(); 
+
+                }
+                break;
+            case 9 :
+                // InternalChartDSL.g:1:58: T__21
+                {
+                mT__21(); 
+
+                }
+                break;
+            case 10 :
+                // InternalChartDSL.g:1:64: T__22
+                {
+                mT__22(); 
+
+                }
+                break;
+            case 11 :
+                // InternalChartDSL.g:1:70: T__23
+                {
+                mT__23(); 
+
+                }
+                break;
+            case 12 :
+                // InternalChartDSL.g:1:76: T__24
+                {
+                mT__24(); 
+
+                }
+                break;
+            case 13 :
+                // InternalChartDSL.g:1:82: T__25
+                {
+                mT__25(); 
+
+                }
+                break;
+            case 14 :
+                // InternalChartDSL.g:1:88: T__26
+                {
+                mT__26(); 
+
+                }
+                break;
+            case 15 :
+                // InternalChartDSL.g:1:94: T__27
+                {
+                mT__27(); 
+
+                }
+                break;
+            case 16 :
+                // InternalChartDSL.g:1:100: T__28
+                {
+                mT__28(); 
+
+                }
+                break;
+            case 17 :
+                // InternalChartDSL.g:1:106: T__29
+                {
+                mT__29(); 
+
+                }
+                break;
+            case 18 :
+                // InternalChartDSL.g:1:112: T__30
+                {
+                mT__30(); 
+
+                }
+                break;
+            case 19 :
+                // InternalChartDSL.g:1:118: T__31
+                {
+                mT__31(); 
+
+                }
+                break;
+            case 20 :
+                // InternalChartDSL.g:1:124: T__32
+                {
+                mT__32(); 
+
+                }
+                break;
+            case 21 :
+                // InternalChartDSL.g:1:130: T__33
+                {
+                mT__33(); 
+
+                }
+                break;
+            case 22 :
+                // InternalChartDSL.g:1:136: T__34
+                {
+                mT__34(); 
+
+                }
+                break;
+            case 23 :
+                // InternalChartDSL.g:1:142: T__35
+                {
+                mT__35(); 
+
+                }
+                break;
+            case 24 :
+                // InternalChartDSL.g:1:148: T__36
+                {
+                mT__36(); 
+
+                }
+                break;
+            case 25 :
+                // InternalChartDSL.g:1:154: T__37
+                {
+                mT__37(); 
+
+                }
+                break;
+            case 26 :
+                // InternalChartDSL.g:1:160: T__38
+                {
+                mT__38(); 
+
+                }
+                break;
+            case 27 :
+                // InternalChartDSL.g:1:166: T__39
+                {
+                mT__39(); 
+
+                }
+                break;
+            case 28 :
+                // InternalChartDSL.g:1:172: T__40
+                {
+                mT__40(); 
+
+                }
+                break;
+            case 29 :
+                // InternalChartDSL.g:1:178: T__41
+                {
+                mT__41(); 
+
+                }
+                break;
+            case 30 :
+                // InternalChartDSL.g:1:184: T__42
+                {
+                mT__42(); 
+
+                }
+                break;
+            case 31 :
+                // InternalChartDSL.g:1:190: T__43
+                {
+                mT__43(); 
+
+                }
+                break;
+            case 32 :
+                // InternalChartDSL.g:1:196: T__44
+                {
+                mT__44(); 
+
+                }
+                break;
+            case 33 :
+                // InternalChartDSL.g:1:202: T__45
+                {
+                mT__45(); 
+
+                }
+                break;
+            case 34 :
+                // InternalChartDSL.g:1:208: T__46
+                {
+                mT__46(); 
+
+                }
+                break;
+            case 35 :
+                // InternalChartDSL.g:1:214: T__47
+                {
+                mT__47(); 
+
+                }
+                break;
+            case 36 :
+                // InternalChartDSL.g:1:220: T__48
+                {
+                mT__48(); 
+
+                }
+                break;
+            case 37 :
+                // InternalChartDSL.g:1:226: T__49
+                {
+                mT__49(); 
+
+                }
+                break;
+            case 38 :
+                // InternalChartDSL.g:1:232: T__50
+                {
+                mT__50(); 
+
+                }
+                break;
+            case 39 :
+                // InternalChartDSL.g:1:238: T__51
+                {
+                mT__51(); 
+
+                }
+                break;
+            case 40 :
+                // InternalChartDSL.g:1:244: T__52
+                {
+                mT__52(); 
+
+                }
+                break;
+            case 41 :
+                // InternalChartDSL.g:1:250: T__53
+                {
+                mT__53(); 
+
+                }
+                break;
+            case 42 :
+                // InternalChartDSL.g:1:256: T__54
+                {
+                mT__54(); 
+
+                }
+                break;
+            case 43 :
+                // InternalChartDSL.g:1:262: T__55
+                {
+                mT__55(); 
+
+                }
+                break;
+            case 44 :
+                // InternalChartDSL.g:1:268: T__56
+                {
+                mT__56(); 
+
+                }
+                break;
+            case 45 :
+                // InternalChartDSL.g:1:274: T__57
+                {
+                mT__57(); 
+
+                }
+                break;
+            case 46 :
+                // InternalChartDSL.g:1:280: T__58
+                {
+                mT__58(); 
+
+                }
+                break;
+            case 47 :
+                // InternalChartDSL.g:1:286: T__59
+                {
+                mT__59(); 
+
+                }
+                break;
+            case 48 :
+                // InternalChartDSL.g:1:292: T__60
+                {
+                mT__60(); 
+
+                }
+                break;
+            case 49 :
+                // InternalChartDSL.g:1:298: T__61
+                {
+                mT__61(); 
+
+                }
+                break;
+            case 50 :
+                // InternalChartDSL.g:1:304: T__62
+                {
+                mT__62(); 
+
+                }
+                break;
+            case 51 :
+                // InternalChartDSL.g:1:310: T__63
+                {
+                mT__63(); 
+
+                }
+                break;
+            case 52 :
+                // InternalChartDSL.g:1:316: T__64
+                {
+                mT__64(); 
+
+                }
+                break;
+            case 53 :
+                // InternalChartDSL.g:1:322: T__65
+                {
+                mT__65(); 
+
+                }
+                break;
+            case 54 :
+                // InternalChartDSL.g:1:328: T__66
+                {
+                mT__66(); 
+
+                }
+                break;
+            case 55 :
+                // InternalChartDSL.g:1:334: T__67
+                {
+                mT__67(); 
+
+                }
+                break;
+            case 56 :
+                // InternalChartDSL.g:1:340: T__68
+                {
+                mT__68(); 
+
+                }
+                break;
+            case 57 :
+                // InternalChartDSL.g:1:346: T__69
+                {
+                mT__69(); 
+
+                }
+                break;
+            case 58 :
+                // InternalChartDSL.g:1:352: T__70
+                {
+                mT__70(); 
+
+                }
+                break;
+            case 59 :
+                // InternalChartDSL.g:1:358: T__71
+                {
+                mT__71(); 
+
+                }
+                break;
+            case 60 :
+                // InternalChartDSL.g:1:364: T__72
+                {
+                mT__72(); 
+
+                }
+                break;
+            case 61 :
+                // InternalChartDSL.g:1:370: T__73
+                {
+                mT__73(); 
+
+                }
+                break;
+            case 62 :
+                // InternalChartDSL.g:1:376: T__74
+                {
+                mT__74(); 
+
+                }
+                break;
+            case 63 :
+                // InternalChartDSL.g:1:382: T__75
+                {
+                mT__75(); 
+
+                }
+                break;
+            case 64 :
+                // InternalChartDSL.g:1:388: T__76
+                {
+                mT__76(); 
+
+                }
+                break;
+            case 65 :
+                // InternalChartDSL.g:1:394: T__77
+                {
+                mT__77(); 
+
+                }
+                break;
+            case 66 :
+                // InternalChartDSL.g:1:400: T__78
+                {
+                mT__78(); 
+
+                }
+                break;
+            case 67 :
+                // InternalChartDSL.g:1:406: T__79
+                {
+                mT__79(); 
+
+                }
+                break;
+            case 68 :
+                // InternalChartDSL.g:1:412: T__80
+                {
+                mT__80(); 
+
+                }
+                break;
+            case 69 :
+                // InternalChartDSL.g:1:418: T__81
+                {
+                mT__81(); 
+
+                }
+                break;
+            case 70 :
+                // InternalChartDSL.g:1:424: T__82
+                {
+                mT__82(); 
+
+                }
+                break;
+            case 71 :
+                // InternalChartDSL.g:1:430: T__83
+                {
+                mT__83(); 
+
+                }
+                break;
+            case 72 :
+                // InternalChartDSL.g:1:436: T__84
+                {
+                mT__84(); 
+
+                }
+                break;
+            case 73 :
+                // InternalChartDSL.g:1:442: T__85
+                {
+                mT__85(); 
+
+                }
+                break;
+            case 74 :
+                // InternalChartDSL.g:1:448: T__86
+                {
+                mT__86(); 
+
+                }
+                break;
+            case 75 :
+                // InternalChartDSL.g:1:454: T__87
+                {
+                mT__87(); 
+
+                }
+                break;
+            case 76 :
+                // InternalChartDSL.g:1:460: T__88
+                {
+                mT__88(); 
+
+                }
+                break;
+            case 77 :
+                // InternalChartDSL.g:1:466: T__89
+                {
+                mT__89(); 
+
+                }
+                break;
+            case 78 :
+                // InternalChartDSL.g:1:472: T__90
+                {
+                mT__90(); 
+
+                }
+                break;
+            case 79 :
+                // InternalChartDSL.g:1:478: T__91
+                {
+                mT__91(); 
+
+                }
+                break;
+            case 80 :
+                // InternalChartDSL.g:1:484: T__92
+                {
+                mT__92(); 
+
+                }
+                break;
+            case 81 :
+                // InternalChartDSL.g:1:490: T__93
+                {
+                mT__93(); 
+
+                }
+                break;
+            case 82 :
+                // InternalChartDSL.g:1:496: T__94
+                {
+                mT__94(); 
+
+                }
+                break;
+            case 83 :
+                // InternalChartDSL.g:1:502: T__95
+                {
+                mT__95(); 
+
+                }
+                break;
+            case 84 :
+                // InternalChartDSL.g:1:508: T__96
+                {
+                mT__96(); 
+
+                }
+                break;
+            case 85 :
+                // InternalChartDSL.g:1:514: T__97
+                {
+                mT__97(); 
+
+                }
+                break;
+            case 86 :
+                // InternalChartDSL.g:1:520: T__98
+                {
+                mT__98(); 
+
+                }
+                break;
+            case 87 :
+                // InternalChartDSL.g:1:526: T__99
+                {
+                mT__99(); 
+
+                }
+                break;
+            case 88 :
+                // InternalChartDSL.g:1:532: T__100
+                {
+                mT__100(); 
+
+                }
+                break;
+            case 89 :
+                // InternalChartDSL.g:1:539: T__101
+                {
+                mT__101(); 
+
+                }
+                break;
+            case 90 :
+                // InternalChartDSL.g:1:546: T__102
+                {
+                mT__102(); 
+
+                }
+                break;
+            case 91 :
+                // InternalChartDSL.g:1:553: T__103
+                {
+                mT__103(); 
+
+                }
+                break;
+            case 92 :
+                // InternalChartDSL.g:1:560: T__104
+                {
+                mT__104(); 
+
+                }
+                break;
+            case 93 :
+                // InternalChartDSL.g:1:567: T__105
+                {
+                mT__105(); 
+
+                }
+                break;
+            case 94 :
+                // InternalChartDSL.g:1:574: T__106
+                {
+                mT__106(); 
+
+                }
+                break;
+            case 95 :
+                // InternalChartDSL.g:1:581: T__107
+                {
+                mT__107(); 
+
+                }
+                break;
+            case 96 :
+                // InternalChartDSL.g:1:588: T__108
+                {
+                mT__108(); 
+
+                }
+                break;
+            case 97 :
+                // InternalChartDSL.g:1:595: T__109
+                {
+                mT__109(); 
+
+                }
+                break;
+            case 98 :
+                // InternalChartDSL.g:1:602: T__110
+                {
+                mT__110(); 
+
+                }
+                break;
+            case 99 :
+                // InternalChartDSL.g:1:609: T__111
+                {
+                mT__111(); 
+
+                }
+                break;
+            case 100 :
+                // InternalChartDSL.g:1:616: T__112
+                {
+                mT__112(); 
+
+                }
+                break;
+            case 101 :
+                // InternalChartDSL.g:1:623: T__113
+                {
+                mT__113(); 
+
+                }
+                break;
+            case 102 :
+                // InternalChartDSL.g:1:630: T__114
+                {
+                mT__114(); 
+
+                }
+                break;
+            case 103 :
+                // InternalChartDSL.g:1:637: T__115
+                {
+                mT__115(); 
+
+                }
+                break;
+            case 104 :
+                // InternalChartDSL.g:1:644: T__116
+                {
+                mT__116(); 
+
+                }
+                break;
+            case 105 :
+                // InternalChartDSL.g:1:651: T__117
+                {
+                mT__117(); 
+
+                }
+                break;
+            case 106 :
+                // InternalChartDSL.g:1:658: T__118
+                {
+                mT__118(); 
+
+                }
+                break;
+            case 107 :
+                // InternalChartDSL.g:1:665: T__119
+                {
+                mT__119(); 
+
+                }
+                break;
+            case 108 :
+                // InternalChartDSL.g:1:672: T__120
+                {
+                mT__120(); 
+
+                }
+                break;
+            case 109 :
+                // InternalChartDSL.g:1:679: T__121
+                {
+                mT__121(); 
+
+                }
+                break;
+            case 110 :
+                // InternalChartDSL.g:1:686: T__122
+                {
+                mT__122(); 
+
+                }
+                break;
+            case 111 :
+                // InternalChartDSL.g:1:693: T__123
+                {
+                mT__123(); 
+
+                }
+                break;
+            case 112 :
+                // InternalChartDSL.g:1:700: T__124
+                {
+                mT__124(); 
+
+                }
+                break;
+            case 113 :
+                // InternalChartDSL.g:1:707: T__125
+                {
+                mT__125(); 
+
+                }
+                break;
+            case 114 :
+                // InternalChartDSL.g:1:714: T__126
+                {
+                mT__126(); 
+
+                }
+                break;
+            case 115 :
+                // InternalChartDSL.g:1:721: T__127
+                {
+                mT__127(); 
+
+                }
+                break;
+            case 116 :
+                // InternalChartDSL.g:1:728: T__128
+                {
+                mT__128(); 
+
+                }
+                break;
+            case 117 :
+                // InternalChartDSL.g:1:735: T__129
+                {
+                mT__129(); 
+
+                }
+                break;
+            case 118 :
+                // InternalChartDSL.g:1:742: T__130
+                {
+                mT__130(); 
+
+                }
+                break;
+            case 119 :
+                // InternalChartDSL.g:1:749: T__131
+                {
+                mT__131(); 
+
+                }
+                break;
+            case 120 :
+                // InternalChartDSL.g:1:756: T__132
+                {
+                mT__132(); 
+
+                }
+                break;
+            case 121 :
+                // InternalChartDSL.g:1:763: T__133
+                {
+                mT__133(); 
+
+                }
+                break;
+            case 122 :
+                // InternalChartDSL.g:1:770: T__134
+                {
+                mT__134(); 
+
+                }
+                break;
+            case 123 :
+                // InternalChartDSL.g:1:777: T__135
+                {
+                mT__135(); 
+
+                }
+                break;
+            case 124 :
+                // InternalChartDSL.g:1:784: T__136
+                {
+                mT__136(); 
+
+                }
+                break;
+            case 125 :
+                // InternalChartDSL.g:1:791: T__137
+                {
+                mT__137(); 
+
+                }
+                break;
+            case 126 :
+                // InternalChartDSL.g:1:798: T__138
+                {
+                mT__138(); 
+
+                }
+                break;
+            case 127 :
+                // InternalChartDSL.g:1:805: T__139
+                {
+                mT__139(); 
+
+                }
+                break;
+            case 128 :
+                // InternalChartDSL.g:1:812: T__140
+                {
+                mT__140(); 
+
+                }
+                break;
+            case 129 :
+                // InternalChartDSL.g:1:819: T__141
+                {
+                mT__141(); 
+
+                }
+                break;
+            case 130 :
+                // InternalChartDSL.g:1:826: T__142
+                {
+                mT__142(); 
+
+                }
+                break;
+            case 131 :
+                // InternalChartDSL.g:1:833: T__143
+                {
+                mT__143(); 
+
+                }
+                break;
+            case 132 :
+                // InternalChartDSL.g:1:840: T__144
+                {
+                mT__144(); 
+
+                }
+                break;
+            case 133 :
+                // InternalChartDSL.g:1:847: T__145
+                {
+                mT__145(); 
+
+                }
+                break;
+            case 134 :
+                // InternalChartDSL.g:1:854: T__146
+                {
+                mT__146(); 
+
+                }
+                break;
+            case 135 :
+                // InternalChartDSL.g:1:861: T__147
+                {
+                mT__147(); 
+
+                }
+                break;
+            case 136 :
+                // InternalChartDSL.g:1:868: T__148
+                {
+                mT__148(); 
+
+                }
+                break;
+            case 137 :
+                // InternalChartDSL.g:1:875: T__149
+                {
+                mT__149(); 
+
+                }
+                break;
+            case 138 :
+                // InternalChartDSL.g:1:882: T__150
+                {
+                mT__150(); 
+
+                }
+                break;
+            case 139 :
+                // InternalChartDSL.g:1:889: T__151
+                {
+                mT__151(); 
+
+                }
+                break;
+            case 140 :
+                // InternalChartDSL.g:1:896: T__152
+                {
+                mT__152(); 
+
+                }
+                break;
+            case 141 :
+                // InternalChartDSL.g:1:903: T__153
+                {
+                mT__153(); 
+
+                }
+                break;
+            case 142 :
+                // InternalChartDSL.g:1:910: T__154
+                {
+                mT__154(); 
+
+                }
+                break;
+            case 143 :
+                // InternalChartDSL.g:1:917: RULE_HEX
+                {
+                mRULE_HEX(); 
+
+                }
+                break;
+            case 144 :
+                // InternalChartDSL.g:1:926: RULE_INT
+                {
+                mRULE_INT(); 
+
+                }
+                break;
+            case 145 :
+                // InternalChartDSL.g:1:935: RULE_DECIMAL
+                {
+                mRULE_DECIMAL(); 
+
+                }
+                break;
+            case 146 :
+                // InternalChartDSL.g:1:948: RULE_ID
+                {
+                mRULE_ID(); 
+
+                }
+                break;
+            case 147 :
+                // InternalChartDSL.g:1:956: RULE_STRING
+                {
+                mRULE_STRING(); 
+
+                }
+                break;
+            case 148 :
+                // InternalChartDSL.g:1:968: RULE_ML_COMMENT
+                {
+                mRULE_ML_COMMENT(); 
+
+                }
+                break;
+            case 149 :
+                // InternalChartDSL.g:1:984: RULE_SL_COMMENT
+                {
+                mRULE_SL_COMMENT(); 
+
+                }
+                break;
+            case 150 :
+                // InternalChartDSL.g:1:1000: RULE_WS
+                {
+                mRULE_WS(); 
+
+                }
+                break;
+            case 151 :
+                // InternalChartDSL.g:1:1008: RULE_ANY_OTHER
+                {
+                mRULE_ANY_OTHER(); 
+
+                }
+                break;
+
+        }
+
+    }
+
+
+    protected DFA21 dfa21 = new DFA21(this);
+    static final String DFA21_eotS =
+        "\1\uffff\1\70\1\72\1\74\1\77\1\103\1\106\1\112\1\114\1\116\1\120\1\122\1\124\1\127\14\131\2\uffff\7\131\10\uffff\1\u009f\2\131\2\u00a4\1\65\5\uffff\1\u00a9\26\uffff\1\u00ab\5\uffff\1\u00ad\4\uffff\1\131\1\uffff\16\131\1\u00c2\7\131\1\u00cc\13\131\1\u00da\5\131\2\uffff\1\u00e1\21\131\12\uffff\2\131\1\uffff\1\u00a4\12\uffff\1\u00fd\1\u00fe\22\131\1\uffff\2\131\1\u0116\4\131\1\u011c\1\131\1\uffff\15\131\1\uffff\4\131\1\u0131\1\131\1\uffff\6\131\1\u0139\5\131\1\u013f\2\131\1\u0143\13\131\2\uffff\1\131\1\u0150\1\u0151\4\131\1\u0156\16\131\1\u0165\1\uffff\5\131\1\uffff\1\u016c\1\u016d\3\131\1\u0171\3\131\1\u0176\3\131\1\u017a\6\131\1\uffff\1\131\1\u0182\4\131\1\u0187\1\uffff\5\131\1\uffff\1\131\1\u018e\1\131\1\uffff\1\131\1\u0191\7\131\1\u0199\2\131\2\uffff\1\u019d\2\131\1\u01a0\1\uffff\1\u01a2\14\131\1\u01af\1\uffff\5\131\1\u01b6\2\uffff\1\u01b7\1\131\1\u01b9\1\uffff\1\u01ba\3\131\1\uffff\2\131\1\u01c0\1\uffff\1\131\1\u01c2\5\131\1\uffff\1\u01c8\2\131\1\u01cb\1\uffff\1\131\1\u01cd\4\131\1\uffff\2\131\1\uffff\3\131\1\u01d7\3\131\1\uffff\3\131\1\uffff\1\u01de\1\131\3\uffff\2\131\1\u01e4\2\131\1\u01e7\2\131\1\u01ea\1\u01ec\2\131\1\uffff\2\131\1\u01f1\1\131\1\u01f3\3\uffff\1\131\2\uffff\1\u01f7\1\131\1\u01f9\1\131\1\u01fb\1\uffff\1\131\1\uffff\5\131\1\uffff\1\131\1\u0203\1\uffff\1\u0204\1\uffff\7\131\1\u020c\1\u020d\1\uffff\1\131\1\u020f\1\u0210\1\131\1\u0212\1\131\1\uffff\1\u0214\2\uffff\2\131\1\uffff\1\u0217\1\131\1\uffff\2\131\3\uffff\2\131\1\u021d\1\131\1\uffff\1\u0220\3\uffff\1\131\1\uffff\1\131\1\uffff\1\131\1\uffff\1\131\1\u0225\1\131\1\u0227\1\u0228\1\u0229\1\131\2\uffff\1\131\1\u022c\1\u022d\3\131\1\u0231\2\uffff\1\u0232\2\uffff\1\131\1\uffff\1\131\1\uffff\2\131\1\uffff\5\131\1\uffff\1\u023c\2\uffff\1\u023d\2\131\1\u0240\1\uffff\1\131\3\uffff\1\u0242\1\u0243\2\uffff\3\131\2\uffff\1\u0247\1\u0248\6\131\1\u024f\2\uffff\2\131\1\uffff\1\131\2\uffff\1\131\1\u0254\1\131\2\uffff\1\131\1\u0257\1\131\1\u0259\1\u025a\1\u025b\1\uffff\3\131\1\u025f\1\uffff\2\131\1\uffff\1\131\3\uffff\1\u0263\1\u0264\1\u0265\1\uffff\1\u0266\1\u0267\1\u0268\6\uffff";
+    static final String DFA21_eofS =
+        "\u0269\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\2\141\1\145\1\146\1\141\1\165\2\145\4\141\2\uffff\1\154\1\160\3\141\1\150\1\145\10\uffff\1\72\1\157\1\141\2\60\1\44\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\154\1\uffff\1\164\2\163\1\160\1\141\1\160\1\157\1\165\1\147\1\141\1\156\1\141\1\160\1\163\1\44\1\154\1\162\1\154\1\164\1\162\1\167\1\154\1\44\1\163\1\151\1\163\1\141\1\162\1\154\1\156\2\147\1\142\1\164\1\44\1\146\1\162\1\143\1\145\1\154\2\uffff\1\44\1\151\1\147\1\167\1\151\1\124\1\162\1\142\1\165\1\141\1\156\1\160\1\154\1\141\1\147\1\160\1\162\1\156\12\uffff\1\157\1\163\1\uffff\1\60\12\uffff\2\44\1\145\1\164\1\145\1\164\1\143\1\145\1\167\1\164\1\155\1\145\1\164\1\160\1\143\1\144\1\162\1\157\1\151\1\145\1\uffff\1\163\1\164\1\44\1\141\1\154\1\163\1\155\1\44\1\154\1\uffff\1\164\1\154\1\143\1\145\1\162\1\163\1\154\1\145\1\141\2\145\1\141\1\165\1\uffff\1\141\1\143\1\141\1\153\1\44\1\154\1\uffff\1\163\1\154\1\155\1\141\1\156\1\157\1\44\1\142\1\147\1\144\2\151\1\44\1\164\1\145\1\44\1\156\1\145\1\154\1\147\1\145\1\157\1\144\1\165\1\154\1\155\1\124\2\uffff\1\156\2\44\1\171\1\151\1\153\1\162\1\44\1\150\1\145\2\143\1\160\1\150\1\145\1\115\1\164\1\162\1\144\1\141\1\162\1\145\1\44\1\uffff\1\154\1\132\1\151\1\141\1\150\1\uffff\2\44\1\145\1\147\1\150\1\44\1\164\1\157\1\141\1\44\1\162\1\156\1\154\1\44\1\155\1\164\1\165\1\162\1\155\1\141\1\uffff\1\151\1\44\1\145\1\141\1\171\1\147\1\44\1\uffff\1\154\1\145\1\151\2\155\1\uffff\1\151\1\44\1\144\1\uffff\1\163\1\44\1\164\1\154\1\157\1\167\1\145\1\162\1\157\1\44\1\151\1\144\2\uffff\1\44\1\143\1\145\1\44\1\uffff\1\44\1\156\1\164\1\150\1\145\1\162\1\144\1\141\1\114\1\164\1\145\1\156\1\166\1\44\1\uffff\1\154\1\145\2\144\1\154\1\44\2\uffff\1\44\1\157\1\44\1\uffff\1\44\1\162\1\160\1\162\1\uffff\1\151\1\144\1\44\1\uffff\1\141\1\44\1\154\2\151\1\147\1\156\1\uffff\1\44\1\164\1\163\1\44\1\uffff\1\145\1\44\1\145\2\165\1\160\1\uffff\1\114\1\160\1\uffff\1\151\1\145\1\146\1\44\1\162\1\156\1\164\1\uffff\1\143\1\163\1\151\1\uffff\1\44\1\144\1\uffff\1\145\1\uffff\1\164\1\102\1\44\1\144\1\157\1\44\1\162\1\141\2\44\1\143\1\141\1\uffff\1\171\1\162\1\44\1\145\1\44\1\145\2\uffff\1\162\2\uffff\1\44\1\163\1\44\1\164\1\44\1\uffff\1\162\1\uffff\1\164\1\142\1\144\1\145\1\147\1\uffff\1\145\1\44\1\uffff\1\44\1\uffff\1\156\2\155\1\154\1\151\1\141\1\160\2\44\1\uffff\1\163\2\44\1\153\1\44\1\157\1\uffff\1\44\2\uffff\1\143\1\171\1\uffff\1\44\1\156\1\uffff\1\153\1\142\3\uffff\1\145\1\154\1\44\1\157\1\uffff\1\44\3\uffff\1\171\1\uffff\1\151\1\uffff\1\150\1\uffff\1\164\1\44\1\145\3\44\1\144\2\uffff\1\164\2\44\1\151\1\156\1\162\1\44\2\uffff\1\44\2\uffff\1\163\1\uffff\1\156\1\uffff\1\157\1\111\1\uffff\1\151\2\145\1\157\1\163\1\uffff\1\44\2\uffff\1\44\1\142\1\155\1\44\1\uffff\1\144\3\uffff\2\44\2\uffff\3\145\2\uffff\2\44\1\154\1\144\1\172\1\162\1\154\1\146\1\44\2\uffff\1\154\1\151\1\uffff\1\102\2\uffff\1\162\1\44\1\156\2\uffff\1\157\1\44\1\145\3\44\1\uffff\1\145\1\143\1\171\1\44\1\uffff\1\164\1\162\1\uffff\1\144\3\uffff\3\44\1\uffff\3\44\6\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\2\165\1\150\1\165\2\157\1\171\2\uffff\1\170\1\163\1\165\1\162\1\165\1\171\1\145\10\uffff\1\72\1\157\1\141\1\170\1\154\1\172\5\uffff\1\75\26\uffff\1\75\5\uffff\1\74\4\uffff\1\162\1\uffff\1\164\2\163\1\160\1\141\1\160\1\157\1\165\1\154\1\151\1\156\1\157\1\160\1\164\1\172\1\163\1\162\1\156\1\164\1\162\1\167\1\154\1\172\1\163\1\151\1\164\1\141\1\162\1\154\1\156\2\147\1\142\1\164\1\172\1\163\1\162\1\143\1\145\1\154\2\uffff\1\172\2\151\1\167\1\151\1\124\1\162\1\142\1\165\1\141\1\156\1\170\1\154\1\171\1\157\1\160\1\162\1\164\12\uffff\1\157\1\163\1\uffff\1\154\12\uffff\2\172\1\145\1\164\1\145\2\164\1\145\1\167\1\164\1\155\1\145\1\164\1\160\1\143\1\144\1\167\1\157\1\164\1\145\1\uffff\1\163\1\164\1\172\1\141\1\154\1\163\1\164\1\172\1\154\1\uffff\1\164\1\154\2\145\1\162\1\163\1\154\1\145\1\141\3\145\1\165\1\uffff\1\141\1\143\1\141\1\153\1\172\1\154\1\uffff\1\163\1\154\1\155\1\141\1\156\1\157\1\172\1\142\1\147\1\144\2\151\1\172\1\164\1\156\1\172\1\156\1\145\1\154\1\147\1\145\1\157\1\144\1\165\1\154\1\155\1\124\2\uffff\1\156\2\172\1\171\1\151\1\153\1\162\1\172\1\150\1\145\2\143\1\160\1\150\1\145\1\115\1\164\1\162\1\144\1\141\1\162\1\145\1\172\1\uffff\1\154\1\145\1\151\1\141\1\150\1\uffff\2\172\1\145\1\147\1\150\1\172\1\164\1\157\1\141\1\172\1\162\1\156\1\154\1\172\1\155\1\164\1\165\1\162\1\155\1\141\1\uffff\1\151\1\172\1\145\1\141\1\171\1\147\1\172\1\uffff\1\154\1\145\1\151\2\155\1\uffff\1\151\1\172\1\144\1\uffff\1\163\1\172\1\164\1\154\1\157\1\167\1\145\1\162\1\157\1\172\1\151\1\163\2\uffff\1\172\1\143\1\145\1\172\1\uffff\1\172\1\156\1\164\1\150\1\145\1\162\1\144\1\141\1\114\1\164\1\145\1\156\1\166\1\172\1\uffff\1\154\1\145\2\144\1\154\1\172\2\uffff\1\172\1\157\1\172\1\uffff\1\172\1\162\1\160\1\162\1\uffff\1\151\1\144\1\172\1\uffff\1\141\1\172\1\154\2\151\1\147\1\156\1\uffff\1\172\1\164\1\163\1\172\1\uffff\1\145\1\172\1\145\2\165\1\160\1\uffff\1\114\1\160\1\uffff\1\151\1\145\1\146\1\172\1\162\1\156\1\164\1\uffff\1\143\1\163\1\151\1\uffff\1\172\1\144\1\uffff\1\167\1\uffff\1\164\1\102\1\172\1\144\1\157\1\172\1\162\1\141\2\172\1\143\1\141\1\uffff\1\171\1\162\1\172\1\145\1\172\1\167\2\uffff\1\162\2\uffff\1\172\1\163\1\172\1\164\1\172\1\uffff\1\162\1\uffff\1\164\1\142\1\144\1\145\1\147\1\uffff\1\145\1\172\1\uffff\1\172\1\uffff\1\156\2\155\1\154\1\151\1\141\1\160\2\172\1\uffff\1\163\2\172\1\153\1\172\1\157\1\uffff\1\172\2\uffff\1\143\1\171\1\uffff\1\172\1\156\1\uffff\1\153\1\142\3\uffff\1\145\1\154\1\172\1\157\1\uffff\1\172\3\uffff\1\171\1\uffff\1\151\1\uffff\1\150\1\uffff\1\164\1\172\1\145\3\172\1\144\2\uffff\1\164\2\172\1\151\1\156\1\162\1\172\2\uffff\1\172\2\uffff\1\163\1\uffff\1\156\1\uffff\1\157\1\111\1\uffff\1\151\2\145\1\157\1\163\1\uffff\1\172\2\uffff\1\172\1\142\1\155\1\172\1\uffff\1\144\3\uffff\2\172\2\uffff\3\145\2\uffff\2\172\1\154\1\144\1\172\1\162\1\154\1\146\1\172\2\uffff\1\154\1\151\1\uffff\1\102\2\uffff\1\162\1\172\1\156\2\uffff\1\157\1\172\1\145\3\172\1\uffff\1\145\1\143\1\171\1\172\1\uffff\1\164\1\162\1\uffff\1\144\3\uffff\3\172\1\uffff\3\172\6\uffff";
+    static final String DFA21_acceptS =
+        "\32\uffff\1\74\1\75\7\uffff\1\122\1\123\1\124\1\125\1\126\1\127\1\130\1\131\6\uffff\1\u0092\2\u0093\1\u0096\1\u0097\1\uffff\1\23\1\1\1\2\1\u008c\1\3\1\156\1\4\1\35\1\26\1\5\1\20\1\36\1\27\1\6\1\31\1\30\1\7\1\u0094\1\u0095\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\u008b\1\155\1\uffff\1\u0092\50\uffff\1\74\1\75\22\uffff\1\122\1\123\1\124\1\125\1\126\1\127\1\130\1\131\1\u008a\1\136\2\uffff\1\u008f\1\uffff\1\u0090\1\u0091\1\u0093\1\u0096\1\13\1\11\1\14\1\12\1\21\1\22\24\uffff\1\133\11\uffff\1\u0089\15\uffff\1\143\6\uffff\1\77\33\uffff\1\40\1\u008d\27\uffff\1\141\5\uffff\1\144\24\uffff\1\103\7\uffff\1\101\5\uffff\1\u0083\3\uffff\1\151\14\uffff\1\60\1\134\4\uffff\1\54\16\uffff\1\55\6\uffff\1\145\1\64\3\uffff\1\140\4\uffff\1\102\3\uffff\1\70\7\uffff\1\116\4\uffff\1\112\6\uffff\1\111\2\uffff\1\u008e\7\uffff\1\171\3\uffff\1\174\2\uffff\1\45\1\uffff\1\62\14\uffff\1\46\6\uffff\1\56\1\142\1\uffff\1\154\1\76\5\uffff\1\u0080\1\uffff\1\104\5\uffff\1\120\2\uffff\1\100\1\uffff\1\106\11\uffff\1\147\6\uffff\1\42\1\uffff\1\61\1\63\2\uffff\1\135\2\uffff\1\162\2\uffff\1\43\1\50\1\47\4\uffff\1\173\1\uffff\1\53\1\57\1\65\1\uffff\1\170\1\uffff\1\67\1\uffff\1\114\7\uffff\1\u0087\1\105\7\uffff\1\u0085\1\146\1\uffff\1\150\1\u0086\1\uffff\1\41\1\uffff\1\165\2\uffff\1\164\5\uffff\1\152\1\uffff\1\52\1\51\4\uffff\1\137\1\uffff\1\72\1\73\1\160\2\uffff\1\107\1\110\3\uffff\1\115\1\117\11\uffff\1\172\1\66\2\uffff\1\113\1\uffff\1\163\1\176\3\uffff\1\u0081\1\44\6\uffff\1\u0082\4\uffff\1\167\2\uffff\1\161\1\uffff\1\166\1\u0088\1\132\3\uffff\1\175\3\uffff\1\u0084\1\71\1\157\1\177\1\121\1\153";
+    static final String DFA21_specialS =
+        "\1\0\u0268\uffff}>";
+    static final String[] DFA21_transitionS = {
+            "\11\65\2\64\2\65\1\64\22\65\1\64\1\11\1\62\1\51\1\61\1\10\1\3\1\63\1\45\1\46\1\6\1\4\1\47\1\5\1\14\1\7\1\56\11\57\1\53\1\43\1\13\1\1\1\12\1\15\1\44\32\61\1\52\1\65\1\50\1\60\1\61\1\65\1\34\1\36\1\26\1\30\1\17\1\22\1\37\1\55\1\21\2\61\1\27\1\40\1\24\1\23\1\31\1\61\1\42\1\20\1\41\1\35\1\16\1\25\2\61\1\54\1\32\1\2\1\33\uff82\65",
+            "\1\66\1\67",
+            "\1\71",
+            "\1\73",
+            "\1\76\21\uffff\1\75",
+            "\1\102\17\uffff\1\100\1\101",
+            "\1\105\22\uffff\1\104",
+            "\1\110\4\uffff\1\111\15\uffff\1\107",
+            "\1\113",
+            "\1\115",
+            "\1\117",
+            "\1\121",
+            "\1\123",
+            "\1\126\13\uffff\1\125",
+            "\1\130",
+            "\1\133\12\uffff\1\134\1\135\12\uffff\1\132",
+            "\1\142\2\uffff\1\145\3\uffff\1\140\2\uffff\1\141\4\uffff\1\136\1\137\1\uffff\1\143\1\uffff\1\144",
+            "\1\150\6\uffff\1\146\1\147",
+            "\1\151\7\uffff\1\153\5\uffff\1\152",
+            "\1\154",
+            "\1\156\11\uffff\1\155\3\uffff\1\160\1\uffff\1\157",
+            "\1\161\2\uffff\1\162",
+            "\1\163\6\uffff\1\164\6\uffff\1\166\5\uffff\1\165",
+            "\1\172\3\uffff\1\171\3\uffff\1\167\5\uffff\1\170",
+            "\1\173\3\uffff\1\175\11\uffff\1\174",
+            "\1\177\7\uffff\1\u0080\5\uffff\1\u0081\11\uffff\1\176",
+            "",
+            "",
+            "\1\u0087\1\uffff\1\u0086\4\uffff\1\u0084\4\uffff\1\u0085",
+            "\1\u0089\2\uffff\1\u0088",
+            "\1\u008a\23\uffff\1\u008b",
+            "\1\u008c\20\uffff\1\u008d",
+            "\1\u008f\7\uffff\1\u008e\13\uffff\1\u0090",
+            "\1\u0094\6\uffff\1\u0092\2\uffff\1\u0091\6\uffff\1\u0093",
+            "\1\u0095",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u009e",
+            "\1\u00a0",
+            "\1\u00a1",
+            "\12\u00a3\10\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5\13\uffff\1\u00a2\6\uffff\1\u00a3\2\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5\13\uffff\1\u00a2",
+            "\12\u00a3\10\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5\22\uffff\1\u00a3\2\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5",
+            "\1\131\34\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00a8",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00aa",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00ac",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00ae\5\uffff\1\u00af",
+            "",
+            "\1\u00b0",
+            "\1\u00b1",
+            "\1\u00b2",
+            "\1\u00b3",
+            "\1\u00b4",
+            "\1\u00b5",
+            "\1\u00b6",
+            "\1\u00b7",
+            "\1\u00b8\4\uffff\1\u00b9",
+            "\1\u00bb\7\uffff\1\u00ba",
+            "\1\u00bc",
+            "\1\u00bd\15\uffff\1\u00be",
+            "\1\u00bf",
+            "\1\u00c0\1\u00c1",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u00c3\6\uffff\1\u00c4",
+            "\1\u00c5",
+            "\1\u00c7\1\uffff\1\u00c6",
+            "\1\u00c8",
+            "\1\u00c9",
+            "\1\u00ca",
+            "\1\u00cb",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u00cd",
+            "\1\u00ce",
+            "\1\u00d0\1\u00cf",
+            "\1\u00d1",
+            "\1\u00d2",
+            "\1\u00d3",
+            "\1\u00d4",
+            "\1\u00d5",
+            "\1\u00d6",
+            "\1\u00d7",
+            "\1\u00d8",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\15\131\1\u00d9\14\131",
+            "\1\u00db\14\uffff\1\u00dc",
+            "\1\u00dd",
+            "\1\u00de",
+            "\1\u00df",
+            "\1\u00e0",
+            "",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u00e2",
+            "\1\u00e3\1\uffff\1\u00e4",
+            "\1\u00e5",
+            "\1\u00e6",
+            "\1\u00e7",
+            "\1\u00e8",
+            "\1\u00e9",
+            "\1\u00ea",
+            "\1\u00eb",
+            "\1\u00ec",
+            "\1\u00ee\7\uffff\1\u00ed",
+            "\1\u00ef",
+            "\1\u00f2\3\uffff\1\u00f0\17\uffff\1\u00f3\3\uffff\1\u00f1",
+            "\1\u00f5\7\uffff\1\u00f4",
+            "\1\u00f6",
+            "\1\u00f7",
+            "\1\u00f8\1\uffff\1\u00fa\3\uffff\1\u00f9",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00fb",
+            "\1\u00fc",
+            "",
+            "\12\u00a3\10\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5\22\uffff\1\u00a3\2\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u00ff",
+            "\1\u0100",
+            "\1\u0101",
+            "\1\u0102",
+            "\1\u0104\20\uffff\1\u0103",
+            "\1\u0105",
+            "\1\u0106",
+            "\1\u0107",
+            "\1\u0108",
+            "\1\u0109",
+            "\1\u010a",
+            "\1\u010b",
+            "\1\u010c",
+            "\1\u010d",
+            "\1\u010f\4\uffff\1\u010e",
+            "\1\u0110",
+            "\1\u0111\12\uffff\1\u0112",
+            "\1\u0113",
+            "",
+            "\1\u0114",
+            "\1\u0115",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0117",
+            "\1\u0118",
+            "\1\u0119",
+            "\1\u011a\6\uffff\1\u011b",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u011d",
+            "",
+            "\1\u011e",
+            "\1\u011f",
+            "\1\u0121\1\uffff\1\u0120",
+            "\1\u0122",
+            "\1\u0123",
+            "\1\u0124",
+            "\1\u0125",
+            "\1\u0126",
+            "\1\u0127",
+            "\1\u0128",
+            "\1\u0129",
+            "\1\u012b\3\uffff\1\u012a",
+            "\1\u012c",
+            "",
+            "\1\u012d",
+            "\1\u012e",
+            "\1\u012f",
+            "\1\u0130",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0132",
+            "",
+            "\1\u0133",
+            "\1\u0134",
+            "\1\u0135",
+            "\1\u0136",
+            "\1\u0137",
+            "\1\u0138",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u013a",
+            "\1\u013b",
+            "\1\u013c",
+            "\1\u013d",
+            "\1\u013e",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0140",
+            "\1\u0141\10\uffff\1\u0142",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0144",
+            "\1\u0145",
+            "\1\u0146",
+            "\1\u0147",
+            "\1\u0148",
+            "\1\u0149",
+            "\1\u014a",
+            "\1\u014b",
+            "\1\u014c",
+            "\1\u014d",
+            "\1\u014e",
+            "",
+            "",
+            "\1\u014f",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0152",
+            "\1\u0153",
+            "\1\u0154",
+            "\1\u0155",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0157",
+            "\1\u0158",
+            "\1\u0159",
+            "\1\u015a",
+            "\1\u015b",
+            "\1\u015c",
+            "\1\u015d",
+            "\1\u015e",
+            "\1\u015f",
+            "\1\u0160",
+            "\1\u0161",
+            "\1\u0162",
+            "\1\u0163",
+            "\1\u0164",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\u0166",
+            "\1\u0167\12\uffff\1\u0168",
+            "\1\u0169",
+            "\1\u016a",
+            "\1\u016b",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u016e",
+            "\1\u016f",
+            "\1\u0170",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0172",
+            "\1\u0173",
+            "\1\u0174",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\1\u0175\31\131",
+            "\1\u0177",
+            "\1\u0178",
+            "\1\u0179",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u017b",
+            "\1\u017c",
+            "\1\u017d",
+            "\1\u017e",
+            "\1\u017f",
+            "\1\u0180",
+            "",
+            "\1\u0181",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0183",
+            "\1\u0184",
+            "\1\u0185",
+            "\1\u0186",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\u0188",
+            "\1\u0189",
+            "\1\u018a",
+            "\1\u018b",
+            "\1\u018c",
+            "",
+            "\1\u018d",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u018f",
+            "",
+            "\1\u0190",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0192",
+            "\1\u0193",
+            "\1\u0194",
+            "\1\u0195",
+            "\1\u0196",
+            "\1\u0197",
+            "\1\u0198",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u019a",
+            "\1\u019b\16\uffff\1\u019c",
+            "",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u019e",
+            "\1\u019f",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\131\10\uffff\1\u01a1\2\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01a3",
+            "\1\u01a4",
+            "\1\u01a5",
+            "\1\u01a6",
+            "\1\u01a7",
+            "\1\u01a8",
+            "\1\u01a9",
+            "\1\u01aa",
+            "\1\u01ab",
+            "\1\u01ac",
+            "\1\u01ad",
+            "\1\u01ae",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\u01b0",
+            "\1\u01b1",
+            "\1\u01b2",
+            "\1\u01b3",
+            "\1\u01b4",
+            "\1\131\10\uffff\1\u01b5\2\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01b8",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01bb",
+            "\1\u01bc",
+            "\1\u01bd",
+            "",
+            "\1\u01be",
+            "\1\u01bf",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\u01c1",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01c3",
+            "\1\u01c4",
+            "\1\u01c5",
+            "\1\u01c6",
+            "\1\u01c7",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01c9",
+            "\1\u01ca",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\u01cc",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01ce",
+            "\1\u01cf",
+            "\1\u01d0",
+            "\1\u01d1",
+            "",
+            "\1\u01d2",
+            "\1\u01d3",
+            "",
+            "\1\u01d4",
+            "\1\u01d5",
+            "\1\u01d6",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01d8",
+            "\1\u01d9",
+            "\1\u01da",
+            "",
+            "\1\u01db",
+            "\1\u01dc",
+            "\1\u01dd",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01df",
+            "",
+            "\1\u01e0\21\uffff\1\u01e1",
+            "",
+            "\1\u01e2",
+            "\1\u01e3",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01e5",
+            "\1\u01e6",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01e8",
+            "\1\u01e9",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\131\10\uffff\1\u01eb\2\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01ed",
+            "\1\u01ee",
+            "",
+            "\1\u01ef",
+            "\1\u01f0",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01f2",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01f4\21\uffff\1\u01f5",
+            "",
+            "",
+            "\1\u01f6",
+            "",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01f8",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u01fa",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\u01fc",
+            "",
+            "\1\u01fd",
+            "\1\u01fe",
+            "\1\u01ff",
+            "\1\u0200",
+            "\1\u0201",
+            "",
+            "\1\u0202",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\u0205",
+            "\1\u0206",
+            "\1\u0207",
+            "\1\u0208",
+            "\1\u0209",
+            "\1\u020a",
+            "\1\u020b",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\u020e",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0211",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0213",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "",
+            "\1\u0215",
+            "\1\u0216",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0218",
+            "",
+            "\1\u0219",
+            "\1\u021a",
+            "",
+            "",
+            "",
+            "\1\u021b",
+            "\1\u021c",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u021e",
+            "",
+            "\1\131\10\uffff\1\u021f\2\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "",
+            "",
+            "\1\u0221",
+            "",
+            "\1\u0222",
+            "",
+            "\1\u0223",
+            "",
+            "\1\u0224",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0226",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u022a",
+            "",
+            "",
+            "\1\u022b",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u022e",
+            "\1\u022f",
+            "\1\u0230",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "",
+            "\1\u0233",
+            "",
+            "\1\u0234",
+            "",
+            "\1\u0235",
+            "\1\u0236",
+            "",
+            "\1\u0237",
+            "\1\u0238",
+            "\1\u0239",
+            "\1\u023a",
+            "\1\u023b",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u023e",
+            "\1\u023f",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\u0241",
+            "",
+            "",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "",
+            "\1\u0244",
+            "\1\u0245",
+            "\1\u0246",
+            "",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0249",
+            "\1\u024a",
+            "\1\u024b",
+            "\1\u024c",
+            "\1\u024d",
+            "\1\u024e",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "",
+            "\1\u0250",
+            "\1\u0251",
+            "",
+            "\1\u0252",
+            "",
+            "",
+            "\1\u0253",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0255",
+            "",
+            "",
+            "\1\u0256",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\u0258",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\u025c",
+            "\1\u025d",
+            "\1\u025e",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\u0260",
+            "\1\u0261",
+            "",
+            "\1\u0262",
+            "",
+            "",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "\1\131\13\uffff\12\131\7\uffff\32\131\4\uffff\1\131\1\uffff\32\131",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+
+    static final short[] DFA21_eot = DFA.unpackEncodedString(DFA21_eotS);
+    static final short[] DFA21_eof = DFA.unpackEncodedString(DFA21_eofS);
+    static final char[] DFA21_min = DFA.unpackEncodedStringToUnsignedChars(DFA21_minS);
+    static final char[] DFA21_max = DFA.unpackEncodedStringToUnsignedChars(DFA21_maxS);
+    static final short[] DFA21_accept = DFA.unpackEncodedString(DFA21_acceptS);
+    static final short[] DFA21_special = DFA.unpackEncodedString(DFA21_specialS);
+    static final short[][] DFA21_transition;
+
+    static {
+        int numStates = DFA21_transitionS.length;
+        DFA21_transition = new short[numStates][];
+        for (int i=0; i<numStates; i++) {
+            DFA21_transition[i] = DFA.unpackEncodedString(DFA21_transitionS[i]);
+        }
+    }
+
+    class DFA21 extends DFA {
+
+        public DFA21(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 21;
+            this.eot = DFA21_eot;
+            this.eof = DFA21_eof;
+            this.min = DFA21_min;
+            this.max = DFA21_max;
+            this.accept = DFA21_accept;
+            this.special = DFA21_special;
+            this.transition = DFA21_transition;
+        }
+        public String getDescription() {
+            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | 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=='o') ) {s = 19;}
+
+                        else if ( (LA21_0=='n') ) {s = 20;}
+
+                        else if ( (LA21_0=='w') ) {s = 21;}
+
+                        else if ( (LA21_0=='c') ) {s = 22;}
+
+                        else if ( (LA21_0=='l') ) {s = 23;}
+
+                        else if ( (LA21_0=='d') ) {s = 24;}
+
+                        else if ( (LA21_0=='p') ) {s = 25;}
+
+                        else if ( (LA21_0=='{') ) {s = 26;}
+
+                        else if ( (LA21_0=='}') ) {s = 27;}
+
+                        else if ( (LA21_0=='a') ) {s = 28;}
+
+                        else if ( (LA21_0=='u') ) {s = 29;}
+
+                        else if ( (LA21_0=='b') ) {s = 30;}
+
+                        else if ( (LA21_0=='g') ) {s = 31;}
+
+                        else if ( (LA21_0=='m') ) {s = 32;}
+
+                        else if ( (LA21_0=='t') ) {s = 33;}
+
+                        else if ( (LA21_0=='r') ) {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=='z') ) {s = 44;}
+
+                        else if ( (LA21_0=='h') ) {s = 45;}
+
+                        else if ( (LA21_0=='0') ) {s = 46;}
+
+                        else if ( ((LA21_0>='1' && LA21_0<='9')) ) {s = 47;}
+
+                        else if ( (LA21_0=='^') ) {s = 48;}
+
+                        else if ( (LA21_0=='$'||(LA21_0>='A' && LA21_0<='Z')||LA21_0=='_'||(LA21_0>='j' && LA21_0<='k')||LA21_0=='q'||(LA21_0>='x' && LA21_0<='y')) ) {s = 49;}
+
+                        else if ( (LA21_0=='\"') ) {s = 50;}
+
+                        else if ( (LA21_0=='\'') ) {s = 51;}
+
+                        else if ( ((LA21_0>='\t' && LA21_0<='\n')||LA21_0=='\r'||LA21_0==' ') ) {s = 52;}
+
+                        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 = 53;}
+
+                        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.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/contentassist/antlr/internal/InternalChartDSLParser.java b/org.eclipse.osbp.xtext.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/contentassist/antlr/internal/InternalChartDSLParser.java
new file mode 100644
index 0000000..bc0f58a
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ide/src-gen/org/eclipse/osbp/xtext/chart/ide/contentassist/antlr/internal/InternalChartDSLParser.java
@@ -0,0 +1,82257 @@
+package org.eclipse.osbp.xtext.chart.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.chart.services.ChartDSLGrammarAccess;
+
+
+
+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 InternalChartDSLParser extends AbstractInternalContentAssistParser {
+    public static final String[] tokenNames = new String[] {
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_HEX", "RULE_INT", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'='", "'||'", "'&&'", "'+='", "'-='", "'*='", "'/='", "'%='", "'=='", "'!='", "'==='", "'!=='", "'>='", "'>'", "'<'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'-'", "'*'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'val'", "'extends'", "'static'", "'import'", "'extension'", "'super'", "'false'", "'inside'", "'inside-grid'", "'outside'", "'outside-grid'", "'normal'", "'slow'", "'fast'", "'north'", "'north-east'", "'east'", "'south-east'", "'south'", "'south-west'", "'west'", "'north-west'", "'category'", "'linear'", "'date'", "'logarithmic'", "'pyramid'", "'package'", "'{'", "'}'", "'chart'", "'as'", "'using'", "'bar'", "'line'", "'pie'", "'donut'", "'bubble'", "'gauge'", "'minimum'", "'maximum'", "'tree'", "'upTo'", "'datamart'", "'legend'", "'tooltip'", "'axis'", "'renders'", "'angle'", "'segmentcolor'", "';'", "'@'", "'('", "')'", "','", "']'", "'#'", "'['", "'instanceof'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'new'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'describedBy'", "'polling'", "'selectById'", "'shaded'", "'animated'", "'swapped'", "'stacked'", "'showMarker'", "'trendLine'", "'cursor'", "'zoom'", "'fillZero'", "'filled'", "'empty'", "'multiplier'", "'gradient'", "'transparent'", "'label'", "'hasTicks'", "'intervals'", "'map'", "'collapsible'", "'toggle'", "'replot'", "'always'", "'shortLabel'", "'ns'", "'::'", "'?.'", "'|'", "'var'", "'true'"
+    };
+    public static final int T__144=144;
+    public static final int T__143=143;
+    public static final int T__146=146;
+    public static final int RULE_HEX=6;
+    public static final int T__50=50;
+    public static final int T__145=145;
+    public static final int T__140=140;
+    public static final int T__142=142;
+    public static final int T__141=141;
+    public static final int T__59=59;
+    public static final int T__55=55;
+    public static final int T__56=56;
+    public static final int T__57=57;
+    public static final int T__58=58;
+    public static final int T__51=51;
+    public static final int T__137=137;
+    public static final int T__52=52;
+    public static final int T__136=136;
+    public static final int T__53=53;
+    public static final int T__139=139;
+    public static final int T__54=54;
+    public static final int T__138=138;
+    public static final int T__133=133;
+    public static final int T__132=132;
+    public static final int T__60=60;
+    public static final int T__135=135;
+    public static final int T__61=61;
+    public static final int T__134=134;
+    public static final int RULE_ID=5;
+    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__154=154;
+    public static final int T__151=151;
+    public static final int T__150=150;
+    public static final int T__153=153;
+    public static final int T__152=152;
+    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__148=148;
+    public static final int T__41=41;
+    public static final int T__147=147;
+    public static final int T__42=42;
+    public static final int T__43=43;
+    public static final int T__149=149;
+    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=4;
+    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 InternalChartDSLParser(TokenStream input) {
+            this(input, new RecognizerSharedState());
+        }
+        public InternalChartDSLParser(TokenStream input, RecognizerSharedState state) {
+            super(input, state);
+             
+        }
+        
+
+    public String[] getTokenNames() { return InternalChartDSLParser.tokenNames; }
+    public String getGrammarFileName() { return "InternalChartDSL.g"; }
+
+
+    	private ChartDSLGrammarAccess grammarAccess;
+
+    	public void setGrammarAccess(ChartDSLGrammarAccess grammarAccess) {
+    		this.grammarAccess = grammarAccess;
+    	}
+
+    	@Override
+    	protected Grammar getGrammar() {
+    		return grammarAccess.getGrammar();
+    	}
+
+    	@Override
+    	protected String getValueForTokenName(String tokenName) {
+    		return tokenName;
+    	}
+
+
+
+    // $ANTLR start "entryRuleChartModel"
+    // InternalChartDSL.g:67:1: entryRuleChartModel : ruleChartModel EOF ;
+    public final void entryRuleChartModel() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:68:1: ( ruleChartModel EOF )
+            // InternalChartDSL.g:69:1: ruleChartModel EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartModelRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleChartModel();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartModelRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartModel"
+
+
+    // $ANTLR start "ruleChartModel"
+    // InternalChartDSL.g:76:1: ruleChartModel : ( ( rule__ChartModel__Group__0 ) ) ;
+    public final void ruleChartModel() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:80:2: ( ( ( rule__ChartModel__Group__0 ) ) )
+            // InternalChartDSL.g:81:2: ( ( rule__ChartModel__Group__0 ) )
+            {
+            // InternalChartDSL.g:81:2: ( ( rule__ChartModel__Group__0 ) )
+            // InternalChartDSL.g:82:3: ( rule__ChartModel__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartModelAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:83:3: ( rule__ChartModel__Group__0 )
+            // InternalChartDSL.g:83:4: rule__ChartModel__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartModel__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartModelAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartModel"
+
+
+    // $ANTLR start "entryRuleChartPackage"
+    // InternalChartDSL.g:92:1: entryRuleChartPackage : ruleChartPackage EOF ;
+    public final void entryRuleChartPackage() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:93:1: ( ruleChartPackage EOF )
+            // InternalChartDSL.g:94:1: ruleChartPackage EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPackageRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleChartPackage();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPackageRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartPackage"
+
+
+    // $ANTLR start "ruleChartPackage"
+    // InternalChartDSL.g:101:1: ruleChartPackage : ( ( rule__ChartPackage__Group__0 ) ) ;
+    public final void ruleChartPackage() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:105:2: ( ( ( rule__ChartPackage__Group__0 ) ) )
+            // InternalChartDSL.g:106:2: ( ( rule__ChartPackage__Group__0 ) )
+            {
+            // InternalChartDSL.g:106:2: ( ( rule__ChartPackage__Group__0 ) )
+            // InternalChartDSL.g:107:3: ( rule__ChartPackage__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPackageAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:108:3: ( rule__ChartPackage__Group__0 )
+            // InternalChartDSL.g:108:4: rule__ChartPackage__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartPackage__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPackageAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartPackage"
+
+
+    // $ANTLR start "entryRuleChart"
+    // InternalChartDSL.g:117:1: entryRuleChart : ruleChart EOF ;
+    public final void entryRuleChart() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:118:1: ( ruleChart EOF )
+            // InternalChartDSL.g:119:1: ruleChart EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleChart();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChart"
+
+
+    // $ANTLR start "ruleChart"
+    // InternalChartDSL.g:126:1: ruleChart : ( ( rule__Chart__Group__0 ) ) ;
+    public final void ruleChart() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:130:2: ( ( ( rule__Chart__Group__0 ) ) )
+            // InternalChartDSL.g:131:2: ( ( rule__Chart__Group__0 ) )
+            {
+            // InternalChartDSL.g:131:2: ( ( rule__Chart__Group__0 ) )
+            // InternalChartDSL.g:132:3: ( rule__Chart__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:133:3: ( rule__Chart__Group__0 )
+            // InternalChartDSL.g:133:4: rule__Chart__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__Chart__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChart"
+
+
+    // $ANTLR start "entryRuleChartOption"
+    // InternalChartDSL.g:142:1: entryRuleChartOption : ruleChartOption EOF ;
+    public final void entryRuleChartOption() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:143:1: ( ruleChartOption EOF )
+            // InternalChartDSL.g:144:1: ruleChartOption EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartOptionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleChartOption();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartOptionRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartOption"
+
+
+    // $ANTLR start "ruleChartOption"
+    // InternalChartDSL.g:151:1: ruleChartOption : ( ( rule__ChartOption__Alternatives ) ) ;
+    public final void ruleChartOption() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:155:2: ( ( ( rule__ChartOption__Alternatives ) ) )
+            // InternalChartDSL.g:156:2: ( ( rule__ChartOption__Alternatives ) )
+            {
+            // InternalChartDSL.g:156:2: ( ( rule__ChartOption__Alternatives ) )
+            // InternalChartDSL.g:157:3: ( rule__ChartOption__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartOptionAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:158:3: ( rule__ChartOption__Alternatives )
+            // InternalChartDSL.g:158:4: rule__ChartOption__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartOption__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartOptionAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartOption"
+
+
+    // $ANTLR start "entryRuleChartBar"
+    // InternalChartDSL.g:167:1: entryRuleChartBar : ruleChartBar EOF ;
+    public final void entryRuleChartBar() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:168:1: ( ruleChartBar EOF )
+            // InternalChartDSL.g:169:1: ruleChartBar EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBarRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleChartBar();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBarRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartBar"
+
+
+    // $ANTLR start "ruleChartBar"
+    // InternalChartDSL.g:176:1: ruleChartBar : ( ( rule__ChartBar__Group__0 ) ) ;
+    public final void ruleChartBar() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:180:2: ( ( ( rule__ChartBar__Group__0 ) ) )
+            // InternalChartDSL.g:181:2: ( ( rule__ChartBar__Group__0 ) )
+            {
+            // InternalChartDSL.g:181:2: ( ( rule__ChartBar__Group__0 ) )
+            // InternalChartDSL.g:182:3: ( rule__ChartBar__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBarAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:183:3: ( rule__ChartBar__Group__0 )
+            // InternalChartDSL.g:183:4: rule__ChartBar__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartBar__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBarAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartBar"
+
+
+    // $ANTLR start "entryRuleChartLine"
+    // InternalChartDSL.g:192:1: entryRuleChartLine : ruleChartLine EOF ;
+    public final void entryRuleChartLine() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:193:1: ( ruleChartLine EOF )
+            // InternalChartDSL.g:194:1: ruleChartLine EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleChartLine();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartLine"
+
+
+    // $ANTLR start "ruleChartLine"
+    // InternalChartDSL.g:201:1: ruleChartLine : ( ( rule__ChartLine__Group__0 ) ) ;
+    public final void ruleChartLine() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:205:2: ( ( ( rule__ChartLine__Group__0 ) ) )
+            // InternalChartDSL.g:206:2: ( ( rule__ChartLine__Group__0 ) )
+            {
+            // InternalChartDSL.g:206:2: ( ( rule__ChartLine__Group__0 ) )
+            // InternalChartDSL.g:207:3: ( rule__ChartLine__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:208:3: ( rule__ChartLine__Group__0 )
+            // InternalChartDSL.g:208:4: rule__ChartLine__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartLine__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartLine"
+
+
+    // $ANTLR start "entryRuleChartPie"
+    // InternalChartDSL.g:217:1: entryRuleChartPie : ruleChartPie EOF ;
+    public final void entryRuleChartPie() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:218:1: ( ruleChartPie EOF )
+            // InternalChartDSL.g:219:1: ruleChartPie EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPieRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleChartPie();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPieRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartPie"
+
+
+    // $ANTLR start "ruleChartPie"
+    // InternalChartDSL.g:226:1: ruleChartPie : ( ( rule__ChartPie__Group__0 ) ) ;
+    public final void ruleChartPie() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:230:2: ( ( ( rule__ChartPie__Group__0 ) ) )
+            // InternalChartDSL.g:231:2: ( ( rule__ChartPie__Group__0 ) )
+            {
+            // InternalChartDSL.g:231:2: ( ( rule__ChartPie__Group__0 ) )
+            // InternalChartDSL.g:232:3: ( rule__ChartPie__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPieAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:233:3: ( rule__ChartPie__Group__0 )
+            // InternalChartDSL.g:233:4: rule__ChartPie__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartPie__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPieAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartPie"
+
+
+    // $ANTLR start "entryRuleChartDonut"
+    // InternalChartDSL.g:242:1: entryRuleChartDonut : ruleChartDonut EOF ;
+    public final void entryRuleChartDonut() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:243:1: ( ruleChartDonut EOF )
+            // InternalChartDSL.g:244:1: ruleChartDonut EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartDonutRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleChartDonut();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartDonutRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartDonut"
+
+
+    // $ANTLR start "ruleChartDonut"
+    // InternalChartDSL.g:251:1: ruleChartDonut : ( ( rule__ChartDonut__Group__0 ) ) ;
+    public final void ruleChartDonut() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:255:2: ( ( ( rule__ChartDonut__Group__0 ) ) )
+            // InternalChartDSL.g:256:2: ( ( rule__ChartDonut__Group__0 ) )
+            {
+            // InternalChartDSL.g:256:2: ( ( rule__ChartDonut__Group__0 ) )
+            // InternalChartDSL.g:257:3: ( rule__ChartDonut__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartDonutAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:258:3: ( rule__ChartDonut__Group__0 )
+            // InternalChartDSL.g:258:4: rule__ChartDonut__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartDonut__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartDonutAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartDonut"
+
+
+    // $ANTLR start "entryRuleChartBubble"
+    // InternalChartDSL.g:267:1: entryRuleChartBubble : ruleChartBubble EOF ;
+    public final void entryRuleChartBubble() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:268:1: ( ruleChartBubble EOF )
+            // InternalChartDSL.g:269:1: ruleChartBubble EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBubbleRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleChartBubble();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBubbleRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartBubble"
+
+
+    // $ANTLR start "ruleChartBubble"
+    // InternalChartDSL.g:276:1: ruleChartBubble : ( ( rule__ChartBubble__Group__0 ) ) ;
+    public final void ruleChartBubble() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:280:2: ( ( ( rule__ChartBubble__Group__0 ) ) )
+            // InternalChartDSL.g:281:2: ( ( rule__ChartBubble__Group__0 ) )
+            {
+            // InternalChartDSL.g:281:2: ( ( rule__ChartBubble__Group__0 ) )
+            // InternalChartDSL.g:282:3: ( rule__ChartBubble__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBubbleAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:283:3: ( rule__ChartBubble__Group__0 )
+            // InternalChartDSL.g:283:4: rule__ChartBubble__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartBubble__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBubbleAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartBubble"
+
+
+    // $ANTLR start "entryRuleChartGauge"
+    // InternalChartDSL.g:292:1: entryRuleChartGauge : ruleChartGauge EOF ;
+    public final void entryRuleChartGauge() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:293:1: ( ruleChartGauge EOF )
+            // InternalChartDSL.g:294:1: ruleChartGauge EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleChartGauge();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartGauge"
+
+
+    // $ANTLR start "ruleChartGauge"
+    // InternalChartDSL.g:301:1: ruleChartGauge : ( ( rule__ChartGauge__Group__0 ) ) ;
+    public final void ruleChartGauge() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:305:2: ( ( ( rule__ChartGauge__Group__0 ) ) )
+            // InternalChartDSL.g:306:2: ( ( rule__ChartGauge__Group__0 ) )
+            {
+            // InternalChartDSL.g:306:2: ( ( rule__ChartGauge__Group__0 ) )
+            // InternalChartDSL.g:307:3: ( rule__ChartGauge__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:308:3: ( rule__ChartGauge__Group__0 )
+            // InternalChartDSL.g:308:4: rule__ChartGauge__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartGauge"
+
+
+    // $ANTLR start "entryRuleChartTree"
+    // InternalChartDSL.g:317:1: entryRuleChartTree : ruleChartTree EOF ;
+    public final void entryRuleChartTree() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:318:1: ( ruleChartTree EOF )
+            // InternalChartDSL.g:319:1: ruleChartTree EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartTreeRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleChartTree();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartTreeRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartTree"
+
+
+    // $ANTLR start "ruleChartTree"
+    // InternalChartDSL.g:326:1: ruleChartTree : ( ( rule__ChartTree__Group__0 ) ) ;
+    public final void ruleChartTree() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:330:2: ( ( ( rule__ChartTree__Group__0 ) ) )
+            // InternalChartDSL.g:331:2: ( ( rule__ChartTree__Group__0 ) )
+            {
+            // InternalChartDSL.g:331:2: ( ( rule__ChartTree__Group__0 ) )
+            // InternalChartDSL.g:332:3: ( rule__ChartTree__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartTreeAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:333:3: ( rule__ChartTree__Group__0 )
+            // InternalChartDSL.g:333:4: rule__ChartTree__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartTree__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartTreeAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartTree"
+
+
+    // $ANTLR start "entryRuleChartInterval"
+    // InternalChartDSL.g:342:1: entryRuleChartInterval : ruleChartInterval EOF ;
+    public final void entryRuleChartInterval() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:343:1: ( ruleChartInterval EOF )
+            // InternalChartDSL.g:344:1: ruleChartInterval EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartIntervalRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleChartInterval();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartIntervalRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartInterval"
+
+
+    // $ANTLR start "ruleChartInterval"
+    // InternalChartDSL.g:351:1: ruleChartInterval : ( ruleChartNumberInterval ) ;
+    public final void ruleChartInterval() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:355:2: ( ( ruleChartNumberInterval ) )
+            // InternalChartDSL.g:356:2: ( ruleChartNumberInterval )
+            {
+            // InternalChartDSL.g:356:2: ( ruleChartNumberInterval )
+            // InternalChartDSL.g:357:3: ruleChartNumberInterval
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartIntervalAccess().getChartNumberIntervalParserRuleCall()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleChartNumberInterval();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartIntervalAccess().getChartNumberIntervalParserRuleCall()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartInterval"
+
+
+    // $ANTLR start "entryRuleChartNumberInterval"
+    // InternalChartDSL.g:367:1: entryRuleChartNumberInterval : ruleChartNumberInterval EOF ;
+    public final void entryRuleChartNumberInterval() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:368:1: ( ruleChartNumberInterval EOF )
+            // InternalChartDSL.g:369:1: ruleChartNumberInterval EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartNumberIntervalRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleChartNumberInterval();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartNumberIntervalRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartNumberInterval"
+
+
+    // $ANTLR start "ruleChartNumberInterval"
+    // InternalChartDSL.g:376:1: ruleChartNumberInterval : ( ( rule__ChartNumberInterval__Group__0 ) ) ;
+    public final void ruleChartNumberInterval() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:380:2: ( ( ( rule__ChartNumberInterval__Group__0 ) ) )
+            // InternalChartDSL.g:381:2: ( ( rule__ChartNumberInterval__Group__0 ) )
+            {
+            // InternalChartDSL.g:381:2: ( ( rule__ChartNumberInterval__Group__0 ) )
+            // InternalChartDSL.g:382:3: ( rule__ChartNumberInterval__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartNumberIntervalAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:383:3: ( rule__ChartNumberInterval__Group__0 )
+            // InternalChartDSL.g:383:4: rule__ChartNumberInterval__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartNumberInterval__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartNumberIntervalAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartNumberInterval"
+
+
+    // $ANTLR start "entryRuleChartDatamart"
+    // InternalChartDSL.g:392:1: entryRuleChartDatamart : ruleChartDatamart EOF ;
+    public final void entryRuleChartDatamart() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:393:1: ( ruleChartDatamart EOF )
+            // InternalChartDSL.g:394:1: ruleChartDatamart EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartDatamartRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleChartDatamart();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartDatamartRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartDatamart"
+
+
+    // $ANTLR start "ruleChartDatamart"
+    // InternalChartDSL.g:401:1: ruleChartDatamart : ( ( rule__ChartDatamart__Group__0 ) ) ;
+    public final void ruleChartDatamart() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:405:2: ( ( ( rule__ChartDatamart__Group__0 ) ) )
+            // InternalChartDSL.g:406:2: ( ( rule__ChartDatamart__Group__0 ) )
+            {
+            // InternalChartDSL.g:406:2: ( ( rule__ChartDatamart__Group__0 ) )
+            // InternalChartDSL.g:407:3: ( rule__ChartDatamart__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartDatamartAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:408:3: ( rule__ChartDatamart__Group__0 )
+            // InternalChartDSL.g:408:4: rule__ChartDatamart__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartDatamart__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartDatamartAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartDatamart"
+
+
+    // $ANTLR start "entryRuleChartElement"
+    // InternalChartDSL.g:417:1: entryRuleChartElement : ruleChartElement EOF ;
+    public final void entryRuleChartElement() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:418:1: ( ruleChartElement EOF )
+            // InternalChartDSL.g:419:1: ruleChartElement EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartElementRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleChartElement();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartElementRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartElement"
+
+
+    // $ANTLR start "ruleChartElement"
+    // InternalChartDSL.g:426:1: ruleChartElement : ( ( rule__ChartElement__Alternatives ) ) ;
+    public final void ruleChartElement() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:430:2: ( ( ( rule__ChartElement__Alternatives ) ) )
+            // InternalChartDSL.g:431:2: ( ( rule__ChartElement__Alternatives ) )
+            {
+            // InternalChartDSL.g:431:2: ( ( rule__ChartElement__Alternatives ) )
+            // InternalChartDSL.g:432:3: ( rule__ChartElement__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartElementAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:433:3: ( rule__ChartElement__Alternatives )
+            // InternalChartDSL.g:433:4: rule__ChartElement__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartElement__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartElementAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartElement"
+
+
+    // $ANTLR start "entryRuleChartLegend"
+    // InternalChartDSL.g:442:1: entryRuleChartLegend : ruleChartLegend EOF ;
+    public final void entryRuleChartLegend() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:443:1: ( ruleChartLegend EOF )
+            // InternalChartDSL.g:444:1: ruleChartLegend EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLegendRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleChartLegend();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLegendRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartLegend"
+
+
+    // $ANTLR start "ruleChartLegend"
+    // InternalChartDSL.g:451:1: ruleChartLegend : ( ( rule__ChartLegend__Group__0 ) ) ;
+    public final void ruleChartLegend() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:455:2: ( ( ( rule__ChartLegend__Group__0 ) ) )
+            // InternalChartDSL.g:456:2: ( ( rule__ChartLegend__Group__0 ) )
+            {
+            // InternalChartDSL.g:456:2: ( ( rule__ChartLegend__Group__0 ) )
+            // InternalChartDSL.g:457:3: ( rule__ChartLegend__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLegendAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:458:3: ( rule__ChartLegend__Group__0 )
+            // InternalChartDSL.g:458:4: rule__ChartLegend__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartLegend__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLegendAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartLegend"
+
+
+    // $ANTLR start "entryRuleChartHighlighter"
+    // InternalChartDSL.g:467:1: entryRuleChartHighlighter : ruleChartHighlighter EOF ;
+    public final void entryRuleChartHighlighter() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:468:1: ( ruleChartHighlighter EOF )
+            // InternalChartDSL.g:469:1: ruleChartHighlighter EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartHighlighterRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleChartHighlighter();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartHighlighterRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartHighlighter"
+
+
+    // $ANTLR start "ruleChartHighlighter"
+    // InternalChartDSL.g:476:1: ruleChartHighlighter : ( ( rule__ChartHighlighter__Group__0 ) ) ;
+    public final void ruleChartHighlighter() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:480:2: ( ( ( rule__ChartHighlighter__Group__0 ) ) )
+            // InternalChartDSL.g:481:2: ( ( rule__ChartHighlighter__Group__0 ) )
+            {
+            // InternalChartDSL.g:481:2: ( ( rule__ChartHighlighter__Group__0 ) )
+            // InternalChartDSL.g:482:3: ( rule__ChartHighlighter__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartHighlighterAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:483:3: ( rule__ChartHighlighter__Group__0 )
+            // InternalChartDSL.g:483:4: rule__ChartHighlighter__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartHighlighter__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartHighlighterAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartHighlighter"
+
+
+    // $ANTLR start "entryRuleChartAxis"
+    // InternalChartDSL.g:492:1: entryRuleChartAxis : ruleChartAxis EOF ;
+    public final void entryRuleChartAxis() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:493:1: ( ruleChartAxis EOF )
+            // InternalChartDSL.g:494:1: ruleChartAxis EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAxisRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleChartAxis();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAxisRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartAxis"
+
+
+    // $ANTLR start "ruleChartAxis"
+    // InternalChartDSL.g:501:1: ruleChartAxis : ( ( rule__ChartAxis__Group__0 ) ) ;
+    public final void ruleChartAxis() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:505:2: ( ( ( rule__ChartAxis__Group__0 ) ) )
+            // InternalChartDSL.g:506:2: ( ( rule__ChartAxis__Group__0 ) )
+            {
+            // InternalChartDSL.g:506:2: ( ( rule__ChartAxis__Group__0 ) )
+            // InternalChartDSL.g:507:3: ( rule__ChartAxis__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAxisAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:508:3: ( rule__ChartAxis__Group__0 )
+            // InternalChartDSL.g:508:4: rule__ChartAxis__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartAxis__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAxisAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartAxis"
+
+
+    // $ANTLR start "entryRuleChartRangeElement"
+    // InternalChartDSL.g:517:1: entryRuleChartRangeElement : ruleChartRangeElement EOF ;
+    public final void entryRuleChartRangeElement() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:518:1: ( ruleChartRangeElement EOF )
+            // InternalChartDSL.g:519:1: ruleChartRangeElement EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartRangeElementRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleChartRangeElement();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartRangeElementRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartRangeElement"
+
+
+    // $ANTLR start "ruleChartRangeElement"
+    // InternalChartDSL.g:526:1: ruleChartRangeElement : ( ruleChartSegmentColor ) ;
+    public final void ruleChartRangeElement() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:530:2: ( ( ruleChartSegmentColor ) )
+            // InternalChartDSL.g:531:2: ( ruleChartSegmentColor )
+            {
+            // InternalChartDSL.g:531:2: ( ruleChartSegmentColor )
+            // InternalChartDSL.g:532:3: ruleChartSegmentColor
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartRangeElementAccess().getChartSegmentColorParserRuleCall()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleChartSegmentColor();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartRangeElementAccess().getChartSegmentColorParserRuleCall()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartRangeElement"
+
+
+    // $ANTLR start "entryRuleChartSegmentColor"
+    // InternalChartDSL.g:542:1: entryRuleChartSegmentColor : ruleChartSegmentColor EOF ;
+    public final void entryRuleChartSegmentColor() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:543:1: ( ruleChartSegmentColor EOF )
+            // InternalChartDSL.g:544:1: ruleChartSegmentColor EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartSegmentColorRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleChartSegmentColor();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartSegmentColorRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleChartSegmentColor"
+
+
+    // $ANTLR start "ruleChartSegmentColor"
+    // InternalChartDSL.g:551:1: ruleChartSegmentColor : ( ( rule__ChartSegmentColor__Group__0 ) ) ;
+    public final void ruleChartSegmentColor() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:555:2: ( ( ( rule__ChartSegmentColor__Group__0 ) ) )
+            // InternalChartDSL.g:556:2: ( ( rule__ChartSegmentColor__Group__0 ) )
+            {
+            // InternalChartDSL.g:556:2: ( ( rule__ChartSegmentColor__Group__0 ) )
+            // InternalChartDSL.g:557:3: ( rule__ChartSegmentColor__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartSegmentColorAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:558:3: ( rule__ChartSegmentColor__Group__0 )
+            // InternalChartDSL.g:558:4: rule__ChartSegmentColor__Group__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartSegmentColor__Group__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartSegmentColorAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleChartSegmentColor"
+
+
+    // $ANTLR start "entryRuleSignedNumber"
+    // InternalChartDSL.g:567:1: entryRuleSignedNumber : ruleSignedNumber EOF ;
+    public final void entryRuleSignedNumber() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:568:1: ( ruleSignedNumber EOF )
+            // InternalChartDSL.g:569:1: ruleSignedNumber EOF
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignedNumberRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            ruleSignedNumber();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignedNumberRule()); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+        }
+        return ;
+    }
+    // $ANTLR end "entryRuleSignedNumber"
+
+
+    // $ANTLR start "ruleSignedNumber"
+    // InternalChartDSL.g:576:1: ruleSignedNumber : ( ( rule__SignedNumber__Group__0 )? ) ;
+    public final void ruleSignedNumber() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:580:2: ( ( ( rule__SignedNumber__Group__0 )? ) )
+            // InternalChartDSL.g:581:2: ( ( rule__SignedNumber__Group__0 )? )
+            {
+            // InternalChartDSL.g:581:2: ( ( rule__SignedNumber__Group__0 )? )
+            // InternalChartDSL.g:582:3: ( rule__SignedNumber__Group__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignedNumberAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:583:3: ( rule__SignedNumber__Group__0 )?
+            int alt1=2;
+            int LA1_0 = input.LA(1);
+
+            if ( (LA1_0==RULE_INT||LA1_0==35) ) {
+                alt1=1;
+            }
+            switch (alt1) {
+                case 1 :
+                    // InternalChartDSL.g:583:4: rule__SignedNumber__Group__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__SignedNumber__Group__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignedNumberAccess().getGroup()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleSignedNumber"
+
+
+    // $ANTLR start "entryRuleTRANSLATABLESTRING"
+    // InternalChartDSL.g:592:1: entryRuleTRANSLATABLESTRING : ruleTRANSLATABLESTRING EOF ;
+    public final void entryRuleTRANSLATABLESTRING() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:593:1: ( ruleTRANSLATABLESTRING EOF )
+            // InternalChartDSL.g:594: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"
+    // InternalChartDSL.g:601:1: ruleTRANSLATABLESTRING : ( RULE_STRING ) ;
+    public final void ruleTRANSLATABLESTRING() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:605:2: ( ( RULE_STRING ) )
+            // InternalChartDSL.g:606:2: ( RULE_STRING )
+            {
+            // InternalChartDSL.g:606:2: ( RULE_STRING )
+            // InternalChartDSL.g:607: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 "entryRuleTRANSLATABLEID"
+    // InternalChartDSL.g:617:1: entryRuleTRANSLATABLEID : ruleTRANSLATABLEID EOF ;
+    public final void entryRuleTRANSLATABLEID() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:618:1: ( ruleTRANSLATABLEID EOF )
+            // InternalChartDSL.g:619: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"
+    // InternalChartDSL.g:626:1: ruleTRANSLATABLEID : ( RULE_ID ) ;
+    public final void ruleTRANSLATABLEID() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:630:2: ( ( RULE_ID ) )
+            // InternalChartDSL.g:631:2: ( RULE_ID )
+            {
+            // InternalChartDSL.g:631:2: ( RULE_ID )
+            // InternalChartDSL.g:632: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 "entryRuleXImportDeclaration"
+    // InternalChartDSL.g:642:1: entryRuleXImportDeclaration : ruleXImportDeclaration EOF ;
+    public final void entryRuleXImportDeclaration() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:643:1: ( ruleXImportDeclaration EOF )
+            // InternalChartDSL.g:644: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"
+    // InternalChartDSL.g:651:1: ruleXImportDeclaration : ( ( rule__XImportDeclaration__Group__0 ) ) ;
+    public final void ruleXImportDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:655:2: ( ( ( rule__XImportDeclaration__Group__0 ) ) )
+            // InternalChartDSL.g:656:2: ( ( rule__XImportDeclaration__Group__0 ) )
+            {
+            // InternalChartDSL.g:656:2: ( ( rule__XImportDeclaration__Group__0 ) )
+            // InternalChartDSL.g:657:3: ( rule__XImportDeclaration__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:658:3: ( rule__XImportDeclaration__Group__0 )
+            // InternalChartDSL.g:658: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"
+    // InternalChartDSL.g:667:1: entryRuleXAnnotation : ruleXAnnotation EOF ;
+    public final void entryRuleXAnnotation() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:668:1: ( ruleXAnnotation EOF )
+            // InternalChartDSL.g:669: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"
+    // InternalChartDSL.g:676:1: ruleXAnnotation : ( ( rule__XAnnotation__Group__0 ) ) ;
+    public final void ruleXAnnotation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:680:2: ( ( ( rule__XAnnotation__Group__0 ) ) )
+            // InternalChartDSL.g:681:2: ( ( rule__XAnnotation__Group__0 ) )
+            {
+            // InternalChartDSL.g:681:2: ( ( rule__XAnnotation__Group__0 ) )
+            // InternalChartDSL.g:682:3: ( rule__XAnnotation__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:683:3: ( rule__XAnnotation__Group__0 )
+            // InternalChartDSL.g:683: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"
+    // InternalChartDSL.g:692:1: entryRuleXAnnotationElementValuePair : ruleXAnnotationElementValuePair EOF ;
+    public final void entryRuleXAnnotationElementValuePair() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:693:1: ( ruleXAnnotationElementValuePair EOF )
+            // InternalChartDSL.g:694: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"
+    // InternalChartDSL.g:701:1: ruleXAnnotationElementValuePair : ( ( rule__XAnnotationElementValuePair__Group__0 ) ) ;
+    public final void ruleXAnnotationElementValuePair() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:705:2: ( ( ( rule__XAnnotationElementValuePair__Group__0 ) ) )
+            // InternalChartDSL.g:706:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            {
+            // InternalChartDSL.g:706:2: ( ( rule__XAnnotationElementValuePair__Group__0 ) )
+            // InternalChartDSL.g:707:3: ( rule__XAnnotationElementValuePair__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:708:3: ( rule__XAnnotationElementValuePair__Group__0 )
+            // InternalChartDSL.g:708: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"
+    // InternalChartDSL.g:717:1: entryRuleXAnnotationElementValueOrCommaList : ruleXAnnotationElementValueOrCommaList EOF ;
+    public final void entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:718:1: ( ruleXAnnotationElementValueOrCommaList EOF )
+            // InternalChartDSL.g:719: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"
+    // InternalChartDSL.g:726:1: ruleXAnnotationElementValueOrCommaList : ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) ;
+    public final void ruleXAnnotationElementValueOrCommaList() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:730:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) ) )
+            // InternalChartDSL.g:731:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            {
+            // InternalChartDSL.g:731:2: ( ( rule__XAnnotationElementValueOrCommaList__Alternatives ) )
+            // InternalChartDSL.g:732:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:733:3: ( rule__XAnnotationElementValueOrCommaList__Alternatives )
+            // InternalChartDSL.g:733: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"
+    // InternalChartDSL.g:742:1: entryRuleXAnnotationElementValue : ruleXAnnotationElementValue EOF ;
+    public final void entryRuleXAnnotationElementValue() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:743:1: ( ruleXAnnotationElementValue EOF )
+            // InternalChartDSL.g:744: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"
+    // InternalChartDSL.g:751:1: ruleXAnnotationElementValue : ( ( rule__XAnnotationElementValue__Alternatives ) ) ;
+    public final void ruleXAnnotationElementValue() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:755:2: ( ( ( rule__XAnnotationElementValue__Alternatives ) ) )
+            // InternalChartDSL.g:756:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            {
+            // InternalChartDSL.g:756:2: ( ( rule__XAnnotationElementValue__Alternatives ) )
+            // InternalChartDSL.g:757:3: ( rule__XAnnotationElementValue__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:758:3: ( rule__XAnnotationElementValue__Alternatives )
+            // InternalChartDSL.g:758: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"
+    // InternalChartDSL.g:767:1: entryRuleXAnnotationOrExpression : ruleXAnnotationOrExpression EOF ;
+    public final void entryRuleXAnnotationOrExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:768:1: ( ruleXAnnotationOrExpression EOF )
+            // InternalChartDSL.g:769: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"
+    // InternalChartDSL.g:776:1: ruleXAnnotationOrExpression : ( ( rule__XAnnotationOrExpression__Alternatives ) ) ;
+    public final void ruleXAnnotationOrExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:780:2: ( ( ( rule__XAnnotationOrExpression__Alternatives ) ) )
+            // InternalChartDSL.g:781:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            {
+            // InternalChartDSL.g:781:2: ( ( rule__XAnnotationOrExpression__Alternatives ) )
+            // InternalChartDSL.g:782:3: ( rule__XAnnotationOrExpression__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationOrExpressionAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:783:3: ( rule__XAnnotationOrExpression__Alternatives )
+            // InternalChartDSL.g:783: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"
+    // InternalChartDSL.g:792:1: entryRuleXExpression : ruleXExpression EOF ;
+    public final void entryRuleXExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:793:1: ( ruleXExpression EOF )
+            // InternalChartDSL.g:794: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"
+    // InternalChartDSL.g:801:1: ruleXExpression : ( ruleXAssignment ) ;
+    public final void ruleXExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:805:2: ( ( ruleXAssignment ) )
+            // InternalChartDSL.g:806:2: ( ruleXAssignment )
+            {
+            // InternalChartDSL.g:806:2: ( ruleXAssignment )
+            // InternalChartDSL.g:807: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"
+    // InternalChartDSL.g:817:1: entryRuleXAssignment : ruleXAssignment EOF ;
+    public final void entryRuleXAssignment() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:818:1: ( ruleXAssignment EOF )
+            // InternalChartDSL.g:819: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"
+    // InternalChartDSL.g:826:1: ruleXAssignment : ( ( rule__XAssignment__Alternatives ) ) ;
+    public final void ruleXAssignment() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:830:2: ( ( ( rule__XAssignment__Alternatives ) ) )
+            // InternalChartDSL.g:831:2: ( ( rule__XAssignment__Alternatives ) )
+            {
+            // InternalChartDSL.g:831:2: ( ( rule__XAssignment__Alternatives ) )
+            // InternalChartDSL.g:832:3: ( rule__XAssignment__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:833:3: ( rule__XAssignment__Alternatives )
+            // InternalChartDSL.g:833: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"
+    // InternalChartDSL.g:842:1: entryRuleOpSingleAssign : ruleOpSingleAssign EOF ;
+    public final void entryRuleOpSingleAssign() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:843:1: ( ruleOpSingleAssign EOF )
+            // InternalChartDSL.g:844: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"
+    // InternalChartDSL.g:851:1: ruleOpSingleAssign : ( '=' ) ;
+    public final void ruleOpSingleAssign() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:855:2: ( ( '=' ) )
+            // InternalChartDSL.g:856:2: ( '=' )
+            {
+            // InternalChartDSL.g:856:2: ( '=' )
+            // InternalChartDSL.g:857: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"
+    // InternalChartDSL.g:867:1: entryRuleOpMultiAssign : ruleOpMultiAssign EOF ;
+    public final void entryRuleOpMultiAssign() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:868:1: ( ruleOpMultiAssign EOF )
+            // InternalChartDSL.g:869: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"
+    // InternalChartDSL.g:876:1: ruleOpMultiAssign : ( ( rule__OpMultiAssign__Alternatives ) ) ;
+    public final void ruleOpMultiAssign() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:880:2: ( ( ( rule__OpMultiAssign__Alternatives ) ) )
+            // InternalChartDSL.g:881:2: ( ( rule__OpMultiAssign__Alternatives ) )
+            {
+            // InternalChartDSL.g:881:2: ( ( rule__OpMultiAssign__Alternatives ) )
+            // InternalChartDSL.g:882:3: ( rule__OpMultiAssign__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:883:3: ( rule__OpMultiAssign__Alternatives )
+            // InternalChartDSL.g:883: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"
+    // InternalChartDSL.g:892:1: entryRuleXOrExpression : ruleXOrExpression EOF ;
+    public final void entryRuleXOrExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:893:1: ( ruleXOrExpression EOF )
+            // InternalChartDSL.g:894: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"
+    // InternalChartDSL.g:901:1: ruleXOrExpression : ( ( rule__XOrExpression__Group__0 ) ) ;
+    public final void ruleXOrExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:905:2: ( ( ( rule__XOrExpression__Group__0 ) ) )
+            // InternalChartDSL.g:906:2: ( ( rule__XOrExpression__Group__0 ) )
+            {
+            // InternalChartDSL.g:906:2: ( ( rule__XOrExpression__Group__0 ) )
+            // InternalChartDSL.g:907:3: ( rule__XOrExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:908:3: ( rule__XOrExpression__Group__0 )
+            // InternalChartDSL.g:908: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"
+    // InternalChartDSL.g:917:1: entryRuleOpOr : ruleOpOr EOF ;
+    public final void entryRuleOpOr() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:918:1: ( ruleOpOr EOF )
+            // InternalChartDSL.g:919: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"
+    // InternalChartDSL.g:926:1: ruleOpOr : ( '||' ) ;
+    public final void ruleOpOr() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:930:2: ( ( '||' ) )
+            // InternalChartDSL.g:931:2: ( '||' )
+            {
+            // InternalChartDSL.g:931:2: ( '||' )
+            // InternalChartDSL.g:932: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"
+    // InternalChartDSL.g:942:1: entryRuleXAndExpression : ruleXAndExpression EOF ;
+    public final void entryRuleXAndExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:943:1: ( ruleXAndExpression EOF )
+            // InternalChartDSL.g:944: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"
+    // InternalChartDSL.g:951:1: ruleXAndExpression : ( ( rule__XAndExpression__Group__0 ) ) ;
+    public final void ruleXAndExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:955:2: ( ( ( rule__XAndExpression__Group__0 ) ) )
+            // InternalChartDSL.g:956:2: ( ( rule__XAndExpression__Group__0 ) )
+            {
+            // InternalChartDSL.g:956:2: ( ( rule__XAndExpression__Group__0 ) )
+            // InternalChartDSL.g:957:3: ( rule__XAndExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:958:3: ( rule__XAndExpression__Group__0 )
+            // InternalChartDSL.g:958: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"
+    // InternalChartDSL.g:967:1: entryRuleOpAnd : ruleOpAnd EOF ;
+    public final void entryRuleOpAnd() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:968:1: ( ruleOpAnd EOF )
+            // InternalChartDSL.g:969: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"
+    // InternalChartDSL.g:976:1: ruleOpAnd : ( '&&' ) ;
+    public final void ruleOpAnd() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:980:2: ( ( '&&' ) )
+            // InternalChartDSL.g:981:2: ( '&&' )
+            {
+            // InternalChartDSL.g:981:2: ( '&&' )
+            // InternalChartDSL.g:982: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"
+    // InternalChartDSL.g:992:1: entryRuleXEqualityExpression : ruleXEqualityExpression EOF ;
+    public final void entryRuleXEqualityExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:993:1: ( ruleXEqualityExpression EOF )
+            // InternalChartDSL.g:994: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"
+    // InternalChartDSL.g:1001:1: ruleXEqualityExpression : ( ( rule__XEqualityExpression__Group__0 ) ) ;
+    public final void ruleXEqualityExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1005:2: ( ( ( rule__XEqualityExpression__Group__0 ) ) )
+            // InternalChartDSL.g:1006:2: ( ( rule__XEqualityExpression__Group__0 ) )
+            {
+            // InternalChartDSL.g:1006:2: ( ( rule__XEqualityExpression__Group__0 ) )
+            // InternalChartDSL.g:1007:3: ( rule__XEqualityExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1008:3: ( rule__XEqualityExpression__Group__0 )
+            // InternalChartDSL.g:1008: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"
+    // InternalChartDSL.g:1017:1: entryRuleOpEquality : ruleOpEquality EOF ;
+    public final void entryRuleOpEquality() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1018:1: ( ruleOpEquality EOF )
+            // InternalChartDSL.g:1019: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"
+    // InternalChartDSL.g:1026:1: ruleOpEquality : ( ( rule__OpEquality__Alternatives ) ) ;
+    public final void ruleOpEquality() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1030:2: ( ( ( rule__OpEquality__Alternatives ) ) )
+            // InternalChartDSL.g:1031:2: ( ( rule__OpEquality__Alternatives ) )
+            {
+            // InternalChartDSL.g:1031:2: ( ( rule__OpEquality__Alternatives ) )
+            // InternalChartDSL.g:1032:3: ( rule__OpEquality__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpEqualityAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:1033:3: ( rule__OpEquality__Alternatives )
+            // InternalChartDSL.g:1033: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"
+    // InternalChartDSL.g:1042:1: entryRuleXRelationalExpression : ruleXRelationalExpression EOF ;
+    public final void entryRuleXRelationalExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1043:1: ( ruleXRelationalExpression EOF )
+            // InternalChartDSL.g:1044: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"
+    // InternalChartDSL.g:1051:1: ruleXRelationalExpression : ( ( rule__XRelationalExpression__Group__0 ) ) ;
+    public final void ruleXRelationalExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1055:2: ( ( ( rule__XRelationalExpression__Group__0 ) ) )
+            // InternalChartDSL.g:1056:2: ( ( rule__XRelationalExpression__Group__0 ) )
+            {
+            // InternalChartDSL.g:1056:2: ( ( rule__XRelationalExpression__Group__0 ) )
+            // InternalChartDSL.g:1057:3: ( rule__XRelationalExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1058:3: ( rule__XRelationalExpression__Group__0 )
+            // InternalChartDSL.g:1058: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"
+    // InternalChartDSL.g:1067:1: entryRuleOpCompare : ruleOpCompare EOF ;
+    public final void entryRuleOpCompare() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1068:1: ( ruleOpCompare EOF )
+            // InternalChartDSL.g:1069: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"
+    // InternalChartDSL.g:1076:1: ruleOpCompare : ( ( rule__OpCompare__Alternatives ) ) ;
+    public final void ruleOpCompare() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1080:2: ( ( ( rule__OpCompare__Alternatives ) ) )
+            // InternalChartDSL.g:1081:2: ( ( rule__OpCompare__Alternatives ) )
+            {
+            // InternalChartDSL.g:1081:2: ( ( rule__OpCompare__Alternatives ) )
+            // InternalChartDSL.g:1082:3: ( rule__OpCompare__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpCompareAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:1083:3: ( rule__OpCompare__Alternatives )
+            // InternalChartDSL.g:1083: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"
+    // InternalChartDSL.g:1092:1: entryRuleXOtherOperatorExpression : ruleXOtherOperatorExpression EOF ;
+    public final void entryRuleXOtherOperatorExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1093:1: ( ruleXOtherOperatorExpression EOF )
+            // InternalChartDSL.g:1094: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"
+    // InternalChartDSL.g:1101:1: ruleXOtherOperatorExpression : ( ( rule__XOtherOperatorExpression__Group__0 ) ) ;
+    public final void ruleXOtherOperatorExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1105:2: ( ( ( rule__XOtherOperatorExpression__Group__0 ) ) )
+            // InternalChartDSL.g:1106:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            {
+            // InternalChartDSL.g:1106:2: ( ( rule__XOtherOperatorExpression__Group__0 ) )
+            // InternalChartDSL.g:1107:3: ( rule__XOtherOperatorExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1108:3: ( rule__XOtherOperatorExpression__Group__0 )
+            // InternalChartDSL.g:1108: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"
+    // InternalChartDSL.g:1117:1: entryRuleOpOther : ruleOpOther EOF ;
+    public final void entryRuleOpOther() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1118:1: ( ruleOpOther EOF )
+            // InternalChartDSL.g:1119: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"
+    // InternalChartDSL.g:1126:1: ruleOpOther : ( ( rule__OpOther__Alternatives ) ) ;
+    public final void ruleOpOther() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1130:2: ( ( ( rule__OpOther__Alternatives ) ) )
+            // InternalChartDSL.g:1131:2: ( ( rule__OpOther__Alternatives ) )
+            {
+            // InternalChartDSL.g:1131:2: ( ( rule__OpOther__Alternatives ) )
+            // InternalChartDSL.g:1132:3: ( rule__OpOther__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:1133:3: ( rule__OpOther__Alternatives )
+            // InternalChartDSL.g:1133: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"
+    // InternalChartDSL.g:1142:1: entryRuleXAdditiveExpression : ruleXAdditiveExpression EOF ;
+    public final void entryRuleXAdditiveExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1143:1: ( ruleXAdditiveExpression EOF )
+            // InternalChartDSL.g:1144: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"
+    // InternalChartDSL.g:1151:1: ruleXAdditiveExpression : ( ( rule__XAdditiveExpression__Group__0 ) ) ;
+    public final void ruleXAdditiveExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1155:2: ( ( ( rule__XAdditiveExpression__Group__0 ) ) )
+            // InternalChartDSL.g:1156:2: ( ( rule__XAdditiveExpression__Group__0 ) )
+            {
+            // InternalChartDSL.g:1156:2: ( ( rule__XAdditiveExpression__Group__0 ) )
+            // InternalChartDSL.g:1157:3: ( rule__XAdditiveExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1158:3: ( rule__XAdditiveExpression__Group__0 )
+            // InternalChartDSL.g:1158: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"
+    // InternalChartDSL.g:1167:1: entryRuleOpAdd : ruleOpAdd EOF ;
+    public final void entryRuleOpAdd() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1168:1: ( ruleOpAdd EOF )
+            // InternalChartDSL.g:1169: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"
+    // InternalChartDSL.g:1176:1: ruleOpAdd : ( ( rule__OpAdd__Alternatives ) ) ;
+    public final void ruleOpAdd() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1180:2: ( ( ( rule__OpAdd__Alternatives ) ) )
+            // InternalChartDSL.g:1181:2: ( ( rule__OpAdd__Alternatives ) )
+            {
+            // InternalChartDSL.g:1181:2: ( ( rule__OpAdd__Alternatives ) )
+            // InternalChartDSL.g:1182:3: ( rule__OpAdd__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpAddAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:1183:3: ( rule__OpAdd__Alternatives )
+            // InternalChartDSL.g:1183: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"
+    // InternalChartDSL.g:1192:1: entryRuleXMultiplicativeExpression : ruleXMultiplicativeExpression EOF ;
+    public final void entryRuleXMultiplicativeExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1193:1: ( ruleXMultiplicativeExpression EOF )
+            // InternalChartDSL.g:1194: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"
+    // InternalChartDSL.g:1201:1: ruleXMultiplicativeExpression : ( ( rule__XMultiplicativeExpression__Group__0 ) ) ;
+    public final void ruleXMultiplicativeExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1205:2: ( ( ( rule__XMultiplicativeExpression__Group__0 ) ) )
+            // InternalChartDSL.g:1206:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            {
+            // InternalChartDSL.g:1206:2: ( ( rule__XMultiplicativeExpression__Group__0 ) )
+            // InternalChartDSL.g:1207:3: ( rule__XMultiplicativeExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1208:3: ( rule__XMultiplicativeExpression__Group__0 )
+            // InternalChartDSL.g:1208: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"
+    // InternalChartDSL.g:1217:1: entryRuleOpMulti : ruleOpMulti EOF ;
+    public final void entryRuleOpMulti() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1218:1: ( ruleOpMulti EOF )
+            // InternalChartDSL.g:1219: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"
+    // InternalChartDSL.g:1226:1: ruleOpMulti : ( ( rule__OpMulti__Alternatives ) ) ;
+    public final void ruleOpMulti() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1230:2: ( ( ( rule__OpMulti__Alternatives ) ) )
+            // InternalChartDSL.g:1231:2: ( ( rule__OpMulti__Alternatives ) )
+            {
+            // InternalChartDSL.g:1231:2: ( ( rule__OpMulti__Alternatives ) )
+            // InternalChartDSL.g:1232:3: ( rule__OpMulti__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:1233:3: ( rule__OpMulti__Alternatives )
+            // InternalChartDSL.g:1233: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"
+    // InternalChartDSL.g:1242:1: entryRuleXUnaryOperation : ruleXUnaryOperation EOF ;
+    public final void entryRuleXUnaryOperation() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1243:1: ( ruleXUnaryOperation EOF )
+            // InternalChartDSL.g:1244: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"
+    // InternalChartDSL.g:1251:1: ruleXUnaryOperation : ( ( rule__XUnaryOperation__Alternatives ) ) ;
+    public final void ruleXUnaryOperation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1255:2: ( ( ( rule__XUnaryOperation__Alternatives ) ) )
+            // InternalChartDSL.g:1256:2: ( ( rule__XUnaryOperation__Alternatives ) )
+            {
+            // InternalChartDSL.g:1256:2: ( ( rule__XUnaryOperation__Alternatives ) )
+            // InternalChartDSL.g:1257:3: ( rule__XUnaryOperation__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:1258:3: ( rule__XUnaryOperation__Alternatives )
+            // InternalChartDSL.g:1258: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"
+    // InternalChartDSL.g:1267:1: entryRuleOpUnary : ruleOpUnary EOF ;
+    public final void entryRuleOpUnary() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1268:1: ( ruleOpUnary EOF )
+            // InternalChartDSL.g:1269: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"
+    // InternalChartDSL.g:1276:1: ruleOpUnary : ( ( rule__OpUnary__Alternatives ) ) ;
+    public final void ruleOpUnary() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1280:2: ( ( ( rule__OpUnary__Alternatives ) ) )
+            // InternalChartDSL.g:1281:2: ( ( rule__OpUnary__Alternatives ) )
+            {
+            // InternalChartDSL.g:1281:2: ( ( rule__OpUnary__Alternatives ) )
+            // InternalChartDSL.g:1282:3: ( rule__OpUnary__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpUnaryAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:1283:3: ( rule__OpUnary__Alternatives )
+            // InternalChartDSL.g:1283: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"
+    // InternalChartDSL.g:1292:1: entryRuleXCastedExpression : ruleXCastedExpression EOF ;
+    public final void entryRuleXCastedExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1293:1: ( ruleXCastedExpression EOF )
+            // InternalChartDSL.g:1294: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"
+    // InternalChartDSL.g:1301:1: ruleXCastedExpression : ( ( rule__XCastedExpression__Group__0 ) ) ;
+    public final void ruleXCastedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1305:2: ( ( ( rule__XCastedExpression__Group__0 ) ) )
+            // InternalChartDSL.g:1306:2: ( ( rule__XCastedExpression__Group__0 ) )
+            {
+            // InternalChartDSL.g:1306:2: ( ( rule__XCastedExpression__Group__0 ) )
+            // InternalChartDSL.g:1307:3: ( rule__XCastedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1308:3: ( rule__XCastedExpression__Group__0 )
+            // InternalChartDSL.g:1308: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"
+    // InternalChartDSL.g:1317:1: entryRuleXPostfixOperation : ruleXPostfixOperation EOF ;
+    public final void entryRuleXPostfixOperation() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1318:1: ( ruleXPostfixOperation EOF )
+            // InternalChartDSL.g:1319: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"
+    // InternalChartDSL.g:1326:1: ruleXPostfixOperation : ( ( rule__XPostfixOperation__Group__0 ) ) ;
+    public final void ruleXPostfixOperation() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1330:2: ( ( ( rule__XPostfixOperation__Group__0 ) ) )
+            // InternalChartDSL.g:1331:2: ( ( rule__XPostfixOperation__Group__0 ) )
+            {
+            // InternalChartDSL.g:1331:2: ( ( rule__XPostfixOperation__Group__0 ) )
+            // InternalChartDSL.g:1332:3: ( rule__XPostfixOperation__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1333:3: ( rule__XPostfixOperation__Group__0 )
+            // InternalChartDSL.g:1333: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"
+    // InternalChartDSL.g:1342:1: entryRuleOpPostfix : ruleOpPostfix EOF ;
+    public final void entryRuleOpPostfix() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1343:1: ( ruleOpPostfix EOF )
+            // InternalChartDSL.g:1344: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"
+    // InternalChartDSL.g:1351:1: ruleOpPostfix : ( ( rule__OpPostfix__Alternatives ) ) ;
+    public final void ruleOpPostfix() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1355:2: ( ( ( rule__OpPostfix__Alternatives ) ) )
+            // InternalChartDSL.g:1356:2: ( ( rule__OpPostfix__Alternatives ) )
+            {
+            // InternalChartDSL.g:1356:2: ( ( rule__OpPostfix__Alternatives ) )
+            // InternalChartDSL.g:1357:3: ( rule__OpPostfix__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpPostfixAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:1358:3: ( rule__OpPostfix__Alternatives )
+            // InternalChartDSL.g:1358: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"
+    // InternalChartDSL.g:1367:1: entryRuleXMemberFeatureCall : ruleXMemberFeatureCall EOF ;
+    public final void entryRuleXMemberFeatureCall() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1368:1: ( ruleXMemberFeatureCall EOF )
+            // InternalChartDSL.g:1369: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"
+    // InternalChartDSL.g:1376:1: ruleXMemberFeatureCall : ( ( rule__XMemberFeatureCall__Group__0 ) ) ;
+    public final void ruleXMemberFeatureCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1380:2: ( ( ( rule__XMemberFeatureCall__Group__0 ) ) )
+            // InternalChartDSL.g:1381:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            {
+            // InternalChartDSL.g:1381:2: ( ( rule__XMemberFeatureCall__Group__0 ) )
+            // InternalChartDSL.g:1382:3: ( rule__XMemberFeatureCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1383:3: ( rule__XMemberFeatureCall__Group__0 )
+            // InternalChartDSL.g:1383: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"
+    // InternalChartDSL.g:1392:1: entryRuleXPrimaryExpression : ruleXPrimaryExpression EOF ;
+    public final void entryRuleXPrimaryExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1393:1: ( ruleXPrimaryExpression EOF )
+            // InternalChartDSL.g:1394: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"
+    // InternalChartDSL.g:1401:1: ruleXPrimaryExpression : ( ( rule__XPrimaryExpression__Alternatives ) ) ;
+    public final void ruleXPrimaryExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1405:2: ( ( ( rule__XPrimaryExpression__Alternatives ) ) )
+            // InternalChartDSL.g:1406:2: ( ( rule__XPrimaryExpression__Alternatives ) )
+            {
+            // InternalChartDSL.g:1406:2: ( ( rule__XPrimaryExpression__Alternatives ) )
+            // InternalChartDSL.g:1407:3: ( rule__XPrimaryExpression__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPrimaryExpressionAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:1408:3: ( rule__XPrimaryExpression__Alternatives )
+            // InternalChartDSL.g:1408: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"
+    // InternalChartDSL.g:1417:1: entryRuleXLiteral : ruleXLiteral EOF ;
+    public final void entryRuleXLiteral() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1418:1: ( ruleXLiteral EOF )
+            // InternalChartDSL.g:1419: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"
+    // InternalChartDSL.g:1426:1: ruleXLiteral : ( ( rule__XLiteral__Alternatives ) ) ;
+    public final void ruleXLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1430:2: ( ( ( rule__XLiteral__Alternatives ) ) )
+            // InternalChartDSL.g:1431:2: ( ( rule__XLiteral__Alternatives ) )
+            {
+            // InternalChartDSL.g:1431:2: ( ( rule__XLiteral__Alternatives ) )
+            // InternalChartDSL.g:1432:3: ( rule__XLiteral__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXLiteralAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:1433:3: ( rule__XLiteral__Alternatives )
+            // InternalChartDSL.g:1433: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"
+    // InternalChartDSL.g:1442:1: entryRuleXCollectionLiteral : ruleXCollectionLiteral EOF ;
+    public final void entryRuleXCollectionLiteral() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1443:1: ( ruleXCollectionLiteral EOF )
+            // InternalChartDSL.g:1444: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"
+    // InternalChartDSL.g:1451:1: ruleXCollectionLiteral : ( ( rule__XCollectionLiteral__Alternatives ) ) ;
+    public final void ruleXCollectionLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1455:2: ( ( ( rule__XCollectionLiteral__Alternatives ) ) )
+            // InternalChartDSL.g:1456:2: ( ( rule__XCollectionLiteral__Alternatives ) )
+            {
+            // InternalChartDSL.g:1456:2: ( ( rule__XCollectionLiteral__Alternatives ) )
+            // InternalChartDSL.g:1457:3: ( rule__XCollectionLiteral__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCollectionLiteralAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:1458:3: ( rule__XCollectionLiteral__Alternatives )
+            // InternalChartDSL.g:1458: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"
+    // InternalChartDSL.g:1467:1: entryRuleXSetLiteral : ruleXSetLiteral EOF ;
+    public final void entryRuleXSetLiteral() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1468:1: ( ruleXSetLiteral EOF )
+            // InternalChartDSL.g:1469: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"
+    // InternalChartDSL.g:1476:1: ruleXSetLiteral : ( ( rule__XSetLiteral__Group__0 ) ) ;
+    public final void ruleXSetLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1480:2: ( ( ( rule__XSetLiteral__Group__0 ) ) )
+            // InternalChartDSL.g:1481:2: ( ( rule__XSetLiteral__Group__0 ) )
+            {
+            // InternalChartDSL.g:1481:2: ( ( rule__XSetLiteral__Group__0 ) )
+            // InternalChartDSL.g:1482:3: ( rule__XSetLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1483:3: ( rule__XSetLiteral__Group__0 )
+            // InternalChartDSL.g:1483: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"
+    // InternalChartDSL.g:1492:1: entryRuleXListLiteral : ruleXListLiteral EOF ;
+    public final void entryRuleXListLiteral() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1493:1: ( ruleXListLiteral EOF )
+            // InternalChartDSL.g:1494: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"
+    // InternalChartDSL.g:1501:1: ruleXListLiteral : ( ( rule__XListLiteral__Group__0 ) ) ;
+    public final void ruleXListLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1505:2: ( ( ( rule__XListLiteral__Group__0 ) ) )
+            // InternalChartDSL.g:1506:2: ( ( rule__XListLiteral__Group__0 ) )
+            {
+            // InternalChartDSL.g:1506:2: ( ( rule__XListLiteral__Group__0 ) )
+            // InternalChartDSL.g:1507:3: ( rule__XListLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1508:3: ( rule__XListLiteral__Group__0 )
+            // InternalChartDSL.g:1508: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"
+    // InternalChartDSL.g:1517:1: entryRuleXClosure : ruleXClosure EOF ;
+    public final void entryRuleXClosure() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1518:1: ( ruleXClosure EOF )
+            // InternalChartDSL.g:1519: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"
+    // InternalChartDSL.g:1526:1: ruleXClosure : ( ( rule__XClosure__Group__0 ) ) ;
+    public final void ruleXClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1530:2: ( ( ( rule__XClosure__Group__0 ) ) )
+            // InternalChartDSL.g:1531:2: ( ( rule__XClosure__Group__0 ) )
+            {
+            // InternalChartDSL.g:1531:2: ( ( rule__XClosure__Group__0 ) )
+            // InternalChartDSL.g:1532:3: ( rule__XClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1533:3: ( rule__XClosure__Group__0 )
+            // InternalChartDSL.g:1533: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"
+    // InternalChartDSL.g:1542:1: entryRuleXExpressionInClosure : ruleXExpressionInClosure EOF ;
+    public final void entryRuleXExpressionInClosure() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1543:1: ( ruleXExpressionInClosure EOF )
+            // InternalChartDSL.g:1544: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"
+    // InternalChartDSL.g:1551:1: ruleXExpressionInClosure : ( ( rule__XExpressionInClosure__Group__0 ) ) ;
+    public final void ruleXExpressionInClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1555:2: ( ( ( rule__XExpressionInClosure__Group__0 ) ) )
+            // InternalChartDSL.g:1556:2: ( ( rule__XExpressionInClosure__Group__0 ) )
+            {
+            // InternalChartDSL.g:1556:2: ( ( rule__XExpressionInClosure__Group__0 ) )
+            // InternalChartDSL.g:1557:3: ( rule__XExpressionInClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1558:3: ( rule__XExpressionInClosure__Group__0 )
+            // InternalChartDSL.g:1558: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"
+    // InternalChartDSL.g:1567:1: entryRuleXShortClosure : ruleXShortClosure EOF ;
+    public final void entryRuleXShortClosure() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1568:1: ( ruleXShortClosure EOF )
+            // InternalChartDSL.g:1569: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"
+    // InternalChartDSL.g:1576:1: ruleXShortClosure : ( ( rule__XShortClosure__Group__0 ) ) ;
+    public final void ruleXShortClosure() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1580:2: ( ( ( rule__XShortClosure__Group__0 ) ) )
+            // InternalChartDSL.g:1581:2: ( ( rule__XShortClosure__Group__0 ) )
+            {
+            // InternalChartDSL.g:1581:2: ( ( rule__XShortClosure__Group__0 ) )
+            // InternalChartDSL.g:1582:3: ( rule__XShortClosure__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1583:3: ( rule__XShortClosure__Group__0 )
+            // InternalChartDSL.g:1583: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"
+    // InternalChartDSL.g:1592:1: entryRuleXParenthesizedExpression : ruleXParenthesizedExpression EOF ;
+    public final void entryRuleXParenthesizedExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1593:1: ( ruleXParenthesizedExpression EOF )
+            // InternalChartDSL.g:1594: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"
+    // InternalChartDSL.g:1601:1: ruleXParenthesizedExpression : ( ( rule__XParenthesizedExpression__Group__0 ) ) ;
+    public final void ruleXParenthesizedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1605:2: ( ( ( rule__XParenthesizedExpression__Group__0 ) ) )
+            // InternalChartDSL.g:1606:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            {
+            // InternalChartDSL.g:1606:2: ( ( rule__XParenthesizedExpression__Group__0 ) )
+            // InternalChartDSL.g:1607:3: ( rule__XParenthesizedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXParenthesizedExpressionAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1608:3: ( rule__XParenthesizedExpression__Group__0 )
+            // InternalChartDSL.g:1608: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"
+    // InternalChartDSL.g:1617:1: entryRuleXIfExpression : ruleXIfExpression EOF ;
+    public final void entryRuleXIfExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1618:1: ( ruleXIfExpression EOF )
+            // InternalChartDSL.g:1619: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"
+    // InternalChartDSL.g:1626:1: ruleXIfExpression : ( ( rule__XIfExpression__Group__0 ) ) ;
+    public final void ruleXIfExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1630:2: ( ( ( rule__XIfExpression__Group__0 ) ) )
+            // InternalChartDSL.g:1631:2: ( ( rule__XIfExpression__Group__0 ) )
+            {
+            // InternalChartDSL.g:1631:2: ( ( rule__XIfExpression__Group__0 ) )
+            // InternalChartDSL.g:1632:3: ( rule__XIfExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1633:3: ( rule__XIfExpression__Group__0 )
+            // InternalChartDSL.g:1633: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"
+    // InternalChartDSL.g:1642:1: entryRuleXSwitchExpression : ruleXSwitchExpression EOF ;
+    public final void entryRuleXSwitchExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1643:1: ( ruleXSwitchExpression EOF )
+            // InternalChartDSL.g:1644: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"
+    // InternalChartDSL.g:1651:1: ruleXSwitchExpression : ( ( rule__XSwitchExpression__Group__0 ) ) ;
+    public final void ruleXSwitchExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1655:2: ( ( ( rule__XSwitchExpression__Group__0 ) ) )
+            // InternalChartDSL.g:1656:2: ( ( rule__XSwitchExpression__Group__0 ) )
+            {
+            // InternalChartDSL.g:1656:2: ( ( rule__XSwitchExpression__Group__0 ) )
+            // InternalChartDSL.g:1657:3: ( rule__XSwitchExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1658:3: ( rule__XSwitchExpression__Group__0 )
+            // InternalChartDSL.g:1658: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"
+    // InternalChartDSL.g:1667:1: entryRuleXCasePart : ruleXCasePart EOF ;
+    public final void entryRuleXCasePart() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1668:1: ( ruleXCasePart EOF )
+            // InternalChartDSL.g:1669: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"
+    // InternalChartDSL.g:1676:1: ruleXCasePart : ( ( rule__XCasePart__Group__0 ) ) ;
+    public final void ruleXCasePart() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1680:2: ( ( ( rule__XCasePart__Group__0 ) ) )
+            // InternalChartDSL.g:1681:2: ( ( rule__XCasePart__Group__0 ) )
+            {
+            // InternalChartDSL.g:1681:2: ( ( rule__XCasePart__Group__0 ) )
+            // InternalChartDSL.g:1682:3: ( rule__XCasePart__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1683:3: ( rule__XCasePart__Group__0 )
+            // InternalChartDSL.g:1683: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"
+    // InternalChartDSL.g:1692:1: entryRuleXForLoopExpression : ruleXForLoopExpression EOF ;
+    public final void entryRuleXForLoopExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1693:1: ( ruleXForLoopExpression EOF )
+            // InternalChartDSL.g:1694: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"
+    // InternalChartDSL.g:1701:1: ruleXForLoopExpression : ( ( rule__XForLoopExpression__Group__0 ) ) ;
+    public final void ruleXForLoopExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1705:2: ( ( ( rule__XForLoopExpression__Group__0 ) ) )
+            // InternalChartDSL.g:1706:2: ( ( rule__XForLoopExpression__Group__0 ) )
+            {
+            // InternalChartDSL.g:1706:2: ( ( rule__XForLoopExpression__Group__0 ) )
+            // InternalChartDSL.g:1707:3: ( rule__XForLoopExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1708:3: ( rule__XForLoopExpression__Group__0 )
+            // InternalChartDSL.g:1708: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"
+    // InternalChartDSL.g:1717:1: entryRuleXBasicForLoopExpression : ruleXBasicForLoopExpression EOF ;
+    public final void entryRuleXBasicForLoopExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1718:1: ( ruleXBasicForLoopExpression EOF )
+            // InternalChartDSL.g:1719: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"
+    // InternalChartDSL.g:1726:1: ruleXBasicForLoopExpression : ( ( rule__XBasicForLoopExpression__Group__0 ) ) ;
+    public final void ruleXBasicForLoopExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1730:2: ( ( ( rule__XBasicForLoopExpression__Group__0 ) ) )
+            // InternalChartDSL.g:1731:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            {
+            // InternalChartDSL.g:1731:2: ( ( rule__XBasicForLoopExpression__Group__0 ) )
+            // InternalChartDSL.g:1732:3: ( rule__XBasicForLoopExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1733:3: ( rule__XBasicForLoopExpression__Group__0 )
+            // InternalChartDSL.g:1733: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"
+    // InternalChartDSL.g:1742:1: entryRuleXWhileExpression : ruleXWhileExpression EOF ;
+    public final void entryRuleXWhileExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1743:1: ( ruleXWhileExpression EOF )
+            // InternalChartDSL.g:1744: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"
+    // InternalChartDSL.g:1751:1: ruleXWhileExpression : ( ( rule__XWhileExpression__Group__0 ) ) ;
+    public final void ruleXWhileExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1755:2: ( ( ( rule__XWhileExpression__Group__0 ) ) )
+            // InternalChartDSL.g:1756:2: ( ( rule__XWhileExpression__Group__0 ) )
+            {
+            // InternalChartDSL.g:1756:2: ( ( rule__XWhileExpression__Group__0 ) )
+            // InternalChartDSL.g:1757:3: ( rule__XWhileExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1758:3: ( rule__XWhileExpression__Group__0 )
+            // InternalChartDSL.g:1758: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"
+    // InternalChartDSL.g:1767:1: entryRuleXDoWhileExpression : ruleXDoWhileExpression EOF ;
+    public final void entryRuleXDoWhileExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1768:1: ( ruleXDoWhileExpression EOF )
+            // InternalChartDSL.g:1769: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"
+    // InternalChartDSL.g:1776:1: ruleXDoWhileExpression : ( ( rule__XDoWhileExpression__Group__0 ) ) ;
+    public final void ruleXDoWhileExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1780:2: ( ( ( rule__XDoWhileExpression__Group__0 ) ) )
+            // InternalChartDSL.g:1781:2: ( ( rule__XDoWhileExpression__Group__0 ) )
+            {
+            // InternalChartDSL.g:1781:2: ( ( rule__XDoWhileExpression__Group__0 ) )
+            // InternalChartDSL.g:1782:3: ( rule__XDoWhileExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1783:3: ( rule__XDoWhileExpression__Group__0 )
+            // InternalChartDSL.g:1783: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"
+    // InternalChartDSL.g:1792:1: entryRuleXBlockExpression : ruleXBlockExpression EOF ;
+    public final void entryRuleXBlockExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1793:1: ( ruleXBlockExpression EOF )
+            // InternalChartDSL.g:1794: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"
+    // InternalChartDSL.g:1801:1: ruleXBlockExpression : ( ( rule__XBlockExpression__Group__0 ) ) ;
+    public final void ruleXBlockExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1805:2: ( ( ( rule__XBlockExpression__Group__0 ) ) )
+            // InternalChartDSL.g:1806:2: ( ( rule__XBlockExpression__Group__0 ) )
+            {
+            // InternalChartDSL.g:1806:2: ( ( rule__XBlockExpression__Group__0 ) )
+            // InternalChartDSL.g:1807:3: ( rule__XBlockExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1808:3: ( rule__XBlockExpression__Group__0 )
+            // InternalChartDSL.g:1808: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"
+    // InternalChartDSL.g:1817:1: entryRuleXExpressionOrVarDeclaration : ruleXExpressionOrVarDeclaration EOF ;
+    public final void entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1818:1: ( ruleXExpressionOrVarDeclaration EOF )
+            // InternalChartDSL.g:1819: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"
+    // InternalChartDSL.g:1826:1: ruleXExpressionOrVarDeclaration : ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) ;
+    public final void ruleXExpressionOrVarDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1830:2: ( ( ( rule__XExpressionOrVarDeclaration__Alternatives ) ) )
+            // InternalChartDSL.g:1831:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            {
+            // InternalChartDSL.g:1831:2: ( ( rule__XExpressionOrVarDeclaration__Alternatives ) )
+            // InternalChartDSL.g:1832:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionOrVarDeclarationAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:1833:3: ( rule__XExpressionOrVarDeclaration__Alternatives )
+            // InternalChartDSL.g:1833: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"
+    // InternalChartDSL.g:1842:1: entryRuleXVariableDeclaration : ruleXVariableDeclaration EOF ;
+    public final void entryRuleXVariableDeclaration() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1843:1: ( ruleXVariableDeclaration EOF )
+            // InternalChartDSL.g:1844: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"
+    // InternalChartDSL.g:1851:1: ruleXVariableDeclaration : ( ( rule__XVariableDeclaration__Group__0 ) ) ;
+    public final void ruleXVariableDeclaration() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1855:2: ( ( ( rule__XVariableDeclaration__Group__0 ) ) )
+            // InternalChartDSL.g:1856:2: ( ( rule__XVariableDeclaration__Group__0 ) )
+            {
+            // InternalChartDSL.g:1856:2: ( ( rule__XVariableDeclaration__Group__0 ) )
+            // InternalChartDSL.g:1857:3: ( rule__XVariableDeclaration__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1858:3: ( rule__XVariableDeclaration__Group__0 )
+            // InternalChartDSL.g:1858: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"
+    // InternalChartDSL.g:1867:1: entryRuleJvmFormalParameter : ruleJvmFormalParameter EOF ;
+    public final void entryRuleJvmFormalParameter() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1868:1: ( ruleJvmFormalParameter EOF )
+            // InternalChartDSL.g:1869: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"
+    // InternalChartDSL.g:1876:1: ruleJvmFormalParameter : ( ( rule__JvmFormalParameter__Group__0 ) ) ;
+    public final void ruleJvmFormalParameter() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1880:2: ( ( ( rule__JvmFormalParameter__Group__0 ) ) )
+            // InternalChartDSL.g:1881:2: ( ( rule__JvmFormalParameter__Group__0 ) )
+            {
+            // InternalChartDSL.g:1881:2: ( ( rule__JvmFormalParameter__Group__0 ) )
+            // InternalChartDSL.g:1882:3: ( rule__JvmFormalParameter__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1883:3: ( rule__JvmFormalParameter__Group__0 )
+            // InternalChartDSL.g:1883: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"
+    // InternalChartDSL.g:1892:1: entryRuleFullJvmFormalParameter : ruleFullJvmFormalParameter EOF ;
+    public final void entryRuleFullJvmFormalParameter() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1893:1: ( ruleFullJvmFormalParameter EOF )
+            // InternalChartDSL.g:1894: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"
+    // InternalChartDSL.g:1901:1: ruleFullJvmFormalParameter : ( ( rule__FullJvmFormalParameter__Group__0 ) ) ;
+    public final void ruleFullJvmFormalParameter() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1905:2: ( ( ( rule__FullJvmFormalParameter__Group__0 ) ) )
+            // InternalChartDSL.g:1906:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            {
+            // InternalChartDSL.g:1906:2: ( ( rule__FullJvmFormalParameter__Group__0 ) )
+            // InternalChartDSL.g:1907:3: ( rule__FullJvmFormalParameter__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1908:3: ( rule__FullJvmFormalParameter__Group__0 )
+            // InternalChartDSL.g:1908: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"
+    // InternalChartDSL.g:1917:1: entryRuleXFeatureCall : ruleXFeatureCall EOF ;
+    public final void entryRuleXFeatureCall() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1918:1: ( ruleXFeatureCall EOF )
+            // InternalChartDSL.g:1919: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"
+    // InternalChartDSL.g:1926:1: ruleXFeatureCall : ( ( rule__XFeatureCall__Group__0 ) ) ;
+    public final void ruleXFeatureCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1930:2: ( ( ( rule__XFeatureCall__Group__0 ) ) )
+            // InternalChartDSL.g:1931:2: ( ( rule__XFeatureCall__Group__0 ) )
+            {
+            // InternalChartDSL.g:1931:2: ( ( rule__XFeatureCall__Group__0 ) )
+            // InternalChartDSL.g:1932:3: ( rule__XFeatureCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:1933:3: ( rule__XFeatureCall__Group__0 )
+            // InternalChartDSL.g:1933: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"
+    // InternalChartDSL.g:1942:1: entryRuleFeatureCallID : ruleFeatureCallID EOF ;
+    public final void entryRuleFeatureCallID() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1943:1: ( ruleFeatureCallID EOF )
+            // InternalChartDSL.g:1944: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"
+    // InternalChartDSL.g:1951:1: ruleFeatureCallID : ( ( rule__FeatureCallID__Alternatives ) ) ;
+    public final void ruleFeatureCallID() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1955:2: ( ( ( rule__FeatureCallID__Alternatives ) ) )
+            // InternalChartDSL.g:1956:2: ( ( rule__FeatureCallID__Alternatives ) )
+            {
+            // InternalChartDSL.g:1956:2: ( ( rule__FeatureCallID__Alternatives ) )
+            // InternalChartDSL.g:1957:3: ( rule__FeatureCallID__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFeatureCallIDAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:1958:3: ( rule__FeatureCallID__Alternatives )
+            // InternalChartDSL.g:1958: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"
+    // InternalChartDSL.g:1967:1: entryRuleIdOrSuper : ruleIdOrSuper EOF ;
+    public final void entryRuleIdOrSuper() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1968:1: ( ruleIdOrSuper EOF )
+            // InternalChartDSL.g:1969: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"
+    // InternalChartDSL.g:1976:1: ruleIdOrSuper : ( ( rule__IdOrSuper__Alternatives ) ) ;
+    public final void ruleIdOrSuper() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:1980:2: ( ( ( rule__IdOrSuper__Alternatives ) ) )
+            // InternalChartDSL.g:1981:2: ( ( rule__IdOrSuper__Alternatives ) )
+            {
+            // InternalChartDSL.g:1981:2: ( ( rule__IdOrSuper__Alternatives ) )
+            // InternalChartDSL.g:1982:3: ( rule__IdOrSuper__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getIdOrSuperAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:1983:3: ( rule__IdOrSuper__Alternatives )
+            // InternalChartDSL.g:1983: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"
+    // InternalChartDSL.g:1992:1: entryRuleXConstructorCall : ruleXConstructorCall EOF ;
+    public final void entryRuleXConstructorCall() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:1993:1: ( ruleXConstructorCall EOF )
+            // InternalChartDSL.g:1994: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"
+    // InternalChartDSL.g:2001:1: ruleXConstructorCall : ( ( rule__XConstructorCall__Group__0 ) ) ;
+    public final void ruleXConstructorCall() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2005:2: ( ( ( rule__XConstructorCall__Group__0 ) ) )
+            // InternalChartDSL.g:2006:2: ( ( rule__XConstructorCall__Group__0 ) )
+            {
+            // InternalChartDSL.g:2006:2: ( ( rule__XConstructorCall__Group__0 ) )
+            // InternalChartDSL.g:2007:3: ( rule__XConstructorCall__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2008:3: ( rule__XConstructorCall__Group__0 )
+            // InternalChartDSL.g:2008: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"
+    // InternalChartDSL.g:2017:1: entryRuleXBooleanLiteral : ruleXBooleanLiteral EOF ;
+    public final void entryRuleXBooleanLiteral() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2018:1: ( ruleXBooleanLiteral EOF )
+            // InternalChartDSL.g:2019: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"
+    // InternalChartDSL.g:2026:1: ruleXBooleanLiteral : ( ( rule__XBooleanLiteral__Group__0 ) ) ;
+    public final void ruleXBooleanLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2030:2: ( ( ( rule__XBooleanLiteral__Group__0 ) ) )
+            // InternalChartDSL.g:2031:2: ( ( rule__XBooleanLiteral__Group__0 ) )
+            {
+            // InternalChartDSL.g:2031:2: ( ( rule__XBooleanLiteral__Group__0 ) )
+            // InternalChartDSL.g:2032:3: ( rule__XBooleanLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2033:3: ( rule__XBooleanLiteral__Group__0 )
+            // InternalChartDSL.g:2033: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"
+    // InternalChartDSL.g:2042:1: entryRuleXNullLiteral : ruleXNullLiteral EOF ;
+    public final void entryRuleXNullLiteral() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2043:1: ( ruleXNullLiteral EOF )
+            // InternalChartDSL.g:2044: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"
+    // InternalChartDSL.g:2051:1: ruleXNullLiteral : ( ( rule__XNullLiteral__Group__0 ) ) ;
+    public final void ruleXNullLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2055:2: ( ( ( rule__XNullLiteral__Group__0 ) ) )
+            // InternalChartDSL.g:2056:2: ( ( rule__XNullLiteral__Group__0 ) )
+            {
+            // InternalChartDSL.g:2056:2: ( ( rule__XNullLiteral__Group__0 ) )
+            // InternalChartDSL.g:2057:3: ( rule__XNullLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNullLiteralAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2058:3: ( rule__XNullLiteral__Group__0 )
+            // InternalChartDSL.g:2058: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"
+    // InternalChartDSL.g:2067:1: entryRuleXNumberLiteral : ruleXNumberLiteral EOF ;
+    public final void entryRuleXNumberLiteral() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2068:1: ( ruleXNumberLiteral EOF )
+            // InternalChartDSL.g:2069: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"
+    // InternalChartDSL.g:2076:1: ruleXNumberLiteral : ( ( rule__XNumberLiteral__Group__0 ) ) ;
+    public final void ruleXNumberLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2080:2: ( ( ( rule__XNumberLiteral__Group__0 ) ) )
+            // InternalChartDSL.g:2081:2: ( ( rule__XNumberLiteral__Group__0 ) )
+            {
+            // InternalChartDSL.g:2081:2: ( ( rule__XNumberLiteral__Group__0 ) )
+            // InternalChartDSL.g:2082:3: ( rule__XNumberLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNumberLiteralAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2083:3: ( rule__XNumberLiteral__Group__0 )
+            // InternalChartDSL.g:2083: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"
+    // InternalChartDSL.g:2092:1: entryRuleXStringLiteral : ruleXStringLiteral EOF ;
+    public final void entryRuleXStringLiteral() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2093:1: ( ruleXStringLiteral EOF )
+            // InternalChartDSL.g:2094: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"
+    // InternalChartDSL.g:2101:1: ruleXStringLiteral : ( ( rule__XStringLiteral__Group__0 ) ) ;
+    public final void ruleXStringLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2105:2: ( ( ( rule__XStringLiteral__Group__0 ) ) )
+            // InternalChartDSL.g:2106:2: ( ( rule__XStringLiteral__Group__0 ) )
+            {
+            // InternalChartDSL.g:2106:2: ( ( rule__XStringLiteral__Group__0 ) )
+            // InternalChartDSL.g:2107:3: ( rule__XStringLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXStringLiteralAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2108:3: ( rule__XStringLiteral__Group__0 )
+            // InternalChartDSL.g:2108: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"
+    // InternalChartDSL.g:2117:1: entryRuleXTypeLiteral : ruleXTypeLiteral EOF ;
+    public final void entryRuleXTypeLiteral() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2118:1: ( ruleXTypeLiteral EOF )
+            // InternalChartDSL.g:2119: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"
+    // InternalChartDSL.g:2126:1: ruleXTypeLiteral : ( ( rule__XTypeLiteral__Group__0 ) ) ;
+    public final void ruleXTypeLiteral() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2130:2: ( ( ( rule__XTypeLiteral__Group__0 ) ) )
+            // InternalChartDSL.g:2131:2: ( ( rule__XTypeLiteral__Group__0 ) )
+            {
+            // InternalChartDSL.g:2131:2: ( ( rule__XTypeLiteral__Group__0 ) )
+            // InternalChartDSL.g:2132:3: ( rule__XTypeLiteral__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2133:3: ( rule__XTypeLiteral__Group__0 )
+            // InternalChartDSL.g:2133: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"
+    // InternalChartDSL.g:2142:1: entryRuleXThrowExpression : ruleXThrowExpression EOF ;
+    public final void entryRuleXThrowExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2143:1: ( ruleXThrowExpression EOF )
+            // InternalChartDSL.g:2144: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"
+    // InternalChartDSL.g:2151:1: ruleXThrowExpression : ( ( rule__XThrowExpression__Group__0 ) ) ;
+    public final void ruleXThrowExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2155:2: ( ( ( rule__XThrowExpression__Group__0 ) ) )
+            // InternalChartDSL.g:2156:2: ( ( rule__XThrowExpression__Group__0 ) )
+            {
+            // InternalChartDSL.g:2156:2: ( ( rule__XThrowExpression__Group__0 ) )
+            // InternalChartDSL.g:2157:3: ( rule__XThrowExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2158:3: ( rule__XThrowExpression__Group__0 )
+            // InternalChartDSL.g:2158: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"
+    // InternalChartDSL.g:2167:1: entryRuleXReturnExpression : ruleXReturnExpression EOF ;
+    public final void entryRuleXReturnExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2168:1: ( ruleXReturnExpression EOF )
+            // InternalChartDSL.g:2169: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"
+    // InternalChartDSL.g:2176:1: ruleXReturnExpression : ( ( rule__XReturnExpression__Group__0 ) ) ;
+    public final void ruleXReturnExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2180:2: ( ( ( rule__XReturnExpression__Group__0 ) ) )
+            // InternalChartDSL.g:2181:2: ( ( rule__XReturnExpression__Group__0 ) )
+            {
+            // InternalChartDSL.g:2181:2: ( ( rule__XReturnExpression__Group__0 ) )
+            // InternalChartDSL.g:2182:3: ( rule__XReturnExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2183:3: ( rule__XReturnExpression__Group__0 )
+            // InternalChartDSL.g:2183: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"
+    // InternalChartDSL.g:2192:1: entryRuleXTryCatchFinallyExpression : ruleXTryCatchFinallyExpression EOF ;
+    public final void entryRuleXTryCatchFinallyExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2193:1: ( ruleXTryCatchFinallyExpression EOF )
+            // InternalChartDSL.g:2194: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"
+    // InternalChartDSL.g:2201:1: ruleXTryCatchFinallyExpression : ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) ;
+    public final void ruleXTryCatchFinallyExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2205:2: ( ( ( rule__XTryCatchFinallyExpression__Group__0 ) ) )
+            // InternalChartDSL.g:2206:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            {
+            // InternalChartDSL.g:2206:2: ( ( rule__XTryCatchFinallyExpression__Group__0 ) )
+            // InternalChartDSL.g:2207:3: ( rule__XTryCatchFinallyExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2208:3: ( rule__XTryCatchFinallyExpression__Group__0 )
+            // InternalChartDSL.g:2208: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"
+    // InternalChartDSL.g:2217:1: entryRuleXSynchronizedExpression : ruleXSynchronizedExpression EOF ;
+    public final void entryRuleXSynchronizedExpression() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2218:1: ( ruleXSynchronizedExpression EOF )
+            // InternalChartDSL.g:2219: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"
+    // InternalChartDSL.g:2226:1: ruleXSynchronizedExpression : ( ( rule__XSynchronizedExpression__Group__0 ) ) ;
+    public final void ruleXSynchronizedExpression() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2230:2: ( ( ( rule__XSynchronizedExpression__Group__0 ) ) )
+            // InternalChartDSL.g:2231:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            {
+            // InternalChartDSL.g:2231:2: ( ( rule__XSynchronizedExpression__Group__0 ) )
+            // InternalChartDSL.g:2232:3: ( rule__XSynchronizedExpression__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2233:3: ( rule__XSynchronizedExpression__Group__0 )
+            // InternalChartDSL.g:2233: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"
+    // InternalChartDSL.g:2242:1: entryRuleXCatchClause : ruleXCatchClause EOF ;
+    public final void entryRuleXCatchClause() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2243:1: ( ruleXCatchClause EOF )
+            // InternalChartDSL.g:2244: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"
+    // InternalChartDSL.g:2251:1: ruleXCatchClause : ( ( rule__XCatchClause__Group__0 ) ) ;
+    public final void ruleXCatchClause() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2255:2: ( ( ( rule__XCatchClause__Group__0 ) ) )
+            // InternalChartDSL.g:2256:2: ( ( rule__XCatchClause__Group__0 ) )
+            {
+            // InternalChartDSL.g:2256:2: ( ( rule__XCatchClause__Group__0 ) )
+            // InternalChartDSL.g:2257:3: ( rule__XCatchClause__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2258:3: ( rule__XCatchClause__Group__0 )
+            // InternalChartDSL.g:2258: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"
+    // InternalChartDSL.g:2267:1: entryRuleQualifiedName : ruleQualifiedName EOF ;
+    public final void entryRuleQualifiedName() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2268:1: ( ruleQualifiedName EOF )
+            // InternalChartDSL.g:2269: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"
+    // InternalChartDSL.g:2276:1: ruleQualifiedName : ( ( rule__QualifiedName__Group__0 ) ) ;
+    public final void ruleQualifiedName() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2280:2: ( ( ( rule__QualifiedName__Group__0 ) ) )
+            // InternalChartDSL.g:2281:2: ( ( rule__QualifiedName__Group__0 ) )
+            {
+            // InternalChartDSL.g:2281:2: ( ( rule__QualifiedName__Group__0 ) )
+            // InternalChartDSL.g:2282:3: ( rule__QualifiedName__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2283:3: ( rule__QualifiedName__Group__0 )
+            // InternalChartDSL.g:2283: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"
+    // InternalChartDSL.g:2292:1: entryRuleNumber : ruleNumber EOF ;
+    public final void entryRuleNumber() throws RecognitionException {
+         
+        	HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+
+        try {
+            // InternalChartDSL.g:2296:1: ( ruleNumber EOF )
+            // InternalChartDSL.g:2297: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"
+    // InternalChartDSL.g:2307:1: ruleNumber : ( ( rule__Number__Alternatives ) ) ;
+    public final void ruleNumber() throws RecognitionException {
+
+        		HiddenTokens myHiddenTokenState = ((XtextTokenStream)input).setHiddenTokens();
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2312:2: ( ( ( rule__Number__Alternatives ) ) )
+            // InternalChartDSL.g:2313:2: ( ( rule__Number__Alternatives ) )
+            {
+            // InternalChartDSL.g:2313:2: ( ( rule__Number__Alternatives ) )
+            // InternalChartDSL.g:2314:3: ( rule__Number__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:2315:3: ( rule__Number__Alternatives )
+            // InternalChartDSL.g:2315: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"
+    // InternalChartDSL.g:2325:1: entryRuleJvmTypeReference : ruleJvmTypeReference EOF ;
+    public final void entryRuleJvmTypeReference() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2326:1: ( ruleJvmTypeReference EOF )
+            // InternalChartDSL.g:2327: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"
+    // InternalChartDSL.g:2334:1: ruleJvmTypeReference : ( ( rule__JvmTypeReference__Alternatives ) ) ;
+    public final void ruleJvmTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2338:2: ( ( ( rule__JvmTypeReference__Alternatives ) ) )
+            // InternalChartDSL.g:2339:2: ( ( rule__JvmTypeReference__Alternatives ) )
+            {
+            // InternalChartDSL.g:2339:2: ( ( rule__JvmTypeReference__Alternatives ) )
+            // InternalChartDSL.g:2340:3: ( rule__JvmTypeReference__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:2341:3: ( rule__JvmTypeReference__Alternatives )
+            // InternalChartDSL.g:2341: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"
+    // InternalChartDSL.g:2350:1: entryRuleArrayBrackets : ruleArrayBrackets EOF ;
+    public final void entryRuleArrayBrackets() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2351:1: ( ruleArrayBrackets EOF )
+            // InternalChartDSL.g:2352: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"
+    // InternalChartDSL.g:2359:1: ruleArrayBrackets : ( ( rule__ArrayBrackets__Group__0 ) ) ;
+    public final void ruleArrayBrackets() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2363:2: ( ( ( rule__ArrayBrackets__Group__0 ) ) )
+            // InternalChartDSL.g:2364:2: ( ( rule__ArrayBrackets__Group__0 ) )
+            {
+            // InternalChartDSL.g:2364:2: ( ( rule__ArrayBrackets__Group__0 ) )
+            // InternalChartDSL.g:2365:3: ( rule__ArrayBrackets__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getArrayBracketsAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2366:3: ( rule__ArrayBrackets__Group__0 )
+            // InternalChartDSL.g:2366: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"
+    // InternalChartDSL.g:2375:1: entryRuleXFunctionTypeRef : ruleXFunctionTypeRef EOF ;
+    public final void entryRuleXFunctionTypeRef() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2376:1: ( ruleXFunctionTypeRef EOF )
+            // InternalChartDSL.g:2377: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"
+    // InternalChartDSL.g:2384:1: ruleXFunctionTypeRef : ( ( rule__XFunctionTypeRef__Group__0 ) ) ;
+    public final void ruleXFunctionTypeRef() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2388:2: ( ( ( rule__XFunctionTypeRef__Group__0 ) ) )
+            // InternalChartDSL.g:2389:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            {
+            // InternalChartDSL.g:2389:2: ( ( rule__XFunctionTypeRef__Group__0 ) )
+            // InternalChartDSL.g:2390:3: ( rule__XFunctionTypeRef__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2391:3: ( rule__XFunctionTypeRef__Group__0 )
+            // InternalChartDSL.g:2391: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"
+    // InternalChartDSL.g:2400:1: entryRuleJvmParameterizedTypeReference : ruleJvmParameterizedTypeReference EOF ;
+    public final void entryRuleJvmParameterizedTypeReference() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2401:1: ( ruleJvmParameterizedTypeReference EOF )
+            // InternalChartDSL.g:2402: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"
+    // InternalChartDSL.g:2409:1: ruleJvmParameterizedTypeReference : ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) ;
+    public final void ruleJvmParameterizedTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2413:2: ( ( ( rule__JvmParameterizedTypeReference__Group__0 ) ) )
+            // InternalChartDSL.g:2414:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            {
+            // InternalChartDSL.g:2414:2: ( ( rule__JvmParameterizedTypeReference__Group__0 ) )
+            // InternalChartDSL.g:2415:3: ( rule__JvmParameterizedTypeReference__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2416:3: ( rule__JvmParameterizedTypeReference__Group__0 )
+            // InternalChartDSL.g:2416: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"
+    // InternalChartDSL.g:2425:1: entryRuleJvmArgumentTypeReference : ruleJvmArgumentTypeReference EOF ;
+    public final void entryRuleJvmArgumentTypeReference() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2426:1: ( ruleJvmArgumentTypeReference EOF )
+            // InternalChartDSL.g:2427: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"
+    // InternalChartDSL.g:2434:1: ruleJvmArgumentTypeReference : ( ( rule__JvmArgumentTypeReference__Alternatives ) ) ;
+    public final void ruleJvmArgumentTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2438:2: ( ( ( rule__JvmArgumentTypeReference__Alternatives ) ) )
+            // InternalChartDSL.g:2439:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            {
+            // InternalChartDSL.g:2439:2: ( ( rule__JvmArgumentTypeReference__Alternatives ) )
+            // InternalChartDSL.g:2440:3: ( rule__JvmArgumentTypeReference__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmArgumentTypeReferenceAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:2441:3: ( rule__JvmArgumentTypeReference__Alternatives )
+            // InternalChartDSL.g:2441: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"
+    // InternalChartDSL.g:2450:1: entryRuleJvmWildcardTypeReference : ruleJvmWildcardTypeReference EOF ;
+    public final void entryRuleJvmWildcardTypeReference() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2451:1: ( ruleJvmWildcardTypeReference EOF )
+            // InternalChartDSL.g:2452: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"
+    // InternalChartDSL.g:2459:1: ruleJvmWildcardTypeReference : ( ( rule__JvmWildcardTypeReference__Group__0 ) ) ;
+    public final void ruleJvmWildcardTypeReference() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2463:2: ( ( ( rule__JvmWildcardTypeReference__Group__0 ) ) )
+            // InternalChartDSL.g:2464:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            {
+            // InternalChartDSL.g:2464:2: ( ( rule__JvmWildcardTypeReference__Group__0 ) )
+            // InternalChartDSL.g:2465:3: ( rule__JvmWildcardTypeReference__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2466:3: ( rule__JvmWildcardTypeReference__Group__0 )
+            // InternalChartDSL.g:2466: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"
+    // InternalChartDSL.g:2475:1: entryRuleJvmUpperBound : ruleJvmUpperBound EOF ;
+    public final void entryRuleJvmUpperBound() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2476:1: ( ruleJvmUpperBound EOF )
+            // InternalChartDSL.g:2477: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"
+    // InternalChartDSL.g:2484:1: ruleJvmUpperBound : ( ( rule__JvmUpperBound__Group__0 ) ) ;
+    public final void ruleJvmUpperBound() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2488:2: ( ( ( rule__JvmUpperBound__Group__0 ) ) )
+            // InternalChartDSL.g:2489:2: ( ( rule__JvmUpperBound__Group__0 ) )
+            {
+            // InternalChartDSL.g:2489:2: ( ( rule__JvmUpperBound__Group__0 ) )
+            // InternalChartDSL.g:2490:3: ( rule__JvmUpperBound__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2491:3: ( rule__JvmUpperBound__Group__0 )
+            // InternalChartDSL.g:2491: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"
+    // InternalChartDSL.g:2500:1: entryRuleJvmUpperBoundAnded : ruleJvmUpperBoundAnded EOF ;
+    public final void entryRuleJvmUpperBoundAnded() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2501:1: ( ruleJvmUpperBoundAnded EOF )
+            // InternalChartDSL.g:2502: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"
+    // InternalChartDSL.g:2509:1: ruleJvmUpperBoundAnded : ( ( rule__JvmUpperBoundAnded__Group__0 ) ) ;
+    public final void ruleJvmUpperBoundAnded() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2513:2: ( ( ( rule__JvmUpperBoundAnded__Group__0 ) ) )
+            // InternalChartDSL.g:2514:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            {
+            // InternalChartDSL.g:2514:2: ( ( rule__JvmUpperBoundAnded__Group__0 ) )
+            // InternalChartDSL.g:2515:3: ( rule__JvmUpperBoundAnded__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAndedAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2516:3: ( rule__JvmUpperBoundAnded__Group__0 )
+            // InternalChartDSL.g:2516: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"
+    // InternalChartDSL.g:2525:1: entryRuleJvmLowerBound : ruleJvmLowerBound EOF ;
+    public final void entryRuleJvmLowerBound() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2526:1: ( ruleJvmLowerBound EOF )
+            // InternalChartDSL.g:2527: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"
+    // InternalChartDSL.g:2534:1: ruleJvmLowerBound : ( ( rule__JvmLowerBound__Group__0 ) ) ;
+    public final void ruleJvmLowerBound() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2538:2: ( ( ( rule__JvmLowerBound__Group__0 ) ) )
+            // InternalChartDSL.g:2539:2: ( ( rule__JvmLowerBound__Group__0 ) )
+            {
+            // InternalChartDSL.g:2539:2: ( ( rule__JvmLowerBound__Group__0 ) )
+            // InternalChartDSL.g:2540:3: ( rule__JvmLowerBound__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2541:3: ( rule__JvmLowerBound__Group__0 )
+            // InternalChartDSL.g:2541: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"
+    // InternalChartDSL.g:2550:1: entryRuleJvmLowerBoundAnded : ruleJvmLowerBoundAnded EOF ;
+    public final void entryRuleJvmLowerBoundAnded() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2551:1: ( ruleJvmLowerBoundAnded EOF )
+            // InternalChartDSL.g:2552: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"
+    // InternalChartDSL.g:2559:1: ruleJvmLowerBoundAnded : ( ( rule__JvmLowerBoundAnded__Group__0 ) ) ;
+    public final void ruleJvmLowerBoundAnded() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2563:2: ( ( ( rule__JvmLowerBoundAnded__Group__0 ) ) )
+            // InternalChartDSL.g:2564:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            {
+            // InternalChartDSL.g:2564:2: ( ( rule__JvmLowerBoundAnded__Group__0 ) )
+            // InternalChartDSL.g:2565:3: ( rule__JvmLowerBoundAnded__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAndedAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2566:3: ( rule__JvmLowerBoundAnded__Group__0 )
+            // InternalChartDSL.g:2566: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"
+    // InternalChartDSL.g:2575:1: entryRuleQualifiedNameWithWildcard : ruleQualifiedNameWithWildcard EOF ;
+    public final void entryRuleQualifiedNameWithWildcard() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2576:1: ( ruleQualifiedNameWithWildcard EOF )
+            // InternalChartDSL.g:2577: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"
+    // InternalChartDSL.g:2584:1: ruleQualifiedNameWithWildcard : ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) ;
+    public final void ruleQualifiedNameWithWildcard() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2588:2: ( ( ( rule__QualifiedNameWithWildcard__Group__0 ) ) )
+            // InternalChartDSL.g:2589:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            {
+            // InternalChartDSL.g:2589:2: ( ( rule__QualifiedNameWithWildcard__Group__0 ) )
+            // InternalChartDSL.g:2590:3: ( rule__QualifiedNameWithWildcard__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameWithWildcardAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2591:3: ( rule__QualifiedNameWithWildcard__Group__0 )
+            // InternalChartDSL.g:2591: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"
+    // InternalChartDSL.g:2600:1: entryRuleValidID : ruleValidID EOF ;
+    public final void entryRuleValidID() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2601:1: ( ruleValidID EOF )
+            // InternalChartDSL.g:2602: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"
+    // InternalChartDSL.g:2609:1: ruleValidID : ( RULE_ID ) ;
+    public final void ruleValidID() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2613:2: ( ( RULE_ID ) )
+            // InternalChartDSL.g:2614:2: ( RULE_ID )
+            {
+            // InternalChartDSL.g:2614:2: ( RULE_ID )
+            // InternalChartDSL.g:2615: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"
+    // InternalChartDSL.g:2625:1: entryRuleXImportSection : ruleXImportSection EOF ;
+    public final void entryRuleXImportSection() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2626:1: ( ruleXImportSection EOF )
+            // InternalChartDSL.g:2627: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"
+    // InternalChartDSL.g:2634:1: ruleXImportSection : ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) ;
+    public final void ruleXImportSection() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2638:2: ( ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) ) )
+            // InternalChartDSL.g:2639:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
+            {
+            // InternalChartDSL.g:2639:2: ( ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* ) )
+            // InternalChartDSL.g:2640:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) ) ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
+            {
+            // InternalChartDSL.g:2640:3: ( ( rule__XImportSection__ImportDeclarationsAssignment ) )
+            // InternalChartDSL.g:2641:4: ( rule__XImportSection__ImportDeclarationsAssignment )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
+            }
+            // InternalChartDSL.g:2642:4: ( rule__XImportSection__ImportDeclarationsAssignment )
+            // InternalChartDSL.g:2642:5: rule__XImportSection__ImportDeclarationsAssignment
+            {
+            pushFollow(FOLLOW_3);
+            rule__XImportSection__ImportDeclarationsAssignment();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
+            }
+
+            }
+
+            // InternalChartDSL.g:2645:3: ( ( rule__XImportSection__ImportDeclarationsAssignment )* )
+            // InternalChartDSL.g:2646:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportSectionAccess().getImportDeclarationsAssignment()); 
+            }
+            // InternalChartDSL.g:2647:4: ( rule__XImportSection__ImportDeclarationsAssignment )*
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( (LA2_0==47) ) {
+                    alt2=1;
+                }
+
+
+                switch (alt2) {
+            	case 1 :
+            	    // InternalChartDSL.g:2647:5: rule__XImportSection__ImportDeclarationsAssignment
+            	    {
+            	    pushFollow(FOLLOW_3);
+            	    rule__XImportSection__ImportDeclarationsAssignment();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop2;
+                }
+            } 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"
+    // InternalChartDSL.g:2657:1: entryRuleQualifiedNameInStaticImport : ruleQualifiedNameInStaticImport EOF ;
+    public final void entryRuleQualifiedNameInStaticImport() throws RecognitionException {
+        try {
+            // InternalChartDSL.g:2658:1: ( ruleQualifiedNameInStaticImport EOF )
+            // InternalChartDSL.g:2659: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"
+    // InternalChartDSL.g:2666:1: ruleQualifiedNameInStaticImport : ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) ;
+    public final void ruleQualifiedNameInStaticImport() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2670:2: ( ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) ) )
+            // InternalChartDSL.g:2671:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            {
+            // InternalChartDSL.g:2671:2: ( ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* ) )
+            // InternalChartDSL.g:2672:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) ) ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            {
+            // InternalChartDSL.g:2672:3: ( ( rule__QualifiedNameInStaticImport__Group__0 ) )
+            // InternalChartDSL.g:2673:4: ( rule__QualifiedNameInStaticImport__Group__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2674:4: ( rule__QualifiedNameInStaticImport__Group__0 )
+            // InternalChartDSL.g:2674: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()); 
+            }
+
+            }
+
+            // InternalChartDSL.g:2677:3: ( ( rule__QualifiedNameInStaticImport__Group__0 )* )
+            // InternalChartDSL.g:2678:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameInStaticImportAccess().getGroup()); 
+            }
+            // InternalChartDSL.g:2679:4: ( rule__QualifiedNameInStaticImport__Group__0 )*
+            loop3:
+            do {
+                int alt3=2;
+                int LA3_0 = input.LA(1);
+
+                if ( (LA3_0==RULE_ID) ) {
+                    int LA3_2 = input.LA(2);
+
+                    if ( (LA3_2==43) ) {
+                        alt3=1;
+                    }
+
+
+                }
+
+
+                switch (alt3) {
+            	case 1 :
+            	    // InternalChartDSL.g:2679:5: rule__QualifiedNameInStaticImport__Group__0
+            	    {
+            	    pushFollow(FOLLOW_4);
+            	    rule__QualifiedNameInStaticImport__Group__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop3;
+                }
+            } 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 "ruleLegendPlacementEnum"
+    // InternalChartDSL.g:2689:1: ruleLegendPlacementEnum : ( ( rule__LegendPlacementEnum__Alternatives ) ) ;
+    public final void ruleLegendPlacementEnum() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2693:1: ( ( ( rule__LegendPlacementEnum__Alternatives ) ) )
+            // InternalChartDSL.g:2694:2: ( ( rule__LegendPlacementEnum__Alternatives ) )
+            {
+            // InternalChartDSL.g:2694:2: ( ( rule__LegendPlacementEnum__Alternatives ) )
+            // InternalChartDSL.g:2695:3: ( rule__LegendPlacementEnum__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getLegendPlacementEnumAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:2696:3: ( rule__LegendPlacementEnum__Alternatives )
+            // InternalChartDSL.g:2696:4: rule__LegendPlacementEnum__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__LegendPlacementEnum__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getLegendPlacementEnumAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleLegendPlacementEnum"
+
+
+    // $ANTLR start "ruleToggleTypeEnum"
+    // InternalChartDSL.g:2705:1: ruleToggleTypeEnum : ( ( rule__ToggleTypeEnum__Alternatives ) ) ;
+    public final void ruleToggleTypeEnum() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2709:1: ( ( ( rule__ToggleTypeEnum__Alternatives ) ) )
+            // InternalChartDSL.g:2710:2: ( ( rule__ToggleTypeEnum__Alternatives ) )
+            {
+            // InternalChartDSL.g:2710:2: ( ( rule__ToggleTypeEnum__Alternatives ) )
+            // InternalChartDSL.g:2711:3: ( rule__ToggleTypeEnum__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getToggleTypeEnumAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:2712:3: ( rule__ToggleTypeEnum__Alternatives )
+            // InternalChartDSL.g:2712:4: rule__ToggleTypeEnum__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__ToggleTypeEnum__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getToggleTypeEnumAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleToggleTypeEnum"
+
+
+    // $ANTLR start "ruleTooltipLocationEnum"
+    // InternalChartDSL.g:2721:1: ruleTooltipLocationEnum : ( ( rule__TooltipLocationEnum__Alternatives ) ) ;
+    public final void ruleTooltipLocationEnum() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2725:1: ( ( ( rule__TooltipLocationEnum__Alternatives ) ) )
+            // InternalChartDSL.g:2726:2: ( ( rule__TooltipLocationEnum__Alternatives ) )
+            {
+            // InternalChartDSL.g:2726:2: ( ( rule__TooltipLocationEnum__Alternatives ) )
+            // InternalChartDSL.g:2727:3: ( rule__TooltipLocationEnum__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getTooltipLocationEnumAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:2728:3: ( rule__TooltipLocationEnum__Alternatives )
+            // InternalChartDSL.g:2728:4: rule__TooltipLocationEnum__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__TooltipLocationEnum__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getTooltipLocationEnumAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleTooltipLocationEnum"
+
+
+    // $ANTLR start "ruleRenderTypeEnum"
+    // InternalChartDSL.g:2737:1: ruleRenderTypeEnum : ( ( rule__RenderTypeEnum__Alternatives ) ) ;
+    public final void ruleRenderTypeEnum() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2741:1: ( ( ( rule__RenderTypeEnum__Alternatives ) ) )
+            // InternalChartDSL.g:2742:2: ( ( rule__RenderTypeEnum__Alternatives ) )
+            {
+            // InternalChartDSL.g:2742:2: ( ( rule__RenderTypeEnum__Alternatives ) )
+            // InternalChartDSL.g:2743:3: ( rule__RenderTypeEnum__Alternatives )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getRenderTypeEnumAccess().getAlternatives()); 
+            }
+            // InternalChartDSL.g:2744:3: ( rule__RenderTypeEnum__Alternatives )
+            // InternalChartDSL.g:2744:4: rule__RenderTypeEnum__Alternatives
+            {
+            pushFollow(FOLLOW_2);
+            rule__RenderTypeEnum__Alternatives();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getRenderTypeEnumAccess().getAlternatives()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "ruleRenderTypeEnum"
+
+
+    // $ANTLR start "rule__ChartOption__Alternatives"
+    // InternalChartDSL.g:2752:1: rule__ChartOption__Alternatives : ( ( ruleChartBar ) | ( ruleChartLine ) | ( ruleChartPie ) | ( ruleChartDonut ) | ( ruleChartBubble ) | ( ruleChartGauge ) | ( ruleChartTree ) );
+    public final void rule__ChartOption__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2756:1: ( ( ruleChartBar ) | ( ruleChartLine ) | ( ruleChartPie ) | ( ruleChartDonut ) | ( ruleChartBubble ) | ( ruleChartGauge ) | ( ruleChartTree ) )
+            int alt4=7;
+            switch ( input.LA(1) ) {
+            case 77:
+                {
+                alt4=1;
+                }
+                break;
+            case 78:
+                {
+                alt4=2;
+                }
+                break;
+            case 79:
+                {
+                alt4=3;
+                }
+                break;
+            case 80:
+                {
+                alt4=4;
+                }
+                break;
+            case 81:
+                {
+                alt4=5;
+                }
+                break;
+            case 82:
+                {
+                alt4=6;
+                }
+                break;
+            case 85:
+                {
+                alt4=7;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 4, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt4) {
+                case 1 :
+                    // InternalChartDSL.g:2757:2: ( ruleChartBar )
+                    {
+                    // InternalChartDSL.g:2757:2: ( ruleChartBar )
+                    // InternalChartDSL.g:2758:3: ruleChartBar
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartOptionAccess().getChartBarParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleChartBar();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartOptionAccess().getChartBarParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:2763:2: ( ruleChartLine )
+                    {
+                    // InternalChartDSL.g:2763:2: ( ruleChartLine )
+                    // InternalChartDSL.g:2764:3: ruleChartLine
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartOptionAccess().getChartLineParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleChartLine();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartOptionAccess().getChartLineParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalChartDSL.g:2769:2: ( ruleChartPie )
+                    {
+                    // InternalChartDSL.g:2769:2: ( ruleChartPie )
+                    // InternalChartDSL.g:2770:3: ruleChartPie
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartOptionAccess().getChartPieParserRuleCall_2()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleChartPie();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartOptionAccess().getChartPieParserRuleCall_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalChartDSL.g:2775:2: ( ruleChartDonut )
+                    {
+                    // InternalChartDSL.g:2775:2: ( ruleChartDonut )
+                    // InternalChartDSL.g:2776:3: ruleChartDonut
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartOptionAccess().getChartDonutParserRuleCall_3()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleChartDonut();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartOptionAccess().getChartDonutParserRuleCall_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalChartDSL.g:2781:2: ( ruleChartBubble )
+                    {
+                    // InternalChartDSL.g:2781:2: ( ruleChartBubble )
+                    // InternalChartDSL.g:2782:3: ruleChartBubble
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartOptionAccess().getChartBubbleParserRuleCall_4()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleChartBubble();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartOptionAccess().getChartBubbleParserRuleCall_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalChartDSL.g:2787:2: ( ruleChartGauge )
+                    {
+                    // InternalChartDSL.g:2787:2: ( ruleChartGauge )
+                    // InternalChartDSL.g:2788:3: ruleChartGauge
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartOptionAccess().getChartGaugeParserRuleCall_5()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleChartGauge();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartOptionAccess().getChartGaugeParserRuleCall_5()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // InternalChartDSL.g:2793:2: ( ruleChartTree )
+                    {
+                    // InternalChartDSL.g:2793:2: ( ruleChartTree )
+                    // InternalChartDSL.g:2794:3: ruleChartTree
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartOptionAccess().getChartTreeParserRuleCall_6()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleChartTree();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartOptionAccess().getChartTreeParserRuleCall_6()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartOption__Alternatives"
+
+
+    // $ANTLR start "rule__ChartBubble__Alternatives_2_1"
+    // InternalChartDSL.g:2803:1: rule__ChartBubble__Alternatives_2_1 : ( ( ( rule__ChartBubble__GradientAssignment_2_1_0 ) ) | ( ( rule__ChartBubble__TransparentAssignment_2_1_1 ) ) );
+    public final void rule__ChartBubble__Alternatives_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2807:1: ( ( ( rule__ChartBubble__GradientAssignment_2_1_0 ) ) | ( ( rule__ChartBubble__TransparentAssignment_2_1_1 ) ) )
+            int alt5=2;
+            int LA5_0 = input.LA(1);
+
+            if ( (LA5_0==138) ) {
+                alt5=1;
+            }
+            else if ( (LA5_0==139) ) {
+                alt5=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 5, 0, input);
+
+                throw nvae;
+            }
+            switch (alt5) {
+                case 1 :
+                    // InternalChartDSL.g:2808:2: ( ( rule__ChartBubble__GradientAssignment_2_1_0 ) )
+                    {
+                    // InternalChartDSL.g:2808:2: ( ( rule__ChartBubble__GradientAssignment_2_1_0 ) )
+                    // InternalChartDSL.g:2809:3: ( rule__ChartBubble__GradientAssignment_2_1_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartBubbleAccess().getGradientAssignment_2_1_0()); 
+                    }
+                    // InternalChartDSL.g:2810:3: ( rule__ChartBubble__GradientAssignment_2_1_0 )
+                    // InternalChartDSL.g:2810:4: rule__ChartBubble__GradientAssignment_2_1_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartBubble__GradientAssignment_2_1_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartBubbleAccess().getGradientAssignment_2_1_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:2814:2: ( ( rule__ChartBubble__TransparentAssignment_2_1_1 ) )
+                    {
+                    // InternalChartDSL.g:2814:2: ( ( rule__ChartBubble__TransparentAssignment_2_1_1 ) )
+                    // InternalChartDSL.g:2815:3: ( rule__ChartBubble__TransparentAssignment_2_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartBubbleAccess().getTransparentAssignment_2_1_1()); 
+                    }
+                    // InternalChartDSL.g:2816:3: ( rule__ChartBubble__TransparentAssignment_2_1_1 )
+                    // InternalChartDSL.g:2816:4: rule__ChartBubble__TransparentAssignment_2_1_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartBubble__TransparentAssignment_2_1_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartBubbleAccess().getTransparentAssignment_2_1_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBubble__Alternatives_2_1"
+
+
+    // $ANTLR start "rule__ChartTree__Alternatives_2"
+    // InternalChartDSL.g:2824:1: rule__ChartTree__Alternatives_2 : ( ( ( rule__ChartTree__MapAssignment_2_0 ) ) | ( ( rule__ChartTree__CollapsibleAssignment_2_1 ) ) );
+    public final void rule__ChartTree__Alternatives_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2828:1: ( ( ( rule__ChartTree__MapAssignment_2_0 ) ) | ( ( rule__ChartTree__CollapsibleAssignment_2_1 ) ) )
+            int alt6=2;
+            int LA6_0 = input.LA(1);
+
+            if ( (LA6_0==143) ) {
+                alt6=1;
+            }
+            else if ( (LA6_0==144) ) {
+                alt6=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 6, 0, input);
+
+                throw nvae;
+            }
+            switch (alt6) {
+                case 1 :
+                    // InternalChartDSL.g:2829:2: ( ( rule__ChartTree__MapAssignment_2_0 ) )
+                    {
+                    // InternalChartDSL.g:2829:2: ( ( rule__ChartTree__MapAssignment_2_0 ) )
+                    // InternalChartDSL.g:2830:3: ( rule__ChartTree__MapAssignment_2_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartTreeAccess().getMapAssignment_2_0()); 
+                    }
+                    // InternalChartDSL.g:2831:3: ( rule__ChartTree__MapAssignment_2_0 )
+                    // InternalChartDSL.g:2831:4: rule__ChartTree__MapAssignment_2_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartTree__MapAssignment_2_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartTreeAccess().getMapAssignment_2_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:2835:2: ( ( rule__ChartTree__CollapsibleAssignment_2_1 ) )
+                    {
+                    // InternalChartDSL.g:2835:2: ( ( rule__ChartTree__CollapsibleAssignment_2_1 ) )
+                    // InternalChartDSL.g:2836:3: ( rule__ChartTree__CollapsibleAssignment_2_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartTreeAccess().getCollapsibleAssignment_2_1()); 
+                    }
+                    // InternalChartDSL.g:2837:3: ( rule__ChartTree__CollapsibleAssignment_2_1 )
+                    // InternalChartDSL.g:2837:4: rule__ChartTree__CollapsibleAssignment_2_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartTree__CollapsibleAssignment_2_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartTreeAccess().getCollapsibleAssignment_2_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartTree__Alternatives_2"
+
+
+    // $ANTLR start "rule__ChartElement__Alternatives"
+    // InternalChartDSL.g:2845:1: rule__ChartElement__Alternatives : ( ( ruleChartAxis ) | ( ruleChartLegend ) | ( ruleChartHighlighter ) );
+    public final void rule__ChartElement__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2849:1: ( ( ruleChartAxis ) | ( ruleChartLegend ) | ( ruleChartHighlighter ) )
+            int alt7=3;
+            switch ( input.LA(1) ) {
+            case 90:
+                {
+                alt7=1;
+                }
+                break;
+            case 88:
+                {
+                alt7=2;
+                }
+                break;
+            case 89:
+                {
+                alt7=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 7, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt7) {
+                case 1 :
+                    // InternalChartDSL.g:2850:2: ( ruleChartAxis )
+                    {
+                    // InternalChartDSL.g:2850:2: ( ruleChartAxis )
+                    // InternalChartDSL.g:2851:3: ruleChartAxis
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartElementAccess().getChartAxisParserRuleCall_0()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleChartAxis();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartElementAccess().getChartAxisParserRuleCall_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:2856:2: ( ruleChartLegend )
+                    {
+                    // InternalChartDSL.g:2856:2: ( ruleChartLegend )
+                    // InternalChartDSL.g:2857:3: ruleChartLegend
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartElementAccess().getChartLegendParserRuleCall_1()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleChartLegend();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartElementAccess().getChartLegendParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalChartDSL.g:2862:2: ( ruleChartHighlighter )
+                    {
+                    // InternalChartDSL.g:2862:2: ( ruleChartHighlighter )
+                    // InternalChartDSL.g:2863:3: ruleChartHighlighter
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartElementAccess().getChartHighlighterParserRuleCall_2()); 
+                    }
+                    pushFollow(FOLLOW_2);
+                    ruleChartHighlighter();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartElementAccess().getChartHighlighterParserRuleCall_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartElement__Alternatives"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Alternatives_2"
+    // InternalChartDSL.g:2872: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 {
+            // InternalChartDSL.g:2876:1: ( ( ( rule__XImportDeclaration__Group_2_0__0 ) ) | ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) ) | ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) ) | ( ( rule__XImportDeclaration__Group_2_3__0 ) ) )
+            int alt8=4;
+            alt8 = dfa8.predict(input);
+            switch (alt8) {
+                case 1 :
+                    // InternalChartDSL.g:2877:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    {
+                    // InternalChartDSL.g:2877:2: ( ( rule__XImportDeclaration__Group_2_0__0 ) )
+                    // InternalChartDSL.g:2878:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getGroup_2_0()); 
+                    }
+                    // InternalChartDSL.g:2879:3: ( rule__XImportDeclaration__Group_2_0__0 )
+                    // InternalChartDSL.g:2879: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 :
+                    // InternalChartDSL.g:2883:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    {
+                    // InternalChartDSL.g:2883:2: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 ) )
+                    // InternalChartDSL.g:2884:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_1()); 
+                    }
+                    // InternalChartDSL.g:2885:3: ( rule__XImportDeclaration__ImportedTypeAssignment_2_1 )
+                    // InternalChartDSL.g:2885: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 :
+                    // InternalChartDSL.g:2889:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    {
+                    // InternalChartDSL.g:2889:2: ( ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 ) )
+                    // InternalChartDSL.g:2890:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceAssignment_2_2()); 
+                    }
+                    // InternalChartDSL.g:2891:3: ( rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 )
+                    // InternalChartDSL.g:2891: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 :
+                    // InternalChartDSL.g:2895:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    {
+                    // InternalChartDSL.g:2895:2: ( ( rule__XImportDeclaration__Group_2_3__0 ) )
+                    // InternalChartDSL.g:2896:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getGroup_2_3()); 
+                    }
+                    // InternalChartDSL.g:2897:3: ( rule__XImportDeclaration__Group_2_3__0 )
+                    // InternalChartDSL.g:2897: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"
+    // InternalChartDSL.g:2905: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 {
+            // InternalChartDSL.g:2909:1: ( ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) ) | ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) ) )
+            int alt9=2;
+            int LA9_0 = input.LA(1);
+
+            if ( (LA9_0==36) ) {
+                alt9=1;
+            }
+            else if ( (LA9_0==RULE_ID) ) {
+                alt9=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 9, 0, input);
+
+                throw nvae;
+            }
+            switch (alt9) {
+                case 1 :
+                    // InternalChartDSL.g:2910:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    {
+                    // InternalChartDSL.g:2910:2: ( ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 ) )
+                    // InternalChartDSL.g:2911:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getWildcardAssignment_2_0_3_0()); 
+                    }
+                    // InternalChartDSL.g:2912:3: ( rule__XImportDeclaration__WildcardAssignment_2_0_3_0 )
+                    // InternalChartDSL.g:2912: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 :
+                    // InternalChartDSL.g:2916:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    {
+                    // InternalChartDSL.g:2916:2: ( ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 ) )
+                    // InternalChartDSL.g:2917:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXImportDeclarationAccess().getMemberNameAssignment_2_0_3_1()); 
+                    }
+                    // InternalChartDSL.g:2918:3: ( rule__XImportDeclaration__MemberNameAssignment_2_0_3_1 )
+                    // InternalChartDSL.g:2918: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"
+    // InternalChartDSL.g:2926: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 {
+            // InternalChartDSL.g:2930:1: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) | ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) ) )
+            int alt10=2;
+            alt10 = dfa10.predict(input);
+            switch (alt10) {
+                case 1 :
+                    // InternalChartDSL.g:2931:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    {
+                    // InternalChartDSL.g:2931:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+                    // InternalChartDSL.g:2932:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
+                    }
+                    // InternalChartDSL.g:2933:3: ( rule__XAnnotation__Group_3_1_0__0 )
+                    // InternalChartDSL.g:2933: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 :
+                    // InternalChartDSL.g:2937:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    {
+                    // InternalChartDSL.g:2937:2: ( ( rule__XAnnotation__ValueAssignment_3_1_1 ) )
+                    // InternalChartDSL.g:2938:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationAccess().getValueAssignment_3_1_1()); 
+                    }
+                    // InternalChartDSL.g:2939:3: ( rule__XAnnotation__ValueAssignment_3_1_1 )
+                    // InternalChartDSL.g:2939: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"
+    // InternalChartDSL.g:2947: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 {
+            // InternalChartDSL.g:2951:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) | ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) ) )
+            int alt11=2;
+            alt11 = dfa11.predict(input);
+            switch (alt11) {
+                case 1 :
+                    // InternalChartDSL.g:2952:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    {
+                    // InternalChartDSL.g:2952:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+                    // InternalChartDSL.g:2953:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
+                    }
+                    // InternalChartDSL.g:2954:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+                    // InternalChartDSL.g:2954: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 :
+                    // InternalChartDSL.g:2958:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    {
+                    // InternalChartDSL.g:2958:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1__0 ) )
+                    // InternalChartDSL.g:2959:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1()); 
+                    }
+                    // InternalChartDSL.g:2960:3: ( rule__XAnnotationElementValueOrCommaList__Group_1__0 )
+                    // InternalChartDSL.g:2960: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"
+    // InternalChartDSL.g:2968:1: rule__XAnnotationElementValue__Alternatives : ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) );
+    public final void rule__XAnnotationElementValue__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2972:1: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) | ( ruleXAnnotationOrExpression ) )
+            int alt12=2;
+            alt12 = dfa12.predict(input);
+            switch (alt12) {
+                case 1 :
+                    // InternalChartDSL.g:2973:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    {
+                    // InternalChartDSL.g:2973:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+                    // InternalChartDSL.g:2974:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
+                    }
+                    // InternalChartDSL.g:2975:3: ( rule__XAnnotationElementValue__Group_0__0 )
+                    // InternalChartDSL.g:2975: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 :
+                    // InternalChartDSL.g:2979:2: ( ruleXAnnotationOrExpression )
+                    {
+                    // InternalChartDSL.g:2979:2: ( ruleXAnnotationOrExpression )
+                    // InternalChartDSL.g:2980: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"
+    // InternalChartDSL.g:2989:1: rule__XAnnotationOrExpression__Alternatives : ( ( ruleXAnnotation ) | ( ruleXExpression ) );
+    public final void rule__XAnnotationOrExpression__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:2993:1: ( ( ruleXAnnotation ) | ( ruleXExpression ) )
+            int alt13=2;
+            int LA13_0 = input.LA(1);
+
+            if ( (LA13_0==95) ) {
+                alt13=1;
+            }
+            else if ( ((LA13_0>=RULE_STRING && LA13_0<=RULE_DECIMAL)||LA13_0==27||(LA13_0>=34 && LA13_0<=35)||LA13_0==40||(LA13_0>=45 && LA13_0<=50)||LA13_0==72||LA13_0==96||(LA13_0>=100 && LA13_0<=101)||LA13_0==103||LA13_0==105||(LA13_0>=109 && LA13_0<=117)||LA13_0==119||LA13_0==154) ) {
+                alt13=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 13, 0, input);
+
+                throw nvae;
+            }
+            switch (alt13) {
+                case 1 :
+                    // InternalChartDSL.g:2994:2: ( ruleXAnnotation )
+                    {
+                    // InternalChartDSL.g:2994:2: ( ruleXAnnotation )
+                    // InternalChartDSL.g:2995: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 :
+                    // InternalChartDSL.g:3000:2: ( ruleXExpression )
+                    {
+                    // InternalChartDSL.g:3000:2: ( ruleXExpression )
+                    // InternalChartDSL.g:3001: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"
+    // InternalChartDSL.g:3010: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 {
+            // InternalChartDSL.g:3014:1: ( ( ( rule__XAssignment__Group_0__0 ) ) | ( ( rule__XAssignment__Group_1__0 ) ) )
+            int alt14=2;
+            switch ( input.LA(1) ) {
+            case RULE_ID:
+                {
+                int LA14_1 = input.LA(2);
+
+                if ( (LA14_1==EOF||(LA14_1>=RULE_STRING && LA14_1<=RULE_DECIMAL)||(LA14_1>=14 && LA14_1<=50)||(LA14_1>=72 && LA14_1<=73)||LA14_1==75||LA14_1==94||(LA14_1>=96 && LA14_1<=120)||(LA14_1>=150 && LA14_1<=151)||(LA14_1>=153 && LA14_1<=154)) ) {
+                    alt14=2;
+                }
+                else if ( (LA14_1==13) ) {
+                    alt14=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 14, 1, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 45:
+                {
+                int LA14_2 = input.LA(2);
+
+                if ( (LA14_2==EOF||(LA14_2>=RULE_STRING && LA14_2<=RULE_DECIMAL)||(LA14_2>=14 && LA14_2<=50)||(LA14_2>=72 && LA14_2<=73)||LA14_2==75||LA14_2==94||(LA14_2>=96 && LA14_2<=120)||(LA14_2>=150 && LA14_2<=151)||(LA14_2>=153 && LA14_2<=154)) ) {
+                    alt14=2;
+                }
+                else if ( (LA14_2==13) ) {
+                    alt14=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 14, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 46:
+                {
+                int LA14_3 = input.LA(2);
+
+                if ( (LA14_3==13) ) {
+                    alt14=1;
+                }
+                else if ( (LA14_3==EOF||(LA14_3>=RULE_STRING && LA14_3<=RULE_DECIMAL)||(LA14_3>=14 && LA14_3<=50)||(LA14_3>=72 && LA14_3<=73)||LA14_3==75||LA14_3==94||(LA14_3>=96 && LA14_3<=120)||(LA14_3>=150 && LA14_3<=151)||(LA14_3>=153 && LA14_3<=154)) ) {
+                    alt14=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 14, 3, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 47:
+                {
+                int LA14_4 = input.LA(2);
+
+                if ( (LA14_4==EOF||(LA14_4>=RULE_STRING && LA14_4<=RULE_DECIMAL)||(LA14_4>=14 && LA14_4<=50)||(LA14_4>=72 && LA14_4<=73)||LA14_4==75||LA14_4==94||(LA14_4>=96 && LA14_4<=120)||(LA14_4>=150 && LA14_4<=151)||(LA14_4>=153 && LA14_4<=154)) ) {
+                    alt14=2;
+                }
+                else if ( (LA14_4==13) ) {
+                    alt14=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 14, 4, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 48:
+                {
+                int LA14_5 = input.LA(2);
+
+                if ( (LA14_5==13) ) {
+                    alt14=1;
+                }
+                else if ( (LA14_5==EOF||(LA14_5>=RULE_STRING && LA14_5<=RULE_DECIMAL)||(LA14_5>=14 && LA14_5<=50)||(LA14_5>=72 && LA14_5<=73)||LA14_5==75||LA14_5==94||(LA14_5>=96 && LA14_5<=120)||(LA14_5>=150 && LA14_5<=151)||(LA14_5>=153 && LA14_5<=154)) ) {
+                    alt14=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 14, 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 72:
+            case 96:
+            case 100:
+            case 101:
+            case 103:
+            case 105:
+            case 109:
+            case 110:
+            case 111:
+            case 112:
+            case 113:
+            case 114:
+            case 115:
+            case 116:
+            case 117:
+            case 119:
+            case 154:
+                {
+                alt14=2;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 14, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt14) {
+                case 1 :
+                    // InternalChartDSL.g:3015:2: ( ( rule__XAssignment__Group_0__0 ) )
+                    {
+                    // InternalChartDSL.g:3015:2: ( ( rule__XAssignment__Group_0__0 ) )
+                    // InternalChartDSL.g:3016:3: ( rule__XAssignment__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAssignmentAccess().getGroup_0()); 
+                    }
+                    // InternalChartDSL.g:3017:3: ( rule__XAssignment__Group_0__0 )
+                    // InternalChartDSL.g:3017: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 :
+                    // InternalChartDSL.g:3021:2: ( ( rule__XAssignment__Group_1__0 ) )
+                    {
+                    // InternalChartDSL.g:3021:2: ( ( rule__XAssignment__Group_1__0 ) )
+                    // InternalChartDSL.g:3022:3: ( rule__XAssignment__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXAssignmentAccess().getGroup_1()); 
+                    }
+                    // InternalChartDSL.g:3023:3: ( rule__XAssignment__Group_1__0 )
+                    // InternalChartDSL.g:3023: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"
+    // InternalChartDSL.g:3031: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 {
+            // InternalChartDSL.g:3035:1: ( ( '+=' ) | ( '-=' ) | ( '*=' ) | ( '/=' ) | ( '%=' ) | ( ( rule__OpMultiAssign__Group_5__0 ) ) | ( ( rule__OpMultiAssign__Group_6__0 ) ) )
+            int alt15=7;
+            switch ( input.LA(1) ) {
+            case 16:
+                {
+                alt15=1;
+                }
+                break;
+            case 17:
+                {
+                alt15=2;
+                }
+                break;
+            case 18:
+                {
+                alt15=3;
+                }
+                break;
+            case 19:
+                {
+                alt15=4;
+                }
+                break;
+            case 20:
+                {
+                alt15=5;
+                }
+                break;
+            case 27:
+                {
+                alt15=6;
+                }
+                break;
+            case 26:
+                {
+                alt15=7;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 15, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt15) {
+                case 1 :
+                    // InternalChartDSL.g:3036:2: ( '+=' )
+                    {
+                    // InternalChartDSL.g:3036:2: ( '+=' )
+                    // InternalChartDSL.g:3037: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 :
+                    // InternalChartDSL.g:3042:2: ( '-=' )
+                    {
+                    // InternalChartDSL.g:3042:2: ( '-=' )
+                    // InternalChartDSL.g:3043: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 :
+                    // InternalChartDSL.g:3048:2: ( '*=' )
+                    {
+                    // InternalChartDSL.g:3048:2: ( '*=' )
+                    // InternalChartDSL.g:3049: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 :
+                    // InternalChartDSL.g:3054:2: ( '/=' )
+                    {
+                    // InternalChartDSL.g:3054:2: ( '/=' )
+                    // InternalChartDSL.g:3055: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 :
+                    // InternalChartDSL.g:3060:2: ( '%=' )
+                    {
+                    // InternalChartDSL.g:3060:2: ( '%=' )
+                    // InternalChartDSL.g:3061: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 :
+                    // InternalChartDSL.g:3066:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    {
+                    // InternalChartDSL.g:3066:2: ( ( rule__OpMultiAssign__Group_5__0 ) )
+                    // InternalChartDSL.g:3067:3: ( rule__OpMultiAssign__Group_5__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getGroup_5()); 
+                    }
+                    // InternalChartDSL.g:3068:3: ( rule__OpMultiAssign__Group_5__0 )
+                    // InternalChartDSL.g:3068: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 :
+                    // InternalChartDSL.g:3072:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    {
+                    // InternalChartDSL.g:3072:2: ( ( rule__OpMultiAssign__Group_6__0 ) )
+                    // InternalChartDSL.g:3073:3: ( rule__OpMultiAssign__Group_6__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpMultiAssignAccess().getGroup_6()); 
+                    }
+                    // InternalChartDSL.g:3074:3: ( rule__OpMultiAssign__Group_6__0 )
+                    // InternalChartDSL.g:3074: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"
+    // InternalChartDSL.g:3082:1: rule__OpEquality__Alternatives : ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) );
+    public final void rule__OpEquality__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:3086:1: ( ( '==' ) | ( '!=' ) | ( '===' ) | ( '!==' ) )
+            int alt16=4;
+            switch ( input.LA(1) ) {
+            case 21:
+                {
+                alt16=1;
+                }
+                break;
+            case 22:
+                {
+                alt16=2;
+                }
+                break;
+            case 23:
+                {
+                alt16=3;
+                }
+                break;
+            case 24:
+                {
+                alt16=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 16, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt16) {
+                case 1 :
+                    // InternalChartDSL.g:3087:2: ( '==' )
+                    {
+                    // InternalChartDSL.g:3087:2: ( '==' )
+                    // InternalChartDSL.g:3088: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 :
+                    // InternalChartDSL.g:3093:2: ( '!=' )
+                    {
+                    // InternalChartDSL.g:3093:2: ( '!=' )
+                    // InternalChartDSL.g:3094: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 :
+                    // InternalChartDSL.g:3099:2: ( '===' )
+                    {
+                    // InternalChartDSL.g:3099:2: ( '===' )
+                    // InternalChartDSL.g:3100: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 :
+                    // InternalChartDSL.g:3105:2: ( '!==' )
+                    {
+                    // InternalChartDSL.g:3105:2: ( '!==' )
+                    // InternalChartDSL.g:3106: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"
+    // InternalChartDSL.g:3115: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 {
+            // InternalChartDSL.g:3119:1: ( ( ( rule__XRelationalExpression__Group_1_0__0 ) ) | ( ( rule__XRelationalExpression__Group_1_1__0 ) ) )
+            int alt17=2;
+            int LA17_0 = input.LA(1);
+
+            if ( (LA17_0==102) ) {
+                alt17=1;
+            }
+            else if ( ((LA17_0>=25 && LA17_0<=27)) ) {
+                alt17=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 17, 0, input);
+
+                throw nvae;
+            }
+            switch (alt17) {
+                case 1 :
+                    // InternalChartDSL.g:3120:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    {
+                    // InternalChartDSL.g:3120:2: ( ( rule__XRelationalExpression__Group_1_0__0 ) )
+                    // InternalChartDSL.g:3121:3: ( rule__XRelationalExpression__Group_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0()); 
+                    }
+                    // InternalChartDSL.g:3122:3: ( rule__XRelationalExpression__Group_1_0__0 )
+                    // InternalChartDSL.g:3122: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 :
+                    // InternalChartDSL.g:3126:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    {
+                    // InternalChartDSL.g:3126:2: ( ( rule__XRelationalExpression__Group_1_1__0 ) )
+                    // InternalChartDSL.g:3127:3: ( rule__XRelationalExpression__Group_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1()); 
+                    }
+                    // InternalChartDSL.g:3128:3: ( rule__XRelationalExpression__Group_1_1__0 )
+                    // InternalChartDSL.g:3128: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"
+    // InternalChartDSL.g:3136:1: rule__OpCompare__Alternatives : ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) );
+    public final void rule__OpCompare__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:3140:1: ( ( '>=' ) | ( ( rule__OpCompare__Group_1__0 ) ) | ( '>' ) | ( '<' ) )
+            int alt18=4;
+            switch ( input.LA(1) ) {
+            case 25:
+                {
+                alt18=1;
+                }
+                break;
+            case 27:
+                {
+                int LA18_2 = input.LA(2);
+
+                if ( (LA18_2==13) ) {
+                    alt18=2;
+                }
+                else if ( (LA18_2==EOF||(LA18_2>=RULE_STRING && LA18_2<=RULE_DECIMAL)||LA18_2==27||(LA18_2>=34 && LA18_2<=35)||LA18_2==40||(LA18_2>=45 && LA18_2<=50)||LA18_2==72||LA18_2==96||(LA18_2>=100 && LA18_2<=101)||LA18_2==103||LA18_2==105||(LA18_2>=109 && LA18_2<=117)||LA18_2==119||LA18_2==154) ) {
+                    alt18=4;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 18, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 26:
+                {
+                alt18=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 18, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt18) {
+                case 1 :
+                    // InternalChartDSL.g:3141:2: ( '>=' )
+                    {
+                    // InternalChartDSL.g:3141:2: ( '>=' )
+                    // InternalChartDSL.g:3142: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 :
+                    // InternalChartDSL.g:3147:2: ( ( rule__OpCompare__Group_1__0 ) )
+                    {
+                    // InternalChartDSL.g:3147:2: ( ( rule__OpCompare__Group_1__0 ) )
+                    // InternalChartDSL.g:3148:3: ( rule__OpCompare__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpCompareAccess().getGroup_1()); 
+                    }
+                    // InternalChartDSL.g:3149:3: ( rule__OpCompare__Group_1__0 )
+                    // InternalChartDSL.g:3149: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 :
+                    // InternalChartDSL.g:3153:2: ( '>' )
+                    {
+                    // InternalChartDSL.g:3153:2: ( '>' )
+                    // InternalChartDSL.g:3154: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 :
+                    // InternalChartDSL.g:3159:2: ( '<' )
+                    {
+                    // InternalChartDSL.g:3159:2: ( '<' )
+                    // InternalChartDSL.g:3160: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"
+    // InternalChartDSL.g:3169: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 {
+            // InternalChartDSL.g:3173:1: ( ( '->' ) | ( '..<' ) | ( ( rule__OpOther__Group_2__0 ) ) | ( '..' ) | ( '=>' ) | ( ( rule__OpOther__Group_5__0 ) ) | ( ( rule__OpOther__Group_6__0 ) ) | ( '<>' ) | ( '?:' ) )
+            int alt19=9;
+            alt19 = dfa19.predict(input);
+            switch (alt19) {
+                case 1 :
+                    // InternalChartDSL.g:3174:2: ( '->' )
+                    {
+                    // InternalChartDSL.g:3174:2: ( '->' )
+                    // InternalChartDSL.g:3175: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 :
+                    // InternalChartDSL.g:3180:2: ( '..<' )
+                    {
+                    // InternalChartDSL.g:3180:2: ( '..<' )
+                    // InternalChartDSL.g:3181: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 :
+                    // InternalChartDSL.g:3186:2: ( ( rule__OpOther__Group_2__0 ) )
+                    {
+                    // InternalChartDSL.g:3186:2: ( ( rule__OpOther__Group_2__0 ) )
+                    // InternalChartDSL.g:3187:3: ( rule__OpOther__Group_2__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_2()); 
+                    }
+                    // InternalChartDSL.g:3188:3: ( rule__OpOther__Group_2__0 )
+                    // InternalChartDSL.g:3188: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 :
+                    // InternalChartDSL.g:3192:2: ( '..' )
+                    {
+                    // InternalChartDSL.g:3192:2: ( '..' )
+                    // InternalChartDSL.g:3193: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 :
+                    // InternalChartDSL.g:3198:2: ( '=>' )
+                    {
+                    // InternalChartDSL.g:3198:2: ( '=>' )
+                    // InternalChartDSL.g:3199: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 :
+                    // InternalChartDSL.g:3204:2: ( ( rule__OpOther__Group_5__0 ) )
+                    {
+                    // InternalChartDSL.g:3204:2: ( ( rule__OpOther__Group_5__0 ) )
+                    // InternalChartDSL.g:3205:3: ( rule__OpOther__Group_5__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_5()); 
+                    }
+                    // InternalChartDSL.g:3206:3: ( rule__OpOther__Group_5__0 )
+                    // InternalChartDSL.g:3206: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 :
+                    // InternalChartDSL.g:3210:2: ( ( rule__OpOther__Group_6__0 ) )
+                    {
+                    // InternalChartDSL.g:3210:2: ( ( rule__OpOther__Group_6__0 ) )
+                    // InternalChartDSL.g:3211:3: ( rule__OpOther__Group_6__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_6()); 
+                    }
+                    // InternalChartDSL.g:3212:3: ( rule__OpOther__Group_6__0 )
+                    // InternalChartDSL.g:3212: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 :
+                    // InternalChartDSL.g:3216:2: ( '<>' )
+                    {
+                    // InternalChartDSL.g:3216:2: ( '<>' )
+                    // InternalChartDSL.g:3217: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 :
+                    // InternalChartDSL.g:3222:2: ( '?:' )
+                    {
+                    // InternalChartDSL.g:3222:2: ( '?:' )
+                    // InternalChartDSL.g:3223: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"
+    // InternalChartDSL.g:3232: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 {
+            // InternalChartDSL.g:3236:1: ( ( ( rule__OpOther__Group_5_1_0__0 ) ) | ( '>' ) )
+            int alt20=2;
+            int LA20_0 = input.LA(1);
+
+            if ( (LA20_0==26) ) {
+                int LA20_1 = input.LA(2);
+
+                if ( (LA20_1==26) ) {
+                    alt20=1;
+                }
+                else if ( (LA20_1==EOF||(LA20_1>=RULE_STRING && LA20_1<=RULE_DECIMAL)||LA20_1==27||(LA20_1>=34 && LA20_1<=35)||LA20_1==40||(LA20_1>=45 && LA20_1<=50)||LA20_1==72||LA20_1==96||(LA20_1>=100 && LA20_1<=101)||LA20_1==103||LA20_1==105||(LA20_1>=109 && LA20_1<=117)||LA20_1==119||LA20_1==154) ) {
+                    alt20=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 20, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 20, 0, input);
+
+                throw nvae;
+            }
+            switch (alt20) {
+                case 1 :
+                    // InternalChartDSL.g:3237:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
+                    {
+                    // InternalChartDSL.g:3237:2: ( ( rule__OpOther__Group_5_1_0__0 ) )
+                    // InternalChartDSL.g:3238:3: ( rule__OpOther__Group_5_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_5_1_0()); 
+                    }
+                    // InternalChartDSL.g:3239:3: ( rule__OpOther__Group_5_1_0__0 )
+                    // InternalChartDSL.g:3239: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 :
+                    // InternalChartDSL.g:3243:2: ( '>' )
+                    {
+                    // InternalChartDSL.g:3243:2: ( '>' )
+                    // InternalChartDSL.g:3244: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"
+    // InternalChartDSL.g:3253: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 {
+            // InternalChartDSL.g:3257:1: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) | ( '<' ) | ( '=>' ) )
+            int alt21=3;
+            int LA21_0 = input.LA(1);
+
+            if ( (LA21_0==27) ) {
+                int LA21_1 = input.LA(2);
+
+                if ( (synpred45_InternalChartDSL()) ) {
+                    alt21=1;
+                }
+                else if ( (synpred46_InternalChartDSL()) ) {
+                    alt21=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 21, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA21_0==31) ) {
+                alt21=3;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 21, 0, input);
+
+                throw nvae;
+            }
+            switch (alt21) {
+                case 1 :
+                    // InternalChartDSL.g:3258:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+                    {
+                    // InternalChartDSL.g:3258:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+                    // InternalChartDSL.g:3259:3: ( rule__OpOther__Group_6_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); 
+                    }
+                    // InternalChartDSL.g:3260:3: ( rule__OpOther__Group_6_1_0__0 )
+                    // InternalChartDSL.g:3260: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 :
+                    // InternalChartDSL.g:3264:2: ( '<' )
+                    {
+                    // InternalChartDSL.g:3264:2: ( '<' )
+                    // InternalChartDSL.g:3265: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 :
+                    // InternalChartDSL.g:3270:2: ( '=>' )
+                    {
+                    // InternalChartDSL.g:3270:2: ( '=>' )
+                    // InternalChartDSL.g:3271: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"
+    // InternalChartDSL.g:3280:1: rule__OpAdd__Alternatives : ( ( '+' ) | ( '-' ) );
+    public final void rule__OpAdd__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:3284:1: ( ( '+' ) | ( '-' ) )
+            int alt22=2;
+            int LA22_0 = input.LA(1);
+
+            if ( (LA22_0==34) ) {
+                alt22=1;
+            }
+            else if ( (LA22_0==35) ) {
+                alt22=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 22, 0, input);
+
+                throw nvae;
+            }
+            switch (alt22) {
+                case 1 :
+                    // InternalChartDSL.g:3285:2: ( '+' )
+                    {
+                    // InternalChartDSL.g:3285:2: ( '+' )
+                    // InternalChartDSL.g:3286: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 :
+                    // InternalChartDSL.g:3291:2: ( '-' )
+                    {
+                    // InternalChartDSL.g:3291:2: ( '-' )
+                    // InternalChartDSL.g:3292: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"
+    // InternalChartDSL.g:3301:1: rule__OpMulti__Alternatives : ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) );
+    public final void rule__OpMulti__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:3305:1: ( ( '*' ) | ( '**' ) | ( '/' ) | ( '%' ) )
+            int alt23=4;
+            switch ( input.LA(1) ) {
+            case 36:
+                {
+                alt23=1;
+                }
+                break;
+            case 37:
+                {
+                alt23=2;
+                }
+                break;
+            case 38:
+                {
+                alt23=3;
+                }
+                break;
+            case 39:
+                {
+                alt23=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 23, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt23) {
+                case 1 :
+                    // InternalChartDSL.g:3306:2: ( '*' )
+                    {
+                    // InternalChartDSL.g:3306:2: ( '*' )
+                    // InternalChartDSL.g:3307: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 :
+                    // InternalChartDSL.g:3312:2: ( '**' )
+                    {
+                    // InternalChartDSL.g:3312:2: ( '**' )
+                    // InternalChartDSL.g:3313: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 :
+                    // InternalChartDSL.g:3318:2: ( '/' )
+                    {
+                    // InternalChartDSL.g:3318:2: ( '/' )
+                    // InternalChartDSL.g:3319: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 :
+                    // InternalChartDSL.g:3324:2: ( '%' )
+                    {
+                    // InternalChartDSL.g:3324:2: ( '%' )
+                    // InternalChartDSL.g:3325: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"
+    // InternalChartDSL.g:3334:1: rule__XUnaryOperation__Alternatives : ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) );
+    public final void rule__XUnaryOperation__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:3338:1: ( ( ( rule__XUnaryOperation__Group_0__0 ) ) | ( ruleXCastedExpression ) )
+            int alt24=2;
+            int LA24_0 = input.LA(1);
+
+            if ( ((LA24_0>=34 && LA24_0<=35)||LA24_0==40) ) {
+                alt24=1;
+            }
+            else if ( ((LA24_0>=RULE_STRING && LA24_0<=RULE_DECIMAL)||LA24_0==27||(LA24_0>=45 && LA24_0<=50)||LA24_0==72||LA24_0==96||(LA24_0>=100 && LA24_0<=101)||LA24_0==103||LA24_0==105||(LA24_0>=109 && LA24_0<=117)||LA24_0==119||LA24_0==154) ) {
+                alt24=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 24, 0, input);
+
+                throw nvae;
+            }
+            switch (alt24) {
+                case 1 :
+                    // InternalChartDSL.g:3339:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
+                    {
+                    // InternalChartDSL.g:3339:2: ( ( rule__XUnaryOperation__Group_0__0 ) )
+                    // InternalChartDSL.g:3340:3: ( rule__XUnaryOperation__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXUnaryOperationAccess().getGroup_0()); 
+                    }
+                    // InternalChartDSL.g:3341:3: ( rule__XUnaryOperation__Group_0__0 )
+                    // InternalChartDSL.g:3341: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 :
+                    // InternalChartDSL.g:3345:2: ( ruleXCastedExpression )
+                    {
+                    // InternalChartDSL.g:3345:2: ( ruleXCastedExpression )
+                    // InternalChartDSL.g:3346: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"
+    // InternalChartDSL.g:3355:1: rule__OpUnary__Alternatives : ( ( '!' ) | ( '-' ) | ( '+' ) );
+    public final void rule__OpUnary__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:3359:1: ( ( '!' ) | ( '-' ) | ( '+' ) )
+            int alt25=3;
+            switch ( input.LA(1) ) {
+            case 40:
+                {
+                alt25=1;
+                }
+                break;
+            case 35:
+                {
+                alt25=2;
+                }
+                break;
+            case 34:
+                {
+                alt25=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 25, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt25) {
+                case 1 :
+                    // InternalChartDSL.g:3360:2: ( '!' )
+                    {
+                    // InternalChartDSL.g:3360:2: ( '!' )
+                    // InternalChartDSL.g:3361: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 :
+                    // InternalChartDSL.g:3366:2: ( '-' )
+                    {
+                    // InternalChartDSL.g:3366:2: ( '-' )
+                    // InternalChartDSL.g:3367: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 :
+                    // InternalChartDSL.g:3372:2: ( '+' )
+                    {
+                    // InternalChartDSL.g:3372:2: ( '+' )
+                    // InternalChartDSL.g:3373: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"
+    // InternalChartDSL.g:3382:1: rule__OpPostfix__Alternatives : ( ( '++' ) | ( '--' ) );
+    public final void rule__OpPostfix__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:3386:1: ( ( '++' ) | ( '--' ) )
+            int alt26=2;
+            int LA26_0 = input.LA(1);
+
+            if ( (LA26_0==41) ) {
+                alt26=1;
+            }
+            else if ( (LA26_0==42) ) {
+                alt26=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 26, 0, input);
+
+                throw nvae;
+            }
+            switch (alt26) {
+                case 1 :
+                    // InternalChartDSL.g:3387:2: ( '++' )
+                    {
+                    // InternalChartDSL.g:3387:2: ( '++' )
+                    // InternalChartDSL.g:3388: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 :
+                    // InternalChartDSL.g:3393:2: ( '--' )
+                    {
+                    // InternalChartDSL.g:3393:2: ( '--' )
+                    // InternalChartDSL.g:3394: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"
+    // InternalChartDSL.g:3403: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 {
+            // InternalChartDSL.g:3407:1: ( ( ( rule__XMemberFeatureCall__Group_1_0__0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1__0 ) ) )
+            int alt27=2;
+            alt27 = dfa27.predict(input);
+            switch (alt27) {
+                case 1 :
+                    // InternalChartDSL.g:3408:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
+                    {
+                    // InternalChartDSL.g:3408:2: ( ( rule__XMemberFeatureCall__Group_1_0__0 ) )
+                    // InternalChartDSL.g:3409:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0()); 
+                    }
+                    // InternalChartDSL.g:3410:3: ( rule__XMemberFeatureCall__Group_1_0__0 )
+                    // InternalChartDSL.g:3410: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 :
+                    // InternalChartDSL.g:3414:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
+                    {
+                    // InternalChartDSL.g:3414:2: ( ( rule__XMemberFeatureCall__Group_1_1__0 ) )
+                    // InternalChartDSL.g:3415:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1()); 
+                    }
+                    // InternalChartDSL.g:3416:3: ( rule__XMemberFeatureCall__Group_1_1__0 )
+                    // InternalChartDSL.g:3416: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"
+    // InternalChartDSL.g:3424: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 {
+            // InternalChartDSL.g:3428:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) ) )
+            int alt28=2;
+            int LA28_0 = input.LA(1);
+
+            if ( (LA28_0==43) ) {
+                alt28=1;
+            }
+            else if ( (LA28_0==150) ) {
+                alt28=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 28, 0, input);
+
+                throw nvae;
+            }
+            switch (alt28) {
+                case 1 :
+                    // InternalChartDSL.g:3429:2: ( '.' )
+                    {
+                    // InternalChartDSL.g:3429:2: ( '.' )
+                    // InternalChartDSL.g:3430: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 :
+                    // InternalChartDSL.g:3435:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
+                    {
+                    // InternalChartDSL.g:3435:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 ) )
+                    // InternalChartDSL.g:3436:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_0_0_0_1_1()); 
+                    }
+                    // InternalChartDSL.g:3437:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_0_0_0_1_1 )
+                    // InternalChartDSL.g:3437: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"
+    // InternalChartDSL.g:3445: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 {
+            // InternalChartDSL.g:3449:1: ( ( '.' ) | ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) ) | ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) ) )
+            int alt29=3;
+            switch ( input.LA(1) ) {
+            case 43:
+                {
+                alt29=1;
+                }
+                break;
+            case 151:
+                {
+                alt29=2;
+                }
+                break;
+            case 150:
+                {
+                alt29=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 29, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt29) {
+                case 1 :
+                    // InternalChartDSL.g:3450:2: ( '.' )
+                    {
+                    // InternalChartDSL.g:3450:2: ( '.' )
+                    // InternalChartDSL.g:3451: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 :
+                    // InternalChartDSL.g:3456:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
+                    {
+                    // InternalChartDSL.g:3456:2: ( ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 ) )
+                    // InternalChartDSL.g:3457:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeAssignment_1_1_0_0_1_1()); 
+                    }
+                    // InternalChartDSL.g:3458:3: ( rule__XMemberFeatureCall__NullSafeAssignment_1_1_0_0_1_1 )
+                    // InternalChartDSL.g:3458: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 :
+                    // InternalChartDSL.g:3462:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
+                    {
+                    // InternalChartDSL.g:3462:2: ( ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 ) )
+                    // InternalChartDSL.g:3463:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticAssignment_1_1_0_0_1_2()); 
+                    }
+                    // InternalChartDSL.g:3464:3: ( rule__XMemberFeatureCall__ExplicitStaticAssignment_1_1_0_0_1_2 )
+                    // InternalChartDSL.g:3464: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"
+    // InternalChartDSL.g:3472: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 {
+            // InternalChartDSL.g:3476:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) | ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) ) )
+            int alt30=2;
+            alt30 = dfa30.predict(input);
+            switch (alt30) {
+                case 1 :
+                    // InternalChartDSL.g:3477:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+                    {
+                    // InternalChartDSL.g:3477:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+                    // InternalChartDSL.g:3478:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); 
+                    }
+                    // InternalChartDSL.g:3479:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+                    // InternalChartDSL.g:3479: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 :
+                    // InternalChartDSL.g:3483:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
+                    {
+                    // InternalChartDSL.g:3483:2: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 ) )
+                    // InternalChartDSL.g:3484:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3_1_1()); 
+                    }
+                    // InternalChartDSL.g:3485:3: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0 )
+                    // InternalChartDSL.g:3485: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"
+    // InternalChartDSL.g:3493: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 {
+            // InternalChartDSL.g:3497:1: ( ( ruleXConstructorCall ) | ( ruleXBlockExpression ) | ( ruleXSwitchExpression ) | ( ( ruleXSynchronizedExpression ) ) | ( ruleXFeatureCall ) | ( ruleXLiteral ) | ( ruleXIfExpression ) | ( ( ruleXForLoopExpression ) ) | ( ruleXBasicForLoopExpression ) | ( ruleXWhileExpression ) | ( ruleXDoWhileExpression ) | ( ruleXThrowExpression ) | ( ruleXReturnExpression ) | ( ruleXTryCatchFinallyExpression ) | ( ruleXParenthesizedExpression ) )
+            int alt31=15;
+            alt31 = dfa31.predict(input);
+            switch (alt31) {
+                case 1 :
+                    // InternalChartDSL.g:3498:2: ( ruleXConstructorCall )
+                    {
+                    // InternalChartDSL.g:3498:2: ( ruleXConstructorCall )
+                    // InternalChartDSL.g:3499: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 :
+                    // InternalChartDSL.g:3504:2: ( ruleXBlockExpression )
+                    {
+                    // InternalChartDSL.g:3504:2: ( ruleXBlockExpression )
+                    // InternalChartDSL.g:3505: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 :
+                    // InternalChartDSL.g:3510:2: ( ruleXSwitchExpression )
+                    {
+                    // InternalChartDSL.g:3510:2: ( ruleXSwitchExpression )
+                    // InternalChartDSL.g:3511: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 :
+                    // InternalChartDSL.g:3516:2: ( ( ruleXSynchronizedExpression ) )
+                    {
+                    // InternalChartDSL.g:3516:2: ( ( ruleXSynchronizedExpression ) )
+                    // InternalChartDSL.g:3517:3: ( ruleXSynchronizedExpression )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); 
+                    }
+                    // InternalChartDSL.g:3518:3: ( ruleXSynchronizedExpression )
+                    // InternalChartDSL.g:3518:4: ruleXSynchronizedExpression
+                    {
+                    pushFollow(FOLLOW_2);
+                    ruleXSynchronizedExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXSynchronizedExpressionParserRuleCall_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalChartDSL.g:3522:2: ( ruleXFeatureCall )
+                    {
+                    // InternalChartDSL.g:3522:2: ( ruleXFeatureCall )
+                    // InternalChartDSL.g:3523: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 :
+                    // InternalChartDSL.g:3528:2: ( ruleXLiteral )
+                    {
+                    // InternalChartDSL.g:3528:2: ( ruleXLiteral )
+                    // InternalChartDSL.g:3529: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 :
+                    // InternalChartDSL.g:3534:2: ( ruleXIfExpression )
+                    {
+                    // InternalChartDSL.g:3534:2: ( ruleXIfExpression )
+                    // InternalChartDSL.g:3535: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 :
+                    // InternalChartDSL.g:3540:2: ( ( ruleXForLoopExpression ) )
+                    {
+                    // InternalChartDSL.g:3540:2: ( ( ruleXForLoopExpression ) )
+                    // InternalChartDSL.g:3541:3: ( ruleXForLoopExpression )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
+                    }
+                    // InternalChartDSL.g:3542:3: ( ruleXForLoopExpression )
+                    // InternalChartDSL.g:3542:4: ruleXForLoopExpression
+                    {
+                    pushFollow(FOLLOW_2);
+                    ruleXForLoopExpression();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 9 :
+                    // InternalChartDSL.g:3546:2: ( ruleXBasicForLoopExpression )
+                    {
+                    // InternalChartDSL.g:3546:2: ( ruleXBasicForLoopExpression )
+                    // InternalChartDSL.g:3547: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 :
+                    // InternalChartDSL.g:3552:2: ( ruleXWhileExpression )
+                    {
+                    // InternalChartDSL.g:3552:2: ( ruleXWhileExpression )
+                    // InternalChartDSL.g:3553: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 :
+                    // InternalChartDSL.g:3558:2: ( ruleXDoWhileExpression )
+                    {
+                    // InternalChartDSL.g:3558:2: ( ruleXDoWhileExpression )
+                    // InternalChartDSL.g:3559: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 :
+                    // InternalChartDSL.g:3564:2: ( ruleXThrowExpression )
+                    {
+                    // InternalChartDSL.g:3564:2: ( ruleXThrowExpression )
+                    // InternalChartDSL.g:3565: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 :
+                    // InternalChartDSL.g:3570:2: ( ruleXReturnExpression )
+                    {
+                    // InternalChartDSL.g:3570:2: ( ruleXReturnExpression )
+                    // InternalChartDSL.g:3571: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 :
+                    // InternalChartDSL.g:3576:2: ( ruleXTryCatchFinallyExpression )
+                    {
+                    // InternalChartDSL.g:3576:2: ( ruleXTryCatchFinallyExpression )
+                    // InternalChartDSL.g:3577: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 :
+                    // InternalChartDSL.g:3582:2: ( ruleXParenthesizedExpression )
+                    {
+                    // InternalChartDSL.g:3582:2: ( ruleXParenthesizedExpression )
+                    // InternalChartDSL.g:3583: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"
+    // InternalChartDSL.g:3592:1: rule__XLiteral__Alternatives : ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) );
+    public final void rule__XLiteral__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:3596:1: ( ( ruleXCollectionLiteral ) | ( ( ruleXClosure ) ) | ( ruleXBooleanLiteral ) | ( ruleXNumberLiteral ) | ( ruleXNullLiteral ) | ( ruleXStringLiteral ) | ( ruleXTypeLiteral ) )
+            int alt32=7;
+            switch ( input.LA(1) ) {
+            case 100:
+                {
+                alt32=1;
+                }
+                break;
+            case 101:
+                {
+                alt32=2;
+                }
+                break;
+            case 50:
+            case 154:
+                {
+                alt32=3;
+                }
+                break;
+            case RULE_HEX:
+            case RULE_INT:
+            case RULE_DECIMAL:
+                {
+                alt32=4;
+                }
+                break;
+            case 113:
+                {
+                alt32=5;
+                }
+                break;
+            case RULE_STRING:
+                {
+                alt32=6;
+                }
+                break;
+            case 114:
+                {
+                alt32=7;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 32, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt32) {
+                case 1 :
+                    // InternalChartDSL.g:3597:2: ( ruleXCollectionLiteral )
+                    {
+                    // InternalChartDSL.g:3597:2: ( ruleXCollectionLiteral )
+                    // InternalChartDSL.g:3598: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 :
+                    // InternalChartDSL.g:3603:2: ( ( ruleXClosure ) )
+                    {
+                    // InternalChartDSL.g:3603:2: ( ( ruleXClosure ) )
+                    // InternalChartDSL.g:3604:3: ( ruleXClosure )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); 
+                    }
+                    // InternalChartDSL.g:3605:3: ( ruleXClosure )
+                    // InternalChartDSL.g:3605:4: ruleXClosure
+                    {
+                    pushFollow(FOLLOW_2);
+                    ruleXClosure();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getXLiteralAccess().getXClosureParserRuleCall_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalChartDSL.g:3609:2: ( ruleXBooleanLiteral )
+                    {
+                    // InternalChartDSL.g:3609:2: ( ruleXBooleanLiteral )
+                    // InternalChartDSL.g:3610: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 :
+                    // InternalChartDSL.g:3615:2: ( ruleXNumberLiteral )
+                    {
+                    // InternalChartDSL.g:3615:2: ( ruleXNumberLiteral )
+                    // InternalChartDSL.g:3616: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 :
+                    // InternalChartDSL.g:3621:2: ( ruleXNullLiteral )
+                    {
+                    // InternalChartDSL.g:3621:2: ( ruleXNullLiteral )
+                    // InternalChartDSL.g:3622: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 :
+                    // InternalChartDSL.g:3627:2: ( ruleXStringLiteral )
+                    {
+                    // InternalChartDSL.g:3627:2: ( ruleXStringLiteral )
+                    // InternalChartDSL.g:3628: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 :
+                    // InternalChartDSL.g:3633:2: ( ruleXTypeLiteral )
+                    {
+                    // InternalChartDSL.g:3633:2: ( ruleXTypeLiteral )
+                    // InternalChartDSL.g:3634: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"
+    // InternalChartDSL.g:3643:1: rule__XCollectionLiteral__Alternatives : ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) );
+    public final void rule__XCollectionLiteral__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:3647:1: ( ( ruleXSetLiteral ) | ( ruleXListLiteral ) )
+            int alt33=2;
+            int LA33_0 = input.LA(1);
+
+            if ( (LA33_0==100) ) {
+                int LA33_1 = input.LA(2);
+
+                if ( (LA33_1==72) ) {
+                    alt33=1;
+                }
+                else if ( (LA33_1==101) ) {
+                    alt33=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 33, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 33, 0, input);
+
+                throw nvae;
+            }
+            switch (alt33) {
+                case 1 :
+                    // InternalChartDSL.g:3648:2: ( ruleXSetLiteral )
+                    {
+                    // InternalChartDSL.g:3648:2: ( ruleXSetLiteral )
+                    // InternalChartDSL.g:3649: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 :
+                    // InternalChartDSL.g:3654:2: ( ruleXListLiteral )
+                    {
+                    // InternalChartDSL.g:3654:2: ( ruleXListLiteral )
+                    // InternalChartDSL.g:3655: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"
+    // InternalChartDSL.g:3664: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 {
+            // InternalChartDSL.g:3668:1: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) | ( ( rule__XSwitchExpression__Group_2_1__0 ) ) )
+            int alt34=2;
+            alt34 = dfa34.predict(input);
+            switch (alt34) {
+                case 1 :
+                    // InternalChartDSL.g:3669:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+                    {
+                    // InternalChartDSL.g:3669:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+                    // InternalChartDSL.g:3670:3: ( rule__XSwitchExpression__Group_2_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); 
+                    }
+                    // InternalChartDSL.g:3671:3: ( rule__XSwitchExpression__Group_2_0__0 )
+                    // InternalChartDSL.g:3671: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 :
+                    // InternalChartDSL.g:3675:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
+                    {
+                    // InternalChartDSL.g:3675:2: ( ( rule__XSwitchExpression__Group_2_1__0 ) )
+                    // InternalChartDSL.g:3676:3: ( rule__XSwitchExpression__Group_2_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1()); 
+                    }
+                    // InternalChartDSL.g:3677:3: ( rule__XSwitchExpression__Group_2_1__0 )
+                    // InternalChartDSL.g:3677: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"
+    // InternalChartDSL.g:3685: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 {
+            // InternalChartDSL.g:3689:1: ( ( ( rule__XCasePart__Group_3_0__0 ) ) | ( ( rule__XCasePart__FallThroughAssignment_3_1 ) ) )
+            int alt35=2;
+            int LA35_0 = input.LA(1);
+
+            if ( (LA35_0==106) ) {
+                alt35=1;
+            }
+            else if ( (LA35_0==98) ) {
+                alt35=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 35, 0, input);
+
+                throw nvae;
+            }
+            switch (alt35) {
+                case 1 :
+                    // InternalChartDSL.g:3690:2: ( ( rule__XCasePart__Group_3_0__0 ) )
+                    {
+                    // InternalChartDSL.g:3690:2: ( ( rule__XCasePart__Group_3_0__0 ) )
+                    // InternalChartDSL.g:3691:3: ( rule__XCasePart__Group_3_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXCasePartAccess().getGroup_3_0()); 
+                    }
+                    // InternalChartDSL.g:3692:3: ( rule__XCasePart__Group_3_0__0 )
+                    // InternalChartDSL.g:3692: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 :
+                    // InternalChartDSL.g:3696:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
+                    {
+                    // InternalChartDSL.g:3696:2: ( ( rule__XCasePart__FallThroughAssignment_3_1 ) )
+                    // InternalChartDSL.g:3697:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXCasePartAccess().getFallThroughAssignment_3_1()); 
+                    }
+                    // InternalChartDSL.g:3698:3: ( rule__XCasePart__FallThroughAssignment_3_1 )
+                    // InternalChartDSL.g:3698: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"
+    // InternalChartDSL.g:3706:1: rule__XExpressionOrVarDeclaration__Alternatives : ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) );
+    public final void rule__XExpressionOrVarDeclaration__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:3710:1: ( ( ruleXVariableDeclaration ) | ( ruleXExpression ) )
+            int alt36=2;
+            int LA36_0 = input.LA(1);
+
+            if ( (LA36_0==44||LA36_0==153) ) {
+                alt36=1;
+            }
+            else if ( ((LA36_0>=RULE_STRING && LA36_0<=RULE_DECIMAL)||LA36_0==27||(LA36_0>=34 && LA36_0<=35)||LA36_0==40||(LA36_0>=45 && LA36_0<=50)||LA36_0==72||LA36_0==96||(LA36_0>=100 && LA36_0<=101)||LA36_0==103||LA36_0==105||(LA36_0>=109 && LA36_0<=117)||LA36_0==119||LA36_0==154) ) {
+                alt36=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 36, 0, input);
+
+                throw nvae;
+            }
+            switch (alt36) {
+                case 1 :
+                    // InternalChartDSL.g:3711:2: ( ruleXVariableDeclaration )
+                    {
+                    // InternalChartDSL.g:3711:2: ( ruleXVariableDeclaration )
+                    // InternalChartDSL.g:3712: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 :
+                    // InternalChartDSL.g:3717:2: ( ruleXExpression )
+                    {
+                    // InternalChartDSL.g:3717:2: ( ruleXExpression )
+                    // InternalChartDSL.g:3718: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"
+    // InternalChartDSL.g:3727:1: rule__XVariableDeclaration__Alternatives_1 : ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) );
+    public final void rule__XVariableDeclaration__Alternatives_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:3731:1: ( ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) ) | ( 'val' ) )
+            int alt37=2;
+            int LA37_0 = input.LA(1);
+
+            if ( (LA37_0==153) ) {
+                alt37=1;
+            }
+            else if ( (LA37_0==44) ) {
+                alt37=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 37, 0, input);
+
+                throw nvae;
+            }
+            switch (alt37) {
+                case 1 :
+                    // InternalChartDSL.g:3732:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
+                    {
+                    // InternalChartDSL.g:3732:2: ( ( rule__XVariableDeclaration__WriteableAssignment_1_0 ) )
+                    // InternalChartDSL.g:3733:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXVariableDeclarationAccess().getWriteableAssignment_1_0()); 
+                    }
+                    // InternalChartDSL.g:3734:3: ( rule__XVariableDeclaration__WriteableAssignment_1_0 )
+                    // InternalChartDSL.g:3734: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 :
+                    // InternalChartDSL.g:3738:2: ( 'val' )
+                    {
+                    // InternalChartDSL.g:3738:2: ( 'val' )
+                    // InternalChartDSL.g:3739: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"
+    // InternalChartDSL.g:3748: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 {
+            // InternalChartDSL.g:3752:1: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) | ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) ) )
+            int alt38=2;
+            int LA38_0 = input.LA(1);
+
+            if ( (LA38_0==RULE_ID) ) {
+                int LA38_1 = input.LA(2);
+
+                if ( (synpred85_InternalChartDSL()) ) {
+                    alt38=1;
+                }
+                else if ( (true) ) {
+                    alt38=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return ;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 38, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA38_0==31||LA38_0==96) ) {
+                alt38=1;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 38, 0, input);
+
+                throw nvae;
+            }
+            switch (alt38) {
+                case 1 :
+                    // InternalChartDSL.g:3753:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+                    {
+                    // InternalChartDSL.g:3753:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+                    // InternalChartDSL.g:3754:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); 
+                    }
+                    // InternalChartDSL.g:3755:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+                    // InternalChartDSL.g:3755: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 :
+                    // InternalChartDSL.g:3759:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
+                    {
+                    // InternalChartDSL.g:3759:2: ( ( rule__XVariableDeclaration__NameAssignment_2_1 ) )
+                    // InternalChartDSL.g:3760:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_1()); 
+                    }
+                    // InternalChartDSL.g:3761:3: ( rule__XVariableDeclaration__NameAssignment_2_1 )
+                    // InternalChartDSL.g:3761: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"
+    // InternalChartDSL.g:3769: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 {
+            // InternalChartDSL.g:3773:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) | ( ( rule__XFeatureCall__Group_3_1_1__0 ) ) )
+            int alt39=2;
+            alt39 = dfa39.predict(input);
+            switch (alt39) {
+                case 1 :
+                    // InternalChartDSL.g:3774:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+                    {
+                    // InternalChartDSL.g:3774:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+                    // InternalChartDSL.g:3775:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); 
+                    }
+                    // InternalChartDSL.g:3776:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+                    // InternalChartDSL.g:3776: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 :
+                    // InternalChartDSL.g:3780:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
+                    {
+                    // InternalChartDSL.g:3780:2: ( ( rule__XFeatureCall__Group_3_1_1__0 ) )
+                    // InternalChartDSL.g:3781:3: ( rule__XFeatureCall__Group_3_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1()); 
+                    }
+                    // InternalChartDSL.g:3782:3: ( rule__XFeatureCall__Group_3_1_1__0 )
+                    // InternalChartDSL.g:3782: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"
+    // InternalChartDSL.g:3790:1: rule__FeatureCallID__Alternatives : ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) );
+    public final void rule__FeatureCallID__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:3794:1: ( ( ruleValidID ) | ( 'extends' ) | ( 'static' ) | ( 'import' ) | ( 'extension' ) )
+            int alt40=5;
+            switch ( input.LA(1) ) {
+            case RULE_ID:
+                {
+                alt40=1;
+                }
+                break;
+            case 45:
+                {
+                alt40=2;
+                }
+                break;
+            case 46:
+                {
+                alt40=3;
+                }
+                break;
+            case 47:
+                {
+                alt40=4;
+                }
+                break;
+            case 48:
+                {
+                alt40=5;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 40, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt40) {
+                case 1 :
+                    // InternalChartDSL.g:3795:2: ( ruleValidID )
+                    {
+                    // InternalChartDSL.g:3795:2: ( ruleValidID )
+                    // InternalChartDSL.g:3796: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 :
+                    // InternalChartDSL.g:3801:2: ( 'extends' )
+                    {
+                    // InternalChartDSL.g:3801:2: ( 'extends' )
+                    // InternalChartDSL.g:3802: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 :
+                    // InternalChartDSL.g:3807:2: ( 'static' )
+                    {
+                    // InternalChartDSL.g:3807:2: ( 'static' )
+                    // InternalChartDSL.g:3808: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 :
+                    // InternalChartDSL.g:3813:2: ( 'import' )
+                    {
+                    // InternalChartDSL.g:3813:2: ( 'import' )
+                    // InternalChartDSL.g:3814: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 :
+                    // InternalChartDSL.g:3819:2: ( 'extension' )
+                    {
+                    // InternalChartDSL.g:3819:2: ( 'extension' )
+                    // InternalChartDSL.g:3820: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"
+    // InternalChartDSL.g:3829:1: rule__IdOrSuper__Alternatives : ( ( ruleFeatureCallID ) | ( 'super' ) );
+    public final void rule__IdOrSuper__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:3833:1: ( ( ruleFeatureCallID ) | ( 'super' ) )
+            int alt41=2;
+            int LA41_0 = input.LA(1);
+
+            if ( (LA41_0==RULE_ID||(LA41_0>=45 && LA41_0<=48)) ) {
+                alt41=1;
+            }
+            else if ( (LA41_0==49) ) {
+                alt41=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 41, 0, input);
+
+                throw nvae;
+            }
+            switch (alt41) {
+                case 1 :
+                    // InternalChartDSL.g:3834:2: ( ruleFeatureCallID )
+                    {
+                    // InternalChartDSL.g:3834:2: ( ruleFeatureCallID )
+                    // InternalChartDSL.g:3835: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 :
+                    // InternalChartDSL.g:3840:2: ( 'super' )
+                    {
+                    // InternalChartDSL.g:3840:2: ( 'super' )
+                    // InternalChartDSL.g:3841: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"
+    // InternalChartDSL.g:3850: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 {
+            // InternalChartDSL.g:3854:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) | ( ( rule__XConstructorCall__Group_4_1_1__0 ) ) )
+            int alt42=2;
+            alt42 = dfa42.predict(input);
+            switch (alt42) {
+                case 1 :
+                    // InternalChartDSL.g:3855:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+                    {
+                    // InternalChartDSL.g:3855:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+                    // InternalChartDSL.g:3856:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); 
+                    }
+                    // InternalChartDSL.g:3857:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+                    // InternalChartDSL.g:3857: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 :
+                    // InternalChartDSL.g:3861:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
+                    {
+                    // InternalChartDSL.g:3861:2: ( ( rule__XConstructorCall__Group_4_1_1__0 ) )
+                    // InternalChartDSL.g:3862:3: ( rule__XConstructorCall__Group_4_1_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1()); 
+                    }
+                    // InternalChartDSL.g:3863:3: ( rule__XConstructorCall__Group_4_1_1__0 )
+                    // InternalChartDSL.g:3863: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"
+    // InternalChartDSL.g:3871:1: rule__XBooleanLiteral__Alternatives_1 : ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) );
+    public final void rule__XBooleanLiteral__Alternatives_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:3875:1: ( ( 'false' ) | ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) ) )
+            int alt43=2;
+            int LA43_0 = input.LA(1);
+
+            if ( (LA43_0==50) ) {
+                alt43=1;
+            }
+            else if ( (LA43_0==154) ) {
+                alt43=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 43, 0, input);
+
+                throw nvae;
+            }
+            switch (alt43) {
+                case 1 :
+                    // InternalChartDSL.g:3876:2: ( 'false' )
+                    {
+                    // InternalChartDSL.g:3876:2: ( 'false' )
+                    // InternalChartDSL.g:3877: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 :
+                    // InternalChartDSL.g:3882:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
+                    {
+                    // InternalChartDSL.g:3882:2: ( ( rule__XBooleanLiteral__IsTrueAssignment_1_1 ) )
+                    // InternalChartDSL.g:3883:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXBooleanLiteralAccess().getIsTrueAssignment_1_1()); 
+                    }
+                    // InternalChartDSL.g:3884:3: ( rule__XBooleanLiteral__IsTrueAssignment_1_1 )
+                    // InternalChartDSL.g:3884: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"
+    // InternalChartDSL.g:3892: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 {
+            // InternalChartDSL.g:3896:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) ) | ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) ) )
+            int alt44=2;
+            int LA44_0 = input.LA(1);
+
+            if ( (LA44_0==120) ) {
+                alt44=1;
+            }
+            else if ( (LA44_0==118) ) {
+                alt44=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 44, 0, input);
+
+                throw nvae;
+            }
+            switch (alt44) {
+                case 1 :
+                    // InternalChartDSL.g:3897:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
+                    {
+                    // InternalChartDSL.g:3897:2: ( ( rule__XTryCatchFinallyExpression__Group_3_0__0 ) )
+                    // InternalChartDSL.g:3898:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0()); 
+                    }
+                    // InternalChartDSL.g:3899:3: ( rule__XTryCatchFinallyExpression__Group_3_0__0 )
+                    // InternalChartDSL.g:3899: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 :
+                    // InternalChartDSL.g:3903:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
+                    {
+                    // InternalChartDSL.g:3903:2: ( ( rule__XTryCatchFinallyExpression__Group_3_1__0 ) )
+                    // InternalChartDSL.g:3904:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_1()); 
+                    }
+                    // InternalChartDSL.g:3905:3: ( rule__XTryCatchFinallyExpression__Group_3_1__0 )
+                    // InternalChartDSL.g:3905: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"
+    // InternalChartDSL.g:3913:1: rule__Number__Alternatives : ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) );
+    public final void rule__Number__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:3917:1: ( ( RULE_HEX ) | ( ( rule__Number__Group_1__0 ) ) )
+            int alt45=2;
+            int LA45_0 = input.LA(1);
+
+            if ( (LA45_0==RULE_HEX) ) {
+                alt45=1;
+            }
+            else if ( ((LA45_0>=RULE_INT && LA45_0<=RULE_DECIMAL)) ) {
+                alt45=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 45, 0, input);
+
+                throw nvae;
+            }
+            switch (alt45) {
+                case 1 :
+                    // InternalChartDSL.g:3918:2: ( RULE_HEX )
+                    {
+                    // InternalChartDSL.g:3918:2: ( RULE_HEX )
+                    // InternalChartDSL.g:3919: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 :
+                    // InternalChartDSL.g:3924:2: ( ( rule__Number__Group_1__0 ) )
+                    {
+                    // InternalChartDSL.g:3924:2: ( ( rule__Number__Group_1__0 ) )
+                    // InternalChartDSL.g:3925:3: ( rule__Number__Group_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getNumberAccess().getGroup_1()); 
+                    }
+                    // InternalChartDSL.g:3926:3: ( rule__Number__Group_1__0 )
+                    // InternalChartDSL.g:3926: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"
+    // InternalChartDSL.g:3934:1: rule__Number__Alternatives_1_0 : ( ( RULE_INT ) | ( RULE_DECIMAL ) );
+    public final void rule__Number__Alternatives_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:3938:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
+            int alt46=2;
+            int LA46_0 = input.LA(1);
+
+            if ( (LA46_0==RULE_INT) ) {
+                alt46=1;
+            }
+            else if ( (LA46_0==RULE_DECIMAL) ) {
+                alt46=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 46, 0, input);
+
+                throw nvae;
+            }
+            switch (alt46) {
+                case 1 :
+                    // InternalChartDSL.g:3939:2: ( RULE_INT )
+                    {
+                    // InternalChartDSL.g:3939:2: ( RULE_INT )
+                    // InternalChartDSL.g:3940: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 :
+                    // InternalChartDSL.g:3945:2: ( RULE_DECIMAL )
+                    {
+                    // InternalChartDSL.g:3945:2: ( RULE_DECIMAL )
+                    // InternalChartDSL.g:3946: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"
+    // InternalChartDSL.g:3955: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 {
+            // InternalChartDSL.g:3959:1: ( ( RULE_INT ) | ( RULE_DECIMAL ) )
+            int alt47=2;
+            int LA47_0 = input.LA(1);
+
+            if ( (LA47_0==RULE_INT) ) {
+                alt47=1;
+            }
+            else if ( (LA47_0==RULE_DECIMAL) ) {
+                alt47=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 47, 0, input);
+
+                throw nvae;
+            }
+            switch (alt47) {
+                case 1 :
+                    // InternalChartDSL.g:3960:2: ( RULE_INT )
+                    {
+                    // InternalChartDSL.g:3960:2: ( RULE_INT )
+                    // InternalChartDSL.g:3961: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 :
+                    // InternalChartDSL.g:3966:2: ( RULE_DECIMAL )
+                    {
+                    // InternalChartDSL.g:3966:2: ( RULE_DECIMAL )
+                    // InternalChartDSL.g:3967: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"
+    // InternalChartDSL.g:3976:1: rule__JvmTypeReference__Alternatives : ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) );
+    public final void rule__JvmTypeReference__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:3980:1: ( ( ( rule__JvmTypeReference__Group_0__0 ) ) | ( ruleXFunctionTypeRef ) )
+            int alt48=2;
+            int LA48_0 = input.LA(1);
+
+            if ( (LA48_0==RULE_ID) ) {
+                alt48=1;
+            }
+            else if ( (LA48_0==31||LA48_0==96) ) {
+                alt48=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 48, 0, input);
+
+                throw nvae;
+            }
+            switch (alt48) {
+                case 1 :
+                    // InternalChartDSL.g:3981:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
+                    {
+                    // InternalChartDSL.g:3981:2: ( ( rule__JvmTypeReference__Group_0__0 ) )
+                    // InternalChartDSL.g:3982:3: ( rule__JvmTypeReference__Group_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0()); 
+                    }
+                    // InternalChartDSL.g:3983:3: ( rule__JvmTypeReference__Group_0__0 )
+                    // InternalChartDSL.g:3983: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 :
+                    // InternalChartDSL.g:3987:2: ( ruleXFunctionTypeRef )
+                    {
+                    // InternalChartDSL.g:3987:2: ( ruleXFunctionTypeRef )
+                    // InternalChartDSL.g:3988: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"
+    // InternalChartDSL.g:3997:1: rule__JvmArgumentTypeReference__Alternatives : ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) );
+    public final void rule__JvmArgumentTypeReference__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4001:1: ( ( ruleJvmTypeReference ) | ( ruleJvmWildcardTypeReference ) )
+            int alt49=2;
+            int LA49_0 = input.LA(1);
+
+            if ( (LA49_0==RULE_ID||LA49_0==31||LA49_0==96) ) {
+                alt49=1;
+            }
+            else if ( (LA49_0==121) ) {
+                alt49=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 49, 0, input);
+
+                throw nvae;
+            }
+            switch (alt49) {
+                case 1 :
+                    // InternalChartDSL.g:4002:2: ( ruleJvmTypeReference )
+                    {
+                    // InternalChartDSL.g:4002:2: ( ruleJvmTypeReference )
+                    // InternalChartDSL.g:4003: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 :
+                    // InternalChartDSL.g:4008:2: ( ruleJvmWildcardTypeReference )
+                    {
+                    // InternalChartDSL.g:4008:2: ( ruleJvmWildcardTypeReference )
+                    // InternalChartDSL.g:4009: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"
+    // InternalChartDSL.g:4018: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 {
+            // InternalChartDSL.g:4022:1: ( ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) ) | ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) ) )
+            int alt50=2;
+            int LA50_0 = input.LA(1);
+
+            if ( (LA50_0==45) ) {
+                alt50=1;
+            }
+            else if ( (LA50_0==49) ) {
+                alt50=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 50, 0, input);
+
+                throw nvae;
+            }
+            switch (alt50) {
+                case 1 :
+                    // InternalChartDSL.g:4023:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
+                    {
+                    // InternalChartDSL.g:4023:2: ( ( rule__JvmWildcardTypeReference__Group_2_0__0 ) )
+                    // InternalChartDSL.g:4024:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_0()); 
+                    }
+                    // InternalChartDSL.g:4025:3: ( rule__JvmWildcardTypeReference__Group_2_0__0 )
+                    // InternalChartDSL.g:4025: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 :
+                    // InternalChartDSL.g:4029:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
+                    {
+                    // InternalChartDSL.g:4029:2: ( ( rule__JvmWildcardTypeReference__Group_2_1__0 ) )
+                    // InternalChartDSL.g:4030:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getJvmWildcardTypeReferenceAccess().getGroup_2_1()); 
+                    }
+                    // InternalChartDSL.g:4031:3: ( rule__JvmWildcardTypeReference__Group_2_1__0 )
+                    // InternalChartDSL.g:4031: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__LegendPlacementEnum__Alternatives"
+    // InternalChartDSL.g:4039:1: rule__LegendPlacementEnum__Alternatives : ( ( ( 'inside' ) ) | ( ( 'inside-grid' ) ) | ( ( 'outside' ) ) | ( ( 'outside-grid' ) ) );
+    public final void rule__LegendPlacementEnum__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4043:1: ( ( ( 'inside' ) ) | ( ( 'inside-grid' ) ) | ( ( 'outside' ) ) | ( ( 'outside-grid' ) ) )
+            int alt51=4;
+            switch ( input.LA(1) ) {
+            case 51:
+                {
+                alt51=1;
+                }
+                break;
+            case 52:
+                {
+                alt51=2;
+                }
+                break;
+            case 53:
+                {
+                alt51=3;
+                }
+                break;
+            case 54:
+                {
+                alt51=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 51, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt51) {
+                case 1 :
+                    // InternalChartDSL.g:4044:2: ( ( 'inside' ) )
+                    {
+                    // InternalChartDSL.g:4044:2: ( ( 'inside' ) )
+                    // InternalChartDSL.g:4045:3: ( 'inside' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getLegendPlacementEnumAccess().getINSIDEEnumLiteralDeclaration_0()); 
+                    }
+                    // InternalChartDSL.g:4046:3: ( 'inside' )
+                    // InternalChartDSL.g:4046:4: 'inside'
+                    {
+                    match(input,51,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getLegendPlacementEnumAccess().getINSIDEEnumLiteralDeclaration_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:4050:2: ( ( 'inside-grid' ) )
+                    {
+                    // InternalChartDSL.g:4050:2: ( ( 'inside-grid' ) )
+                    // InternalChartDSL.g:4051:3: ( 'inside-grid' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getLegendPlacementEnumAccess().getINSIDE_GRIDEnumLiteralDeclaration_1()); 
+                    }
+                    // InternalChartDSL.g:4052:3: ( 'inside-grid' )
+                    // InternalChartDSL.g:4052:4: 'inside-grid'
+                    {
+                    match(input,52,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getLegendPlacementEnumAccess().getINSIDE_GRIDEnumLiteralDeclaration_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalChartDSL.g:4056:2: ( ( 'outside' ) )
+                    {
+                    // InternalChartDSL.g:4056:2: ( ( 'outside' ) )
+                    // InternalChartDSL.g:4057:3: ( 'outside' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getLegendPlacementEnumAccess().getOUTSIDEEnumLiteralDeclaration_2()); 
+                    }
+                    // InternalChartDSL.g:4058:3: ( 'outside' )
+                    // InternalChartDSL.g:4058:4: 'outside'
+                    {
+                    match(input,53,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getLegendPlacementEnumAccess().getOUTSIDEEnumLiteralDeclaration_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalChartDSL.g:4062:2: ( ( 'outside-grid' ) )
+                    {
+                    // InternalChartDSL.g:4062:2: ( ( 'outside-grid' ) )
+                    // InternalChartDSL.g:4063:3: ( 'outside-grid' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getLegendPlacementEnumAccess().getOUTSIDE_GRIDEnumLiteralDeclaration_3()); 
+                    }
+                    // InternalChartDSL.g:4064:3: ( 'outside-grid' )
+                    // InternalChartDSL.g:4064:4: 'outside-grid'
+                    {
+                    match(input,54,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getLegendPlacementEnumAccess().getOUTSIDE_GRIDEnumLiteralDeclaration_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__LegendPlacementEnum__Alternatives"
+
+
+    // $ANTLR start "rule__ToggleTypeEnum__Alternatives"
+    // InternalChartDSL.g:4072:1: rule__ToggleTypeEnum__Alternatives : ( ( ( 'normal' ) ) | ( ( 'slow' ) ) | ( ( 'fast' ) ) );
+    public final void rule__ToggleTypeEnum__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4076:1: ( ( ( 'normal' ) ) | ( ( 'slow' ) ) | ( ( 'fast' ) ) )
+            int alt52=3;
+            switch ( input.LA(1) ) {
+            case 55:
+                {
+                alt52=1;
+                }
+                break;
+            case 56:
+                {
+                alt52=2;
+                }
+                break;
+            case 57:
+                {
+                alt52=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 52, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt52) {
+                case 1 :
+                    // InternalChartDSL.g:4077:2: ( ( 'normal' ) )
+                    {
+                    // InternalChartDSL.g:4077:2: ( ( 'normal' ) )
+                    // InternalChartDSL.g:4078:3: ( 'normal' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getToggleTypeEnumAccess().getNORMALEnumLiteralDeclaration_0()); 
+                    }
+                    // InternalChartDSL.g:4079:3: ( 'normal' )
+                    // InternalChartDSL.g:4079:4: 'normal'
+                    {
+                    match(input,55,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getToggleTypeEnumAccess().getNORMALEnumLiteralDeclaration_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:4083:2: ( ( 'slow' ) )
+                    {
+                    // InternalChartDSL.g:4083:2: ( ( 'slow' ) )
+                    // InternalChartDSL.g:4084:3: ( 'slow' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getToggleTypeEnumAccess().getSLOWEnumLiteralDeclaration_1()); 
+                    }
+                    // InternalChartDSL.g:4085:3: ( 'slow' )
+                    // InternalChartDSL.g:4085:4: 'slow'
+                    {
+                    match(input,56,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getToggleTypeEnumAccess().getSLOWEnumLiteralDeclaration_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalChartDSL.g:4089:2: ( ( 'fast' ) )
+                    {
+                    // InternalChartDSL.g:4089:2: ( ( 'fast' ) )
+                    // InternalChartDSL.g:4090:3: ( 'fast' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getToggleTypeEnumAccess().getFASTEnumLiteralDeclaration_2()); 
+                    }
+                    // InternalChartDSL.g:4091:3: ( 'fast' )
+                    // InternalChartDSL.g:4091:4: 'fast'
+                    {
+                    match(input,57,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getToggleTypeEnumAccess().getFASTEnumLiteralDeclaration_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ToggleTypeEnum__Alternatives"
+
+
+    // $ANTLR start "rule__TooltipLocationEnum__Alternatives"
+    // InternalChartDSL.g:4099:1: rule__TooltipLocationEnum__Alternatives : ( ( ( 'north' ) ) | ( ( 'north-east' ) ) | ( ( 'east' ) ) | ( ( 'south-east' ) ) | ( ( 'south' ) ) | ( ( 'south-west' ) ) | ( ( 'west' ) ) | ( ( 'north-west' ) ) );
+    public final void rule__TooltipLocationEnum__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4103:1: ( ( ( 'north' ) ) | ( ( 'north-east' ) ) | ( ( 'east' ) ) | ( ( 'south-east' ) ) | ( ( 'south' ) ) | ( ( 'south-west' ) ) | ( ( 'west' ) ) | ( ( 'north-west' ) ) )
+            int alt53=8;
+            switch ( input.LA(1) ) {
+            case 58:
+                {
+                alt53=1;
+                }
+                break;
+            case 59:
+                {
+                alt53=2;
+                }
+                break;
+            case 60:
+                {
+                alt53=3;
+                }
+                break;
+            case 61:
+                {
+                alt53=4;
+                }
+                break;
+            case 62:
+                {
+                alt53=5;
+                }
+                break;
+            case 63:
+                {
+                alt53=6;
+                }
+                break;
+            case 64:
+                {
+                alt53=7;
+                }
+                break;
+            case 65:
+                {
+                alt53=8;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 53, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt53) {
+                case 1 :
+                    // InternalChartDSL.g:4104:2: ( ( 'north' ) )
+                    {
+                    // InternalChartDSL.g:4104:2: ( ( 'north' ) )
+                    // InternalChartDSL.g:4105:3: ( 'north' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTooltipLocationEnumAccess().getNORTHEnumLiteralDeclaration_0()); 
+                    }
+                    // InternalChartDSL.g:4106:3: ( 'north' )
+                    // InternalChartDSL.g:4106:4: 'north'
+                    {
+                    match(input,58,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTooltipLocationEnumAccess().getNORTHEnumLiteralDeclaration_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:4110:2: ( ( 'north-east' ) )
+                    {
+                    // InternalChartDSL.g:4110:2: ( ( 'north-east' ) )
+                    // InternalChartDSL.g:4111:3: ( 'north-east' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTooltipLocationEnumAccess().getNORTH_EASTEnumLiteralDeclaration_1()); 
+                    }
+                    // InternalChartDSL.g:4112:3: ( 'north-east' )
+                    // InternalChartDSL.g:4112:4: 'north-east'
+                    {
+                    match(input,59,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTooltipLocationEnumAccess().getNORTH_EASTEnumLiteralDeclaration_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalChartDSL.g:4116:2: ( ( 'east' ) )
+                    {
+                    // InternalChartDSL.g:4116:2: ( ( 'east' ) )
+                    // InternalChartDSL.g:4117:3: ( 'east' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTooltipLocationEnumAccess().getEASTEnumLiteralDeclaration_2()); 
+                    }
+                    // InternalChartDSL.g:4118:3: ( 'east' )
+                    // InternalChartDSL.g:4118:4: 'east'
+                    {
+                    match(input,60,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTooltipLocationEnumAccess().getEASTEnumLiteralDeclaration_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalChartDSL.g:4122:2: ( ( 'south-east' ) )
+                    {
+                    // InternalChartDSL.g:4122:2: ( ( 'south-east' ) )
+                    // InternalChartDSL.g:4123:3: ( 'south-east' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTooltipLocationEnumAccess().getSOUTH_EASTEnumLiteralDeclaration_3()); 
+                    }
+                    // InternalChartDSL.g:4124:3: ( 'south-east' )
+                    // InternalChartDSL.g:4124:4: 'south-east'
+                    {
+                    match(input,61,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTooltipLocationEnumAccess().getSOUTH_EASTEnumLiteralDeclaration_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalChartDSL.g:4128:2: ( ( 'south' ) )
+                    {
+                    // InternalChartDSL.g:4128:2: ( ( 'south' ) )
+                    // InternalChartDSL.g:4129:3: ( 'south' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTooltipLocationEnumAccess().getSOUTHEnumLiteralDeclaration_4()); 
+                    }
+                    // InternalChartDSL.g:4130:3: ( 'south' )
+                    // InternalChartDSL.g:4130:4: 'south'
+                    {
+                    match(input,62,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTooltipLocationEnumAccess().getSOUTHEnumLiteralDeclaration_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalChartDSL.g:4134:2: ( ( 'south-west' ) )
+                    {
+                    // InternalChartDSL.g:4134:2: ( ( 'south-west' ) )
+                    // InternalChartDSL.g:4135:3: ( 'south-west' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTooltipLocationEnumAccess().getSOUTH_WESTEnumLiteralDeclaration_5()); 
+                    }
+                    // InternalChartDSL.g:4136:3: ( 'south-west' )
+                    // InternalChartDSL.g:4136:4: 'south-west'
+                    {
+                    match(input,63,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTooltipLocationEnumAccess().getSOUTH_WESTEnumLiteralDeclaration_5()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // InternalChartDSL.g:4140:2: ( ( 'west' ) )
+                    {
+                    // InternalChartDSL.g:4140:2: ( ( 'west' ) )
+                    // InternalChartDSL.g:4141:3: ( 'west' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTooltipLocationEnumAccess().getWESTEnumLiteralDeclaration_6()); 
+                    }
+                    // InternalChartDSL.g:4142:3: ( 'west' )
+                    // InternalChartDSL.g:4142:4: 'west'
+                    {
+                    match(input,64,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTooltipLocationEnumAccess().getWESTEnumLiteralDeclaration_6()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // InternalChartDSL.g:4146:2: ( ( 'north-west' ) )
+                    {
+                    // InternalChartDSL.g:4146:2: ( ( 'north-west' ) )
+                    // InternalChartDSL.g:4147:3: ( 'north-west' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getTooltipLocationEnumAccess().getNORTH_WESTEnumLiteralDeclaration_7()); 
+                    }
+                    // InternalChartDSL.g:4148:3: ( 'north-west' )
+                    // InternalChartDSL.g:4148:4: 'north-west'
+                    {
+                    match(input,65,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getTooltipLocationEnumAccess().getNORTH_WESTEnumLiteralDeclaration_7()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__TooltipLocationEnum__Alternatives"
+
+
+    // $ANTLR start "rule__RenderTypeEnum__Alternatives"
+    // InternalChartDSL.g:4156:1: rule__RenderTypeEnum__Alternatives : ( ( ( 'category' ) ) | ( ( 'linear' ) ) | ( ( 'date' ) ) | ( ( 'logarithmic' ) ) | ( ( 'pyramid' ) ) );
+    public final void rule__RenderTypeEnum__Alternatives() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4160:1: ( ( ( 'category' ) ) | ( ( 'linear' ) ) | ( ( 'date' ) ) | ( ( 'logarithmic' ) ) | ( ( 'pyramid' ) ) )
+            int alt54=5;
+            switch ( input.LA(1) ) {
+            case 66:
+                {
+                alt54=1;
+                }
+                break;
+            case 67:
+                {
+                alt54=2;
+                }
+                break;
+            case 68:
+                {
+                alt54=3;
+                }
+                break;
+            case 69:
+                {
+                alt54=4;
+                }
+                break;
+            case 70:
+                {
+                alt54=5;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 54, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt54) {
+                case 1 :
+                    // InternalChartDSL.g:4161:2: ( ( 'category' ) )
+                    {
+                    // InternalChartDSL.g:4161:2: ( ( 'category' ) )
+                    // InternalChartDSL.g:4162:3: ( 'category' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getRenderTypeEnumAccess().getCATEGORYEnumLiteralDeclaration_0()); 
+                    }
+                    // InternalChartDSL.g:4163:3: ( 'category' )
+                    // InternalChartDSL.g:4163:4: 'category'
+                    {
+                    match(input,66,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getRenderTypeEnumAccess().getCATEGORYEnumLiteralDeclaration_0()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:4167:2: ( ( 'linear' ) )
+                    {
+                    // InternalChartDSL.g:4167:2: ( ( 'linear' ) )
+                    // InternalChartDSL.g:4168:3: ( 'linear' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getRenderTypeEnumAccess().getLINEAREnumLiteralDeclaration_1()); 
+                    }
+                    // InternalChartDSL.g:4169:3: ( 'linear' )
+                    // InternalChartDSL.g:4169:4: 'linear'
+                    {
+                    match(input,67,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getRenderTypeEnumAccess().getLINEAREnumLiteralDeclaration_1()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalChartDSL.g:4173:2: ( ( 'date' ) )
+                    {
+                    // InternalChartDSL.g:4173:2: ( ( 'date' ) )
+                    // InternalChartDSL.g:4174:3: ( 'date' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getRenderTypeEnumAccess().getDATEEnumLiteralDeclaration_2()); 
+                    }
+                    // InternalChartDSL.g:4175:3: ( 'date' )
+                    // InternalChartDSL.g:4175:4: 'date'
+                    {
+                    match(input,68,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getRenderTypeEnumAccess().getDATEEnumLiteralDeclaration_2()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalChartDSL.g:4179:2: ( ( 'logarithmic' ) )
+                    {
+                    // InternalChartDSL.g:4179:2: ( ( 'logarithmic' ) )
+                    // InternalChartDSL.g:4180:3: ( 'logarithmic' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getRenderTypeEnumAccess().getLOGEnumLiteralDeclaration_3()); 
+                    }
+                    // InternalChartDSL.g:4181:3: ( 'logarithmic' )
+                    // InternalChartDSL.g:4181:4: 'logarithmic'
+                    {
+                    match(input,69,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getRenderTypeEnumAccess().getLOGEnumLiteralDeclaration_3()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalChartDSL.g:4185:2: ( ( 'pyramid' ) )
+                    {
+                    // InternalChartDSL.g:4185:2: ( ( 'pyramid' ) )
+                    // InternalChartDSL.g:4186:3: ( 'pyramid' )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getRenderTypeEnumAccess().getPYRAMIDEnumLiteralDeclaration_4()); 
+                    }
+                    // InternalChartDSL.g:4187:3: ( 'pyramid' )
+                    // InternalChartDSL.g:4187:4: 'pyramid'
+                    {
+                    match(input,70,FOLLOW_2); if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getRenderTypeEnumAccess().getPYRAMIDEnumLiteralDeclaration_4()); 
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__RenderTypeEnum__Alternatives"
+
+
+    // $ANTLR start "rule__ChartModel__Group__0"
+    // InternalChartDSL.g:4195:1: rule__ChartModel__Group__0 : rule__ChartModel__Group__0__Impl rule__ChartModel__Group__1 ;
+    public final void rule__ChartModel__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4199:1: ( rule__ChartModel__Group__0__Impl rule__ChartModel__Group__1 )
+            // InternalChartDSL.g:4200:2: rule__ChartModel__Group__0__Impl rule__ChartModel__Group__1
+            {
+            pushFollow(FOLLOW_5);
+            rule__ChartModel__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartModel__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartModel__Group__0"
+
+
+    // $ANTLR start "rule__ChartModel__Group__0__Impl"
+    // InternalChartDSL.g:4207:1: rule__ChartModel__Group__0__Impl : ( ( rule__ChartModel__ImportSectionAssignment_0 )? ) ;
+    public final void rule__ChartModel__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4211:1: ( ( ( rule__ChartModel__ImportSectionAssignment_0 )? ) )
+            // InternalChartDSL.g:4212:1: ( ( rule__ChartModel__ImportSectionAssignment_0 )? )
+            {
+            // InternalChartDSL.g:4212:1: ( ( rule__ChartModel__ImportSectionAssignment_0 )? )
+            // InternalChartDSL.g:4213:2: ( rule__ChartModel__ImportSectionAssignment_0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartModelAccess().getImportSectionAssignment_0()); 
+            }
+            // InternalChartDSL.g:4214:2: ( rule__ChartModel__ImportSectionAssignment_0 )?
+            int alt55=2;
+            int LA55_0 = input.LA(1);
+
+            if ( (LA55_0==47) ) {
+                alt55=1;
+            }
+            switch (alt55) {
+                case 1 :
+                    // InternalChartDSL.g:4214:3: rule__ChartModel__ImportSectionAssignment_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartModel__ImportSectionAssignment_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartModelAccess().getImportSectionAssignment_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartModel__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ChartModel__Group__1"
+    // InternalChartDSL.g:4222:1: rule__ChartModel__Group__1 : rule__ChartModel__Group__1__Impl ;
+    public final void rule__ChartModel__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4226:1: ( rule__ChartModel__Group__1__Impl )
+            // InternalChartDSL.g:4227:2: rule__ChartModel__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartModel__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartModel__Group__1"
+
+
+    // $ANTLR start "rule__ChartModel__Group__1__Impl"
+    // InternalChartDSL.g:4233:1: rule__ChartModel__Group__1__Impl : ( ( rule__ChartModel__PackagesAssignment_1 )* ) ;
+    public final void rule__ChartModel__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4237:1: ( ( ( rule__ChartModel__PackagesAssignment_1 )* ) )
+            // InternalChartDSL.g:4238:1: ( ( rule__ChartModel__PackagesAssignment_1 )* )
+            {
+            // InternalChartDSL.g:4238:1: ( ( rule__ChartModel__PackagesAssignment_1 )* )
+            // InternalChartDSL.g:4239:2: ( rule__ChartModel__PackagesAssignment_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartModelAccess().getPackagesAssignment_1()); 
+            }
+            // InternalChartDSL.g:4240:2: ( rule__ChartModel__PackagesAssignment_1 )*
+            loop56:
+            do {
+                int alt56=2;
+                int LA56_0 = input.LA(1);
+
+                if ( (LA56_0==71) ) {
+                    alt56=1;
+                }
+
+
+                switch (alt56) {
+            	case 1 :
+            	    // InternalChartDSL.g:4240:3: rule__ChartModel__PackagesAssignment_1
+            	    {
+            	    pushFollow(FOLLOW_6);
+            	    rule__ChartModel__PackagesAssignment_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop56;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartModelAccess().getPackagesAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartModel__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ChartPackage__Group__0"
+    // InternalChartDSL.g:4249:1: rule__ChartPackage__Group__0 : rule__ChartPackage__Group__0__Impl rule__ChartPackage__Group__1 ;
+    public final void rule__ChartPackage__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4253:1: ( rule__ChartPackage__Group__0__Impl rule__ChartPackage__Group__1 )
+            // InternalChartDSL.g:4254:2: rule__ChartPackage__Group__0__Impl rule__ChartPackage__Group__1
+            {
+            pushFollow(FOLLOW_5);
+            rule__ChartPackage__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartPackage__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPackage__Group__0"
+
+
+    // $ANTLR start "rule__ChartPackage__Group__0__Impl"
+    // InternalChartDSL.g:4261:1: rule__ChartPackage__Group__0__Impl : ( () ) ;
+    public final void rule__ChartPackage__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4265:1: ( ( () ) )
+            // InternalChartDSL.g:4266:1: ( () )
+            {
+            // InternalChartDSL.g:4266:1: ( () )
+            // InternalChartDSL.g:4267:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPackageAccess().getChartPackageAction_0()); 
+            }
+            // InternalChartDSL.g:4268:2: ()
+            // InternalChartDSL.g:4268:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPackageAccess().getChartPackageAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPackage__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ChartPackage__Group__1"
+    // InternalChartDSL.g:4276:1: rule__ChartPackage__Group__1 : rule__ChartPackage__Group__1__Impl rule__ChartPackage__Group__2 ;
+    public final void rule__ChartPackage__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4280:1: ( rule__ChartPackage__Group__1__Impl rule__ChartPackage__Group__2 )
+            // InternalChartDSL.g:4281:2: rule__ChartPackage__Group__1__Impl rule__ChartPackage__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__ChartPackage__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartPackage__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPackage__Group__1"
+
+
+    // $ANTLR start "rule__ChartPackage__Group__1__Impl"
+    // InternalChartDSL.g:4288:1: rule__ChartPackage__Group__1__Impl : ( 'package' ) ;
+    public final void rule__ChartPackage__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4292:1: ( ( 'package' ) )
+            // InternalChartDSL.g:4293:1: ( 'package' )
+            {
+            // InternalChartDSL.g:4293:1: ( 'package' )
+            // InternalChartDSL.g:4294:2: 'package'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPackageAccess().getPackageKeyword_1()); 
+            }
+            match(input,71,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPackageAccess().getPackageKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPackage__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ChartPackage__Group__2"
+    // InternalChartDSL.g:4303:1: rule__ChartPackage__Group__2 : rule__ChartPackage__Group__2__Impl rule__ChartPackage__Group__3 ;
+    public final void rule__ChartPackage__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4307:1: ( rule__ChartPackage__Group__2__Impl rule__ChartPackage__Group__3 )
+            // InternalChartDSL.g:4308:2: rule__ChartPackage__Group__2__Impl rule__ChartPackage__Group__3
+            {
+            pushFollow(FOLLOW_8);
+            rule__ChartPackage__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartPackage__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPackage__Group__2"
+
+
+    // $ANTLR start "rule__ChartPackage__Group__2__Impl"
+    // InternalChartDSL.g:4315:1: rule__ChartPackage__Group__2__Impl : ( ( rule__ChartPackage__NameAssignment_2 ) ) ;
+    public final void rule__ChartPackage__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4319:1: ( ( ( rule__ChartPackage__NameAssignment_2 ) ) )
+            // InternalChartDSL.g:4320:1: ( ( rule__ChartPackage__NameAssignment_2 ) )
+            {
+            // InternalChartDSL.g:4320:1: ( ( rule__ChartPackage__NameAssignment_2 ) )
+            // InternalChartDSL.g:4321:2: ( rule__ChartPackage__NameAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPackageAccess().getNameAssignment_2()); 
+            }
+            // InternalChartDSL.g:4322:2: ( rule__ChartPackage__NameAssignment_2 )
+            // InternalChartDSL.g:4322:3: rule__ChartPackage__NameAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartPackage__NameAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPackageAccess().getNameAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPackage__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ChartPackage__Group__3"
+    // InternalChartDSL.g:4330:1: rule__ChartPackage__Group__3 : rule__ChartPackage__Group__3__Impl ;
+    public final void rule__ChartPackage__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4334:1: ( rule__ChartPackage__Group__3__Impl )
+            // InternalChartDSL.g:4335:2: rule__ChartPackage__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartPackage__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPackage__Group__3"
+
+
+    // $ANTLR start "rule__ChartPackage__Group__3__Impl"
+    // InternalChartDSL.g:4341:1: rule__ChartPackage__Group__3__Impl : ( ( rule__ChartPackage__Group_3__0 )? ) ;
+    public final void rule__ChartPackage__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4345:1: ( ( ( rule__ChartPackage__Group_3__0 )? ) )
+            // InternalChartDSL.g:4346:1: ( ( rule__ChartPackage__Group_3__0 )? )
+            {
+            // InternalChartDSL.g:4346:1: ( ( rule__ChartPackage__Group_3__0 )? )
+            // InternalChartDSL.g:4347:2: ( rule__ChartPackage__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPackageAccess().getGroup_3()); 
+            }
+            // InternalChartDSL.g:4348:2: ( rule__ChartPackage__Group_3__0 )?
+            int alt57=2;
+            int LA57_0 = input.LA(1);
+
+            if ( (LA57_0==72) ) {
+                alt57=1;
+            }
+            switch (alt57) {
+                case 1 :
+                    // InternalChartDSL.g:4348:3: rule__ChartPackage__Group_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartPackage__Group_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPackageAccess().getGroup_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPackage__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ChartPackage__Group_3__0"
+    // InternalChartDSL.g:4357:1: rule__ChartPackage__Group_3__0 : rule__ChartPackage__Group_3__0__Impl rule__ChartPackage__Group_3__1 ;
+    public final void rule__ChartPackage__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4361:1: ( rule__ChartPackage__Group_3__0__Impl rule__ChartPackage__Group_3__1 )
+            // InternalChartDSL.g:4362:2: rule__ChartPackage__Group_3__0__Impl rule__ChartPackage__Group_3__1
+            {
+            pushFollow(FOLLOW_9);
+            rule__ChartPackage__Group_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartPackage__Group_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPackage__Group_3__0"
+
+
+    // $ANTLR start "rule__ChartPackage__Group_3__0__Impl"
+    // InternalChartDSL.g:4369:1: rule__ChartPackage__Group_3__0__Impl : ( '{' ) ;
+    public final void rule__ChartPackage__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4373:1: ( ( '{' ) )
+            // InternalChartDSL.g:4374:1: ( '{' )
+            {
+            // InternalChartDSL.g:4374:1: ( '{' )
+            // InternalChartDSL.g:4375:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPackageAccess().getLeftCurlyBracketKeyword_3_0()); 
+            }
+            match(input,72,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPackageAccess().getLeftCurlyBracketKeyword_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPackage__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__ChartPackage__Group_3__1"
+    // InternalChartDSL.g:4384:1: rule__ChartPackage__Group_3__1 : rule__ChartPackage__Group_3__1__Impl rule__ChartPackage__Group_3__2 ;
+    public final void rule__ChartPackage__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4388:1: ( rule__ChartPackage__Group_3__1__Impl rule__ChartPackage__Group_3__2 )
+            // InternalChartDSL.g:4389:2: rule__ChartPackage__Group_3__1__Impl rule__ChartPackage__Group_3__2
+            {
+            pushFollow(FOLLOW_9);
+            rule__ChartPackage__Group_3__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartPackage__Group_3__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPackage__Group_3__1"
+
+
+    // $ANTLR start "rule__ChartPackage__Group_3__1__Impl"
+    // InternalChartDSL.g:4396:1: rule__ChartPackage__Group_3__1__Impl : ( ( rule__ChartPackage__ChartsAssignment_3_1 )* ) ;
+    public final void rule__ChartPackage__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4400:1: ( ( ( rule__ChartPackage__ChartsAssignment_3_1 )* ) )
+            // InternalChartDSL.g:4401:1: ( ( rule__ChartPackage__ChartsAssignment_3_1 )* )
+            {
+            // InternalChartDSL.g:4401:1: ( ( rule__ChartPackage__ChartsAssignment_3_1 )* )
+            // InternalChartDSL.g:4402:2: ( rule__ChartPackage__ChartsAssignment_3_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPackageAccess().getChartsAssignment_3_1()); 
+            }
+            // InternalChartDSL.g:4403:2: ( rule__ChartPackage__ChartsAssignment_3_1 )*
+            loop58:
+            do {
+                int alt58=2;
+                int LA58_0 = input.LA(1);
+
+                if ( (LA58_0==74) ) {
+                    alt58=1;
+                }
+
+
+                switch (alt58) {
+            	case 1 :
+            	    // InternalChartDSL.g:4403:3: rule__ChartPackage__ChartsAssignment_3_1
+            	    {
+            	    pushFollow(FOLLOW_10);
+            	    rule__ChartPackage__ChartsAssignment_3_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop58;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPackageAccess().getChartsAssignment_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPackage__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__ChartPackage__Group_3__2"
+    // InternalChartDSL.g:4411:1: rule__ChartPackage__Group_3__2 : rule__ChartPackage__Group_3__2__Impl ;
+    public final void rule__ChartPackage__Group_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4415:1: ( rule__ChartPackage__Group_3__2__Impl )
+            // InternalChartDSL.g:4416:2: rule__ChartPackage__Group_3__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartPackage__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__ChartPackage__Group_3__2"
+
+
+    // $ANTLR start "rule__ChartPackage__Group_3__2__Impl"
+    // InternalChartDSL.g:4422:1: rule__ChartPackage__Group_3__2__Impl : ( '}' ) ;
+    public final void rule__ChartPackage__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4426:1: ( ( '}' ) )
+            // InternalChartDSL.g:4427:1: ( '}' )
+            {
+            // InternalChartDSL.g:4427:1: ( '}' )
+            // InternalChartDSL.g:4428:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPackageAccess().getRightCurlyBracketKeyword_3_2()); 
+            }
+            match(input,73,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPackageAccess().getRightCurlyBracketKeyword_3_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPackage__Group_3__2__Impl"
+
+
+    // $ANTLR start "rule__Chart__Group__0"
+    // InternalChartDSL.g:4438:1: rule__Chart__Group__0 : rule__Chart__Group__0__Impl rule__Chart__Group__1 ;
+    public final void rule__Chart__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4442:1: ( rule__Chart__Group__0__Impl rule__Chart__Group__1 )
+            // InternalChartDSL.g:4443:2: rule__Chart__Group__0__Impl rule__Chart__Group__1
+            {
+            pushFollow(FOLLOW_11);
+            rule__Chart__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Chart__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group__0"
+
+
+    // $ANTLR start "rule__Chart__Group__0__Impl"
+    // InternalChartDSL.g:4450:1: rule__Chart__Group__0__Impl : ( () ) ;
+    public final void rule__Chart__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4454:1: ( ( () ) )
+            // InternalChartDSL.g:4455:1: ( () )
+            {
+            // InternalChartDSL.g:4455:1: ( () )
+            // InternalChartDSL.g:4456:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getChartAction_0()); 
+            }
+            // InternalChartDSL.g:4457:2: ()
+            // InternalChartDSL.g:4457:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getChartAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group__0__Impl"
+
+
+    // $ANTLR start "rule__Chart__Group__1"
+    // InternalChartDSL.g:4465:1: rule__Chart__Group__1 : rule__Chart__Group__1__Impl rule__Chart__Group__2 ;
+    public final void rule__Chart__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4469:1: ( rule__Chart__Group__1__Impl rule__Chart__Group__2 )
+            // InternalChartDSL.g:4470:2: rule__Chart__Group__1__Impl rule__Chart__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__Chart__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Chart__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group__1"
+
+
+    // $ANTLR start "rule__Chart__Group__1__Impl"
+    // InternalChartDSL.g:4477:1: rule__Chart__Group__1__Impl : ( 'chart' ) ;
+    public final void rule__Chart__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4481:1: ( ( 'chart' ) )
+            // InternalChartDSL.g:4482:1: ( 'chart' )
+            {
+            // InternalChartDSL.g:4482:1: ( 'chart' )
+            // InternalChartDSL.g:4483:2: 'chart'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getChartKeyword_1()); 
+            }
+            match(input,74,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getChartKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group__1__Impl"
+
+
+    // $ANTLR start "rule__Chart__Group__2"
+    // InternalChartDSL.g:4492:1: rule__Chart__Group__2 : rule__Chart__Group__2__Impl rule__Chart__Group__3 ;
+    public final void rule__Chart__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4496:1: ( rule__Chart__Group__2__Impl rule__Chart__Group__3 )
+            // InternalChartDSL.g:4497:2: rule__Chart__Group__2__Impl rule__Chart__Group__3
+            {
+            pushFollow(FOLLOW_12);
+            rule__Chart__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Chart__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group__2"
+
+
+    // $ANTLR start "rule__Chart__Group__2__Impl"
+    // InternalChartDSL.g:4504:1: rule__Chart__Group__2__Impl : ( ( rule__Chart__NameAssignment_2 ) ) ;
+    public final void rule__Chart__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4508:1: ( ( ( rule__Chart__NameAssignment_2 ) ) )
+            // InternalChartDSL.g:4509:1: ( ( rule__Chart__NameAssignment_2 ) )
+            {
+            // InternalChartDSL.g:4509:1: ( ( rule__Chart__NameAssignment_2 ) )
+            // InternalChartDSL.g:4510:2: ( rule__Chart__NameAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getNameAssignment_2()); 
+            }
+            // InternalChartDSL.g:4511:2: ( rule__Chart__NameAssignment_2 )
+            // InternalChartDSL.g:4511:3: rule__Chart__NameAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__Chart__NameAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getNameAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group__2__Impl"
+
+
+    // $ANTLR start "rule__Chart__Group__3"
+    // InternalChartDSL.g:4519:1: rule__Chart__Group__3 : rule__Chart__Group__3__Impl rule__Chart__Group__4 ;
+    public final void rule__Chart__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4523:1: ( rule__Chart__Group__3__Impl rule__Chart__Group__4 )
+            // InternalChartDSL.g:4524:2: rule__Chart__Group__3__Impl rule__Chart__Group__4
+            {
+            pushFollow(FOLLOW_12);
+            rule__Chart__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Chart__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group__3"
+
+
+    // $ANTLR start "rule__Chart__Group__3__Impl"
+    // InternalChartDSL.g:4531:1: rule__Chart__Group__3__Impl : ( ( rule__Chart__Group_3__0 )? ) ;
+    public final void rule__Chart__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4535:1: ( ( ( rule__Chart__Group_3__0 )? ) )
+            // InternalChartDSL.g:4536:1: ( ( rule__Chart__Group_3__0 )? )
+            {
+            // InternalChartDSL.g:4536:1: ( ( rule__Chart__Group_3__0 )? )
+            // InternalChartDSL.g:4537:2: ( rule__Chart__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getGroup_3()); 
+            }
+            // InternalChartDSL.g:4538:2: ( rule__Chart__Group_3__0 )?
+            int alt59=2;
+            int LA59_0 = input.LA(1);
+
+            if ( (LA59_0==123) ) {
+                alt59=1;
+            }
+            switch (alt59) {
+                case 1 :
+                    // InternalChartDSL.g:4538:3: rule__Chart__Group_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Chart__Group_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getGroup_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group__3__Impl"
+
+
+    // $ANTLR start "rule__Chart__Group__4"
+    // InternalChartDSL.g:4546:1: rule__Chart__Group__4 : rule__Chart__Group__4__Impl rule__Chart__Group__5 ;
+    public final void rule__Chart__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4550:1: ( rule__Chart__Group__4__Impl rule__Chart__Group__5 )
+            // InternalChartDSL.g:4551:2: rule__Chart__Group__4__Impl rule__Chart__Group__5
+            {
+            pushFollow(FOLLOW_13);
+            rule__Chart__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Chart__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group__4"
+
+
+    // $ANTLR start "rule__Chart__Group__4__Impl"
+    // InternalChartDSL.g:4558:1: rule__Chart__Group__4__Impl : ( 'as' ) ;
+    public final void rule__Chart__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4562:1: ( ( 'as' ) )
+            // InternalChartDSL.g:4563:1: ( 'as' )
+            {
+            // InternalChartDSL.g:4563:1: ( 'as' )
+            // InternalChartDSL.g:4564:2: 'as'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getAsKeyword_4()); 
+            }
+            match(input,75,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getAsKeyword_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group__4__Impl"
+
+
+    // $ANTLR start "rule__Chart__Group__5"
+    // InternalChartDSL.g:4573:1: rule__Chart__Group__5 : rule__Chart__Group__5__Impl rule__Chart__Group__6 ;
+    public final void rule__Chart__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4577:1: ( rule__Chart__Group__5__Impl rule__Chart__Group__6 )
+            // InternalChartDSL.g:4578:2: rule__Chart__Group__5__Impl rule__Chart__Group__6
+            {
+            pushFollow(FOLLOW_14);
+            rule__Chart__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Chart__Group__6();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group__5"
+
+
+    // $ANTLR start "rule__Chart__Group__5__Impl"
+    // InternalChartDSL.g:4585:1: rule__Chart__Group__5__Impl : ( ( rule__Chart__CharttypeAssignment_5 ) ) ;
+    public final void rule__Chart__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4589:1: ( ( ( rule__Chart__CharttypeAssignment_5 ) ) )
+            // InternalChartDSL.g:4590:1: ( ( rule__Chart__CharttypeAssignment_5 ) )
+            {
+            // InternalChartDSL.g:4590:1: ( ( rule__Chart__CharttypeAssignment_5 ) )
+            // InternalChartDSL.g:4591:2: ( rule__Chart__CharttypeAssignment_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getCharttypeAssignment_5()); 
+            }
+            // InternalChartDSL.g:4592:2: ( rule__Chart__CharttypeAssignment_5 )
+            // InternalChartDSL.g:4592:3: rule__Chart__CharttypeAssignment_5
+            {
+            pushFollow(FOLLOW_2);
+            rule__Chart__CharttypeAssignment_5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getCharttypeAssignment_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group__5__Impl"
+
+
+    // $ANTLR start "rule__Chart__Group__6"
+    // InternalChartDSL.g:4600:1: rule__Chart__Group__6 : rule__Chart__Group__6__Impl rule__Chart__Group__7 ;
+    public final void rule__Chart__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4604:1: ( rule__Chart__Group__6__Impl rule__Chart__Group__7 )
+            // InternalChartDSL.g:4605:2: rule__Chart__Group__6__Impl rule__Chart__Group__7
+            {
+            pushFollow(FOLLOW_15);
+            rule__Chart__Group__6__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Chart__Group__7();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group__6"
+
+
+    // $ANTLR start "rule__Chart__Group__6__Impl"
+    // InternalChartDSL.g:4612:1: rule__Chart__Group__6__Impl : ( ( rule__Chart__UnorderedGroup_6 ) ) ;
+    public final void rule__Chart__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4616:1: ( ( ( rule__Chart__UnorderedGroup_6 ) ) )
+            // InternalChartDSL.g:4617:1: ( ( rule__Chart__UnorderedGroup_6 ) )
+            {
+            // InternalChartDSL.g:4617:1: ( ( rule__Chart__UnorderedGroup_6 ) )
+            // InternalChartDSL.g:4618:2: ( rule__Chart__UnorderedGroup_6 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getUnorderedGroup_6()); 
+            }
+            // InternalChartDSL.g:4619:2: ( rule__Chart__UnorderedGroup_6 )
+            // InternalChartDSL.g:4619:3: rule__Chart__UnorderedGroup_6
+            {
+            pushFollow(FOLLOW_2);
+            rule__Chart__UnorderedGroup_6();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getUnorderedGroup_6()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group__6__Impl"
+
+
+    // $ANTLR start "rule__Chart__Group__7"
+    // InternalChartDSL.g:4627:1: rule__Chart__Group__7 : rule__Chart__Group__7__Impl ;
+    public final void rule__Chart__Group__7() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4631:1: ( rule__Chart__Group__7__Impl )
+            // InternalChartDSL.g:4632:2: rule__Chart__Group__7__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__Chart__Group__7__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group__7"
+
+
+    // $ANTLR start "rule__Chart__Group__7__Impl"
+    // InternalChartDSL.g:4638:1: rule__Chart__Group__7__Impl : ( ( rule__Chart__Group_7__0 )? ) ;
+    public final void rule__Chart__Group__7__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4642:1: ( ( ( rule__Chart__Group_7__0 )? ) )
+            // InternalChartDSL.g:4643:1: ( ( rule__Chart__Group_7__0 )? )
+            {
+            // InternalChartDSL.g:4643:1: ( ( rule__Chart__Group_7__0 )? )
+            // InternalChartDSL.g:4644:2: ( rule__Chart__Group_7__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getGroup_7()); 
+            }
+            // InternalChartDSL.g:4645:2: ( rule__Chart__Group_7__0 )?
+            int alt60=2;
+            int LA60_0 = input.LA(1);
+
+            if ( (LA60_0==76) ) {
+                alt60=1;
+            }
+            switch (alt60) {
+                case 1 :
+                    // InternalChartDSL.g:4645:3: rule__Chart__Group_7__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Chart__Group_7__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getGroup_7()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group__7__Impl"
+
+
+    // $ANTLR start "rule__Chart__Group_3__0"
+    // InternalChartDSL.g:4654:1: rule__Chart__Group_3__0 : rule__Chart__Group_3__0__Impl rule__Chart__Group_3__1 ;
+    public final void rule__Chart__Group_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4658:1: ( rule__Chart__Group_3__0__Impl rule__Chart__Group_3__1 )
+            // InternalChartDSL.g:4659:2: rule__Chart__Group_3__0__Impl rule__Chart__Group_3__1
+            {
+            pushFollow(FOLLOW_16);
+            rule__Chart__Group_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Chart__Group_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group_3__0"
+
+
+    // $ANTLR start "rule__Chart__Group_3__0__Impl"
+    // InternalChartDSL.g:4666:1: rule__Chart__Group_3__0__Impl : ( ( rule__Chart__DescriptionAssignment_3_0 ) ) ;
+    public final void rule__Chart__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4670:1: ( ( ( rule__Chart__DescriptionAssignment_3_0 ) ) )
+            // InternalChartDSL.g:4671:1: ( ( rule__Chart__DescriptionAssignment_3_0 ) )
+            {
+            // InternalChartDSL.g:4671:1: ( ( rule__Chart__DescriptionAssignment_3_0 ) )
+            // InternalChartDSL.g:4672:2: ( rule__Chart__DescriptionAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getDescriptionAssignment_3_0()); 
+            }
+            // InternalChartDSL.g:4673:2: ( rule__Chart__DescriptionAssignment_3_0 )
+            // InternalChartDSL.g:4673:3: rule__Chart__DescriptionAssignment_3_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__Chart__DescriptionAssignment_3_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getDescriptionAssignment_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group_3__0__Impl"
+
+
+    // $ANTLR start "rule__Chart__Group_3__1"
+    // InternalChartDSL.g:4681:1: rule__Chart__Group_3__1 : rule__Chart__Group_3__1__Impl ;
+    public final void rule__Chart__Group_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4685:1: ( rule__Chart__Group_3__1__Impl )
+            // InternalChartDSL.g:4686:2: rule__Chart__Group_3__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__Chart__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__Chart__Group_3__1"
+
+
+    // $ANTLR start "rule__Chart__Group_3__1__Impl"
+    // InternalChartDSL.g:4692:1: rule__Chart__Group_3__1__Impl : ( ( rule__Chart__DescriptionValueAssignment_3_1 ) ) ;
+    public final void rule__Chart__Group_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4696:1: ( ( ( rule__Chart__DescriptionValueAssignment_3_1 ) ) )
+            // InternalChartDSL.g:4697:1: ( ( rule__Chart__DescriptionValueAssignment_3_1 ) )
+            {
+            // InternalChartDSL.g:4697:1: ( ( rule__Chart__DescriptionValueAssignment_3_1 ) )
+            // InternalChartDSL.g:4698:2: ( rule__Chart__DescriptionValueAssignment_3_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getDescriptionValueAssignment_3_1()); 
+            }
+            // InternalChartDSL.g:4699:2: ( rule__Chart__DescriptionValueAssignment_3_1 )
+            // InternalChartDSL.g:4699:3: rule__Chart__DescriptionValueAssignment_3_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__Chart__DescriptionValueAssignment_3_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getDescriptionValueAssignment_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group_3__1__Impl"
+
+
+    // $ANTLR start "rule__Chart__Group_6_0__0"
+    // InternalChartDSL.g:4708:1: rule__Chart__Group_6_0__0 : rule__Chart__Group_6_0__0__Impl rule__Chart__Group_6_0__1 ;
+    public final void rule__Chart__Group_6_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4712:1: ( rule__Chart__Group_6_0__0__Impl rule__Chart__Group_6_0__1 )
+            // InternalChartDSL.g:4713:2: rule__Chart__Group_6_0__0__Impl rule__Chart__Group_6_0__1
+            {
+            pushFollow(FOLLOW_17);
+            rule__Chart__Group_6_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Chart__Group_6_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group_6_0__0"
+
+
+    // $ANTLR start "rule__Chart__Group_6_0__0__Impl"
+    // InternalChartDSL.g:4720:1: rule__Chart__Group_6_0__0__Impl : ( ( rule__Chart__PollingAssignment_6_0_0 ) ) ;
+    public final void rule__Chart__Group_6_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4724:1: ( ( ( rule__Chart__PollingAssignment_6_0_0 ) ) )
+            // InternalChartDSL.g:4725:1: ( ( rule__Chart__PollingAssignment_6_0_0 ) )
+            {
+            // InternalChartDSL.g:4725:1: ( ( rule__Chart__PollingAssignment_6_0_0 ) )
+            // InternalChartDSL.g:4726:2: ( rule__Chart__PollingAssignment_6_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getPollingAssignment_6_0_0()); 
+            }
+            // InternalChartDSL.g:4727:2: ( rule__Chart__PollingAssignment_6_0_0 )
+            // InternalChartDSL.g:4727:3: rule__Chart__PollingAssignment_6_0_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__Chart__PollingAssignment_6_0_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getPollingAssignment_6_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group_6_0__0__Impl"
+
+
+    // $ANTLR start "rule__Chart__Group_6_0__1"
+    // InternalChartDSL.g:4735:1: rule__Chart__Group_6_0__1 : rule__Chart__Group_6_0__1__Impl ;
+    public final void rule__Chart__Group_6_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4739:1: ( rule__Chart__Group_6_0__1__Impl )
+            // InternalChartDSL.g:4740:2: rule__Chart__Group_6_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__Chart__Group_6_0__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group_6_0__1"
+
+
+    // $ANTLR start "rule__Chart__Group_6_0__1__Impl"
+    // InternalChartDSL.g:4746:1: rule__Chart__Group_6_0__1__Impl : ( ( rule__Chart__PollingTimeAssignment_6_0_1 ) ) ;
+    public final void rule__Chart__Group_6_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4750:1: ( ( ( rule__Chart__PollingTimeAssignment_6_0_1 ) ) )
+            // InternalChartDSL.g:4751:1: ( ( rule__Chart__PollingTimeAssignment_6_0_1 ) )
+            {
+            // InternalChartDSL.g:4751:1: ( ( rule__Chart__PollingTimeAssignment_6_0_1 ) )
+            // InternalChartDSL.g:4752:2: ( rule__Chart__PollingTimeAssignment_6_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getPollingTimeAssignment_6_0_1()); 
+            }
+            // InternalChartDSL.g:4753:2: ( rule__Chart__PollingTimeAssignment_6_0_1 )
+            // InternalChartDSL.g:4753:3: rule__Chart__PollingTimeAssignment_6_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__Chart__PollingTimeAssignment_6_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getPollingTimeAssignment_6_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group_6_0__1__Impl"
+
+
+    // $ANTLR start "rule__Chart__Group_7__0"
+    // InternalChartDSL.g:4762:1: rule__Chart__Group_7__0 : rule__Chart__Group_7__0__Impl rule__Chart__Group_7__1 ;
+    public final void rule__Chart__Group_7__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4766:1: ( rule__Chart__Group_7__0__Impl rule__Chart__Group_7__1 )
+            // InternalChartDSL.g:4767:2: rule__Chart__Group_7__0__Impl rule__Chart__Group_7__1
+            {
+            pushFollow(FOLLOW_18);
+            rule__Chart__Group_7__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__Chart__Group_7__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group_7__0"
+
+
+    // $ANTLR start "rule__Chart__Group_7__0__Impl"
+    // InternalChartDSL.g:4774:1: rule__Chart__Group_7__0__Impl : ( 'using' ) ;
+    public final void rule__Chart__Group_7__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4778:1: ( ( 'using' ) )
+            // InternalChartDSL.g:4779:1: ( 'using' )
+            {
+            // InternalChartDSL.g:4779:1: ( 'using' )
+            // InternalChartDSL.g:4780:2: 'using'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getUsingKeyword_7_0()); 
+            }
+            match(input,76,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getUsingKeyword_7_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group_7__0__Impl"
+
+
+    // $ANTLR start "rule__Chart__Group_7__1"
+    // InternalChartDSL.g:4789:1: rule__Chart__Group_7__1 : rule__Chart__Group_7__1__Impl ;
+    public final void rule__Chart__Group_7__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4793:1: ( rule__Chart__Group_7__1__Impl )
+            // InternalChartDSL.g:4794:2: rule__Chart__Group_7__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__Chart__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__Chart__Group_7__1"
+
+
+    // $ANTLR start "rule__Chart__Group_7__1__Impl"
+    // InternalChartDSL.g:4800:1: rule__Chart__Group_7__1__Impl : ( ( rule__Chart__SourceAssignment_7_1 ) ) ;
+    public final void rule__Chart__Group_7__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4804:1: ( ( ( rule__Chart__SourceAssignment_7_1 ) ) )
+            // InternalChartDSL.g:4805:1: ( ( rule__Chart__SourceAssignment_7_1 ) )
+            {
+            // InternalChartDSL.g:4805:1: ( ( rule__Chart__SourceAssignment_7_1 ) )
+            // InternalChartDSL.g:4806:2: ( rule__Chart__SourceAssignment_7_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getSourceAssignment_7_1()); 
+            }
+            // InternalChartDSL.g:4807:2: ( rule__Chart__SourceAssignment_7_1 )
+            // InternalChartDSL.g:4807:3: rule__Chart__SourceAssignment_7_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__Chart__SourceAssignment_7_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getSourceAssignment_7_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__Group_7__1__Impl"
+
+
+    // $ANTLR start "rule__ChartBar__Group__0"
+    // InternalChartDSL.g:4816:1: rule__ChartBar__Group__0 : rule__ChartBar__Group__0__Impl rule__ChartBar__Group__1 ;
+    public final void rule__ChartBar__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4820:1: ( rule__ChartBar__Group__0__Impl rule__ChartBar__Group__1 )
+            // InternalChartDSL.g:4821:2: rule__ChartBar__Group__0__Impl rule__ChartBar__Group__1
+            {
+            pushFollow(FOLLOW_19);
+            rule__ChartBar__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartBar__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBar__Group__0"
+
+
+    // $ANTLR start "rule__ChartBar__Group__0__Impl"
+    // InternalChartDSL.g:4828:1: rule__ChartBar__Group__0__Impl : ( () ) ;
+    public final void rule__ChartBar__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4832:1: ( ( () ) )
+            // InternalChartDSL.g:4833:1: ( () )
+            {
+            // InternalChartDSL.g:4833:1: ( () )
+            // InternalChartDSL.g:4834:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBarAccess().getChartBarAction_0()); 
+            }
+            // InternalChartDSL.g:4835:2: ()
+            // InternalChartDSL.g:4835:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBarAccess().getChartBarAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBar__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ChartBar__Group__1"
+    // InternalChartDSL.g:4843:1: rule__ChartBar__Group__1 : rule__ChartBar__Group__1__Impl rule__ChartBar__Group__2 ;
+    public final void rule__ChartBar__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4847:1: ( rule__ChartBar__Group__1__Impl rule__ChartBar__Group__2 )
+            // InternalChartDSL.g:4848:2: rule__ChartBar__Group__1__Impl rule__ChartBar__Group__2
+            {
+            pushFollow(FOLLOW_20);
+            rule__ChartBar__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartBar__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBar__Group__1"
+
+
+    // $ANTLR start "rule__ChartBar__Group__1__Impl"
+    // InternalChartDSL.g:4855:1: rule__ChartBar__Group__1__Impl : ( 'bar' ) ;
+    public final void rule__ChartBar__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4859:1: ( ( 'bar' ) )
+            // InternalChartDSL.g:4860:1: ( 'bar' )
+            {
+            // InternalChartDSL.g:4860:1: ( 'bar' )
+            // InternalChartDSL.g:4861:2: 'bar'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBarAccess().getBarKeyword_1()); 
+            }
+            match(input,77,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBarAccess().getBarKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBar__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ChartBar__Group__2"
+    // InternalChartDSL.g:4870:1: rule__ChartBar__Group__2 : rule__ChartBar__Group__2__Impl ;
+    public final void rule__ChartBar__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4874:1: ( rule__ChartBar__Group__2__Impl )
+            // InternalChartDSL.g:4875:2: rule__ChartBar__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartBar__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBar__Group__2"
+
+
+    // $ANTLR start "rule__ChartBar__Group__2__Impl"
+    // InternalChartDSL.g:4881:1: rule__ChartBar__Group__2__Impl : ( ( rule__ChartBar__UnorderedGroup_2 ) ) ;
+    public final void rule__ChartBar__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4885:1: ( ( ( rule__ChartBar__UnorderedGroup_2 ) ) )
+            // InternalChartDSL.g:4886:1: ( ( rule__ChartBar__UnorderedGroup_2 ) )
+            {
+            // InternalChartDSL.g:4886:1: ( ( rule__ChartBar__UnorderedGroup_2 ) )
+            // InternalChartDSL.g:4887:2: ( rule__ChartBar__UnorderedGroup_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBarAccess().getUnorderedGroup_2()); 
+            }
+            // InternalChartDSL.g:4888:2: ( rule__ChartBar__UnorderedGroup_2 )
+            // InternalChartDSL.g:4888:3: rule__ChartBar__UnorderedGroup_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartBar__UnorderedGroup_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBarAccess().getUnorderedGroup_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBar__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ChartLine__Group__0"
+    // InternalChartDSL.g:4897:1: rule__ChartLine__Group__0 : rule__ChartLine__Group__0__Impl rule__ChartLine__Group__1 ;
+    public final void rule__ChartLine__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4901:1: ( rule__ChartLine__Group__0__Impl rule__ChartLine__Group__1 )
+            // InternalChartDSL.g:4902:2: rule__ChartLine__Group__0__Impl rule__ChartLine__Group__1
+            {
+            pushFollow(FOLLOW_21);
+            rule__ChartLine__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartLine__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__Group__0"
+
+
+    // $ANTLR start "rule__ChartLine__Group__0__Impl"
+    // InternalChartDSL.g:4909:1: rule__ChartLine__Group__0__Impl : ( () ) ;
+    public final void rule__ChartLine__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4913:1: ( ( () ) )
+            // InternalChartDSL.g:4914:1: ( () )
+            {
+            // InternalChartDSL.g:4914:1: ( () )
+            // InternalChartDSL.g:4915:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getChartLineAction_0()); 
+            }
+            // InternalChartDSL.g:4916:2: ()
+            // InternalChartDSL.g:4916:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getChartLineAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ChartLine__Group__1"
+    // InternalChartDSL.g:4924:1: rule__ChartLine__Group__1 : rule__ChartLine__Group__1__Impl rule__ChartLine__Group__2 ;
+    public final void rule__ChartLine__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4928:1: ( rule__ChartLine__Group__1__Impl rule__ChartLine__Group__2 )
+            // InternalChartDSL.g:4929:2: rule__ChartLine__Group__1__Impl rule__ChartLine__Group__2
+            {
+            pushFollow(FOLLOW_22);
+            rule__ChartLine__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartLine__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__Group__1"
+
+
+    // $ANTLR start "rule__ChartLine__Group__1__Impl"
+    // InternalChartDSL.g:4936:1: rule__ChartLine__Group__1__Impl : ( 'line' ) ;
+    public final void rule__ChartLine__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4940:1: ( ( 'line' ) )
+            // InternalChartDSL.g:4941:1: ( 'line' )
+            {
+            // InternalChartDSL.g:4941:1: ( 'line' )
+            // InternalChartDSL.g:4942:2: 'line'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getLineKeyword_1()); 
+            }
+            match(input,78,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getLineKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ChartLine__Group__2"
+    // InternalChartDSL.g:4951:1: rule__ChartLine__Group__2 : rule__ChartLine__Group__2__Impl ;
+    public final void rule__ChartLine__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4955:1: ( rule__ChartLine__Group__2__Impl )
+            // InternalChartDSL.g:4956:2: rule__ChartLine__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartLine__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__Group__2"
+
+
+    // $ANTLR start "rule__ChartLine__Group__2__Impl"
+    // InternalChartDSL.g:4962:1: rule__ChartLine__Group__2__Impl : ( ( rule__ChartLine__UnorderedGroup_2 ) ) ;
+    public final void rule__ChartLine__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4966:1: ( ( ( rule__ChartLine__UnorderedGroup_2 ) ) )
+            // InternalChartDSL.g:4967:1: ( ( rule__ChartLine__UnorderedGroup_2 ) )
+            {
+            // InternalChartDSL.g:4967:1: ( ( rule__ChartLine__UnorderedGroup_2 ) )
+            // InternalChartDSL.g:4968:2: ( rule__ChartLine__UnorderedGroup_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getUnorderedGroup_2()); 
+            }
+            // InternalChartDSL.g:4969:2: ( rule__ChartLine__UnorderedGroup_2 )
+            // InternalChartDSL.g:4969:3: rule__ChartLine__UnorderedGroup_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartLine__UnorderedGroup_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getUnorderedGroup_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ChartLine__Group_2_3__0"
+    // InternalChartDSL.g:4978:1: rule__ChartLine__Group_2_3__0 : rule__ChartLine__Group_2_3__0__Impl rule__ChartLine__Group_2_3__1 ;
+    public final void rule__ChartLine__Group_2_3__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4982:1: ( rule__ChartLine__Group_2_3__0__Impl rule__ChartLine__Group_2_3__1 )
+            // InternalChartDSL.g:4983:2: rule__ChartLine__Group_2_3__0__Impl rule__ChartLine__Group_2_3__1
+            {
+            pushFollow(FOLLOW_23);
+            rule__ChartLine__Group_2_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartLine__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__ChartLine__Group_2_3__0"
+
+
+    // $ANTLR start "rule__ChartLine__Group_2_3__0__Impl"
+    // InternalChartDSL.g:4990:1: rule__ChartLine__Group_2_3__0__Impl : ( ( rule__ChartLine__CursorAssignment_2_3_0 ) ) ;
+    public final void rule__ChartLine__Group_2_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:4994:1: ( ( ( rule__ChartLine__CursorAssignment_2_3_0 ) ) )
+            // InternalChartDSL.g:4995:1: ( ( rule__ChartLine__CursorAssignment_2_3_0 ) )
+            {
+            // InternalChartDSL.g:4995:1: ( ( rule__ChartLine__CursorAssignment_2_3_0 ) )
+            // InternalChartDSL.g:4996:2: ( rule__ChartLine__CursorAssignment_2_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getCursorAssignment_2_3_0()); 
+            }
+            // InternalChartDSL.g:4997:2: ( rule__ChartLine__CursorAssignment_2_3_0 )
+            // InternalChartDSL.g:4997:3: rule__ChartLine__CursorAssignment_2_3_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartLine__CursorAssignment_2_3_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getCursorAssignment_2_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__Group_2_3__0__Impl"
+
+
+    // $ANTLR start "rule__ChartLine__Group_2_3__1"
+    // InternalChartDSL.g:5005:1: rule__ChartLine__Group_2_3__1 : rule__ChartLine__Group_2_3__1__Impl rule__ChartLine__Group_2_3__2 ;
+    public final void rule__ChartLine__Group_2_3__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5009:1: ( rule__ChartLine__Group_2_3__1__Impl rule__ChartLine__Group_2_3__2 )
+            // InternalChartDSL.g:5010:2: rule__ChartLine__Group_2_3__1__Impl rule__ChartLine__Group_2_3__2
+            {
+            pushFollow(FOLLOW_23);
+            rule__ChartLine__Group_2_3__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartLine__Group_2_3__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__Group_2_3__1"
+
+
+    // $ANTLR start "rule__ChartLine__Group_2_3__1__Impl"
+    // InternalChartDSL.g:5017:1: rule__ChartLine__Group_2_3__1__Impl : ( ( rule__ChartLine__ZoomAssignment_2_3_1 )? ) ;
+    public final void rule__ChartLine__Group_2_3__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5021:1: ( ( ( rule__ChartLine__ZoomAssignment_2_3_1 )? ) )
+            // InternalChartDSL.g:5022:1: ( ( rule__ChartLine__ZoomAssignment_2_3_1 )? )
+            {
+            // InternalChartDSL.g:5022:1: ( ( rule__ChartLine__ZoomAssignment_2_3_1 )? )
+            // InternalChartDSL.g:5023:2: ( rule__ChartLine__ZoomAssignment_2_3_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getZoomAssignment_2_3_1()); 
+            }
+            // InternalChartDSL.g:5024:2: ( rule__ChartLine__ZoomAssignment_2_3_1 )?
+            int alt61=2;
+            int LA61_0 = input.LA(1);
+
+            if ( (LA61_0==133) ) {
+                alt61=1;
+            }
+            switch (alt61) {
+                case 1 :
+                    // InternalChartDSL.g:5024:3: rule__ChartLine__ZoomAssignment_2_3_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartLine__ZoomAssignment_2_3_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getZoomAssignment_2_3_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__Group_2_3__1__Impl"
+
+
+    // $ANTLR start "rule__ChartLine__Group_2_3__2"
+    // InternalChartDSL.g:5032:1: rule__ChartLine__Group_2_3__2 : rule__ChartLine__Group_2_3__2__Impl ;
+    public final void rule__ChartLine__Group_2_3__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5036:1: ( rule__ChartLine__Group_2_3__2__Impl )
+            // InternalChartDSL.g:5037:2: rule__ChartLine__Group_2_3__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartLine__Group_2_3__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__Group_2_3__2"
+
+
+    // $ANTLR start "rule__ChartLine__Group_2_3__2__Impl"
+    // InternalChartDSL.g:5043:1: rule__ChartLine__Group_2_3__2__Impl : ( ( rule__ChartLine__TooltipAssignment_2_3_2 )? ) ;
+    public final void rule__ChartLine__Group_2_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5047:1: ( ( ( rule__ChartLine__TooltipAssignment_2_3_2 )? ) )
+            // InternalChartDSL.g:5048:1: ( ( rule__ChartLine__TooltipAssignment_2_3_2 )? )
+            {
+            // InternalChartDSL.g:5048:1: ( ( rule__ChartLine__TooltipAssignment_2_3_2 )? )
+            // InternalChartDSL.g:5049:2: ( rule__ChartLine__TooltipAssignment_2_3_2 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getTooltipAssignment_2_3_2()); 
+            }
+            // InternalChartDSL.g:5050:2: ( rule__ChartLine__TooltipAssignment_2_3_2 )?
+            int alt62=2;
+            int LA62_0 = input.LA(1);
+
+            if ( (LA62_0==89) ) {
+                alt62=1;
+            }
+            switch (alt62) {
+                case 1 :
+                    // InternalChartDSL.g:5050:3: rule__ChartLine__TooltipAssignment_2_3_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartLine__TooltipAssignment_2_3_2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getTooltipAssignment_2_3_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__Group_2_3__2__Impl"
+
+
+    // $ANTLR start "rule__ChartPie__Group__0"
+    // InternalChartDSL.g:5059:1: rule__ChartPie__Group__0 : rule__ChartPie__Group__0__Impl rule__ChartPie__Group__1 ;
+    public final void rule__ChartPie__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5063:1: ( rule__ChartPie__Group__0__Impl rule__ChartPie__Group__1 )
+            // InternalChartDSL.g:5064:2: rule__ChartPie__Group__0__Impl rule__ChartPie__Group__1
+            {
+            pushFollow(FOLLOW_24);
+            rule__ChartPie__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartPie__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPie__Group__0"
+
+
+    // $ANTLR start "rule__ChartPie__Group__0__Impl"
+    // InternalChartDSL.g:5071:1: rule__ChartPie__Group__0__Impl : ( () ) ;
+    public final void rule__ChartPie__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5075:1: ( ( () ) )
+            // InternalChartDSL.g:5076:1: ( () )
+            {
+            // InternalChartDSL.g:5076:1: ( () )
+            // InternalChartDSL.g:5077:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPieAccess().getChartPieAction_0()); 
+            }
+            // InternalChartDSL.g:5078:2: ()
+            // InternalChartDSL.g:5078:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPieAccess().getChartPieAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPie__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ChartPie__Group__1"
+    // InternalChartDSL.g:5086:1: rule__ChartPie__Group__1 : rule__ChartPie__Group__1__Impl rule__ChartPie__Group__2 ;
+    public final void rule__ChartPie__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5090:1: ( rule__ChartPie__Group__1__Impl rule__ChartPie__Group__2 )
+            // InternalChartDSL.g:5091:2: rule__ChartPie__Group__1__Impl rule__ChartPie__Group__2
+            {
+            pushFollow(FOLLOW_25);
+            rule__ChartPie__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartPie__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPie__Group__1"
+
+
+    // $ANTLR start "rule__ChartPie__Group__1__Impl"
+    // InternalChartDSL.g:5098:1: rule__ChartPie__Group__1__Impl : ( 'pie' ) ;
+    public final void rule__ChartPie__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5102:1: ( ( 'pie' ) )
+            // InternalChartDSL.g:5103:1: ( 'pie' )
+            {
+            // InternalChartDSL.g:5103:1: ( 'pie' )
+            // InternalChartDSL.g:5104:2: 'pie'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPieAccess().getPieKeyword_1()); 
+            }
+            match(input,79,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPieAccess().getPieKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPie__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ChartPie__Group__2"
+    // InternalChartDSL.g:5113:1: rule__ChartPie__Group__2 : rule__ChartPie__Group__2__Impl ;
+    public final void rule__ChartPie__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5117:1: ( rule__ChartPie__Group__2__Impl )
+            // InternalChartDSL.g:5118:2: rule__ChartPie__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartPie__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPie__Group__2"
+
+
+    // $ANTLR start "rule__ChartPie__Group__2__Impl"
+    // InternalChartDSL.g:5124:1: rule__ChartPie__Group__2__Impl : ( ( rule__ChartPie__EmptyAssignment_2 )? ) ;
+    public final void rule__ChartPie__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5128:1: ( ( ( rule__ChartPie__EmptyAssignment_2 )? ) )
+            // InternalChartDSL.g:5129:1: ( ( rule__ChartPie__EmptyAssignment_2 )? )
+            {
+            // InternalChartDSL.g:5129:1: ( ( rule__ChartPie__EmptyAssignment_2 )? )
+            // InternalChartDSL.g:5130:2: ( rule__ChartPie__EmptyAssignment_2 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPieAccess().getEmptyAssignment_2()); 
+            }
+            // InternalChartDSL.g:5131:2: ( rule__ChartPie__EmptyAssignment_2 )?
+            int alt63=2;
+            int LA63_0 = input.LA(1);
+
+            if ( (LA63_0==136) ) {
+                alt63=1;
+            }
+            switch (alt63) {
+                case 1 :
+                    // InternalChartDSL.g:5131:3: rule__ChartPie__EmptyAssignment_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartPie__EmptyAssignment_2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPieAccess().getEmptyAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPie__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ChartDonut__Group__0"
+    // InternalChartDSL.g:5140:1: rule__ChartDonut__Group__0 : rule__ChartDonut__Group__0__Impl rule__ChartDonut__Group__1 ;
+    public final void rule__ChartDonut__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5144:1: ( rule__ChartDonut__Group__0__Impl rule__ChartDonut__Group__1 )
+            // InternalChartDSL.g:5145:2: rule__ChartDonut__Group__0__Impl rule__ChartDonut__Group__1
+            {
+            pushFollow(FOLLOW_26);
+            rule__ChartDonut__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartDonut__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartDonut__Group__0"
+
+
+    // $ANTLR start "rule__ChartDonut__Group__0__Impl"
+    // InternalChartDSL.g:5152:1: rule__ChartDonut__Group__0__Impl : ( () ) ;
+    public final void rule__ChartDonut__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5156:1: ( ( () ) )
+            // InternalChartDSL.g:5157:1: ( () )
+            {
+            // InternalChartDSL.g:5157:1: ( () )
+            // InternalChartDSL.g:5158:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartDonutAccess().getChartDonutAction_0()); 
+            }
+            // InternalChartDSL.g:5159:2: ()
+            // InternalChartDSL.g:5159:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartDonutAccess().getChartDonutAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartDonut__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ChartDonut__Group__1"
+    // InternalChartDSL.g:5167:1: rule__ChartDonut__Group__1 : rule__ChartDonut__Group__1__Impl ;
+    public final void rule__ChartDonut__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5171:1: ( rule__ChartDonut__Group__1__Impl )
+            // InternalChartDSL.g:5172:2: rule__ChartDonut__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartDonut__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartDonut__Group__1"
+
+
+    // $ANTLR start "rule__ChartDonut__Group__1__Impl"
+    // InternalChartDSL.g:5178:1: rule__ChartDonut__Group__1__Impl : ( 'donut' ) ;
+    public final void rule__ChartDonut__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5182:1: ( ( 'donut' ) )
+            // InternalChartDSL.g:5183:1: ( 'donut' )
+            {
+            // InternalChartDSL.g:5183:1: ( 'donut' )
+            // InternalChartDSL.g:5184:2: 'donut'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartDonutAccess().getDonutKeyword_1()); 
+            }
+            match(input,80,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartDonutAccess().getDonutKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartDonut__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ChartBubble__Group__0"
+    // InternalChartDSL.g:5194:1: rule__ChartBubble__Group__0 : rule__ChartBubble__Group__0__Impl rule__ChartBubble__Group__1 ;
+    public final void rule__ChartBubble__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5198:1: ( rule__ChartBubble__Group__0__Impl rule__ChartBubble__Group__1 )
+            // InternalChartDSL.g:5199:2: rule__ChartBubble__Group__0__Impl rule__ChartBubble__Group__1
+            {
+            pushFollow(FOLLOW_27);
+            rule__ChartBubble__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartBubble__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBubble__Group__0"
+
+
+    // $ANTLR start "rule__ChartBubble__Group__0__Impl"
+    // InternalChartDSL.g:5206:1: rule__ChartBubble__Group__0__Impl : ( () ) ;
+    public final void rule__ChartBubble__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5210:1: ( ( () ) )
+            // InternalChartDSL.g:5211:1: ( () )
+            {
+            // InternalChartDSL.g:5211:1: ( () )
+            // InternalChartDSL.g:5212:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBubbleAccess().getChartBubbleAction_0()); 
+            }
+            // InternalChartDSL.g:5213:2: ()
+            // InternalChartDSL.g:5213:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBubbleAccess().getChartBubbleAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBubble__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ChartBubble__Group__1"
+    // InternalChartDSL.g:5221:1: rule__ChartBubble__Group__1 : rule__ChartBubble__Group__1__Impl rule__ChartBubble__Group__2 ;
+    public final void rule__ChartBubble__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5225:1: ( rule__ChartBubble__Group__1__Impl rule__ChartBubble__Group__2 )
+            // InternalChartDSL.g:5226:2: rule__ChartBubble__Group__1__Impl rule__ChartBubble__Group__2
+            {
+            pushFollow(FOLLOW_28);
+            rule__ChartBubble__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartBubble__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBubble__Group__1"
+
+
+    // $ANTLR start "rule__ChartBubble__Group__1__Impl"
+    // InternalChartDSL.g:5233:1: rule__ChartBubble__Group__1__Impl : ( 'bubble' ) ;
+    public final void rule__ChartBubble__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5237:1: ( ( 'bubble' ) )
+            // InternalChartDSL.g:5238:1: ( 'bubble' )
+            {
+            // InternalChartDSL.g:5238:1: ( 'bubble' )
+            // InternalChartDSL.g:5239:2: 'bubble'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBubbleAccess().getBubbleKeyword_1()); 
+            }
+            match(input,81,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBubbleAccess().getBubbleKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBubble__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ChartBubble__Group__2"
+    // InternalChartDSL.g:5248:1: rule__ChartBubble__Group__2 : rule__ChartBubble__Group__2__Impl ;
+    public final void rule__ChartBubble__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5252:1: ( rule__ChartBubble__Group__2__Impl )
+            // InternalChartDSL.g:5253:2: rule__ChartBubble__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartBubble__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBubble__Group__2"
+
+
+    // $ANTLR start "rule__ChartBubble__Group__2__Impl"
+    // InternalChartDSL.g:5259:1: rule__ChartBubble__Group__2__Impl : ( ( rule__ChartBubble__UnorderedGroup_2 )? ) ;
+    public final void rule__ChartBubble__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5263:1: ( ( ( rule__ChartBubble__UnorderedGroup_2 )? ) )
+            // InternalChartDSL.g:5264:1: ( ( rule__ChartBubble__UnorderedGroup_2 )? )
+            {
+            // InternalChartDSL.g:5264:1: ( ( rule__ChartBubble__UnorderedGroup_2 )? )
+            // InternalChartDSL.g:5265:2: ( rule__ChartBubble__UnorderedGroup_2 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2()); 
+            }
+            // InternalChartDSL.g:5266:2: ( rule__ChartBubble__UnorderedGroup_2 )?
+            int alt64=2;
+            int LA64_0 = input.LA(1);
+
+            if ( LA64_0 == 137 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0) ) {
+                alt64=1;
+            }
+            else if ( LA64_0 == 138 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1) ) {
+                alt64=1;
+            }
+            else if ( LA64_0 == 139 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1) ) {
+                alt64=1;
+            }
+            switch (alt64) {
+                case 1 :
+                    // InternalChartDSL.g:5266:3: rule__ChartBubble__UnorderedGroup_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartBubble__UnorderedGroup_2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBubble__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ChartBubble__Group_2_0__0"
+    // InternalChartDSL.g:5275:1: rule__ChartBubble__Group_2_0__0 : rule__ChartBubble__Group_2_0__0__Impl rule__ChartBubble__Group_2_0__1 ;
+    public final void rule__ChartBubble__Group_2_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5279:1: ( rule__ChartBubble__Group_2_0__0__Impl rule__ChartBubble__Group_2_0__1 )
+            // InternalChartDSL.g:5280:2: rule__ChartBubble__Group_2_0__0__Impl rule__ChartBubble__Group_2_0__1
+            {
+            pushFollow(FOLLOW_29);
+            rule__ChartBubble__Group_2_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartBubble__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__ChartBubble__Group_2_0__0"
+
+
+    // $ANTLR start "rule__ChartBubble__Group_2_0__0__Impl"
+    // InternalChartDSL.g:5287:1: rule__ChartBubble__Group_2_0__0__Impl : ( ( rule__ChartBubble__MultiplierAssignment_2_0_0 ) ) ;
+    public final void rule__ChartBubble__Group_2_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5291:1: ( ( ( rule__ChartBubble__MultiplierAssignment_2_0_0 ) ) )
+            // InternalChartDSL.g:5292:1: ( ( rule__ChartBubble__MultiplierAssignment_2_0_0 ) )
+            {
+            // InternalChartDSL.g:5292:1: ( ( rule__ChartBubble__MultiplierAssignment_2_0_0 ) )
+            // InternalChartDSL.g:5293:2: ( rule__ChartBubble__MultiplierAssignment_2_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBubbleAccess().getMultiplierAssignment_2_0_0()); 
+            }
+            // InternalChartDSL.g:5294:2: ( rule__ChartBubble__MultiplierAssignment_2_0_0 )
+            // InternalChartDSL.g:5294:3: rule__ChartBubble__MultiplierAssignment_2_0_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartBubble__MultiplierAssignment_2_0_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBubbleAccess().getMultiplierAssignment_2_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBubble__Group_2_0__0__Impl"
+
+
+    // $ANTLR start "rule__ChartBubble__Group_2_0__1"
+    // InternalChartDSL.g:5302:1: rule__ChartBubble__Group_2_0__1 : rule__ChartBubble__Group_2_0__1__Impl ;
+    public final void rule__ChartBubble__Group_2_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5306:1: ( rule__ChartBubble__Group_2_0__1__Impl )
+            // InternalChartDSL.g:5307:2: rule__ChartBubble__Group_2_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartBubble__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__ChartBubble__Group_2_0__1"
+
+
+    // $ANTLR start "rule__ChartBubble__Group_2_0__1__Impl"
+    // InternalChartDSL.g:5313:1: rule__ChartBubble__Group_2_0__1__Impl : ( ( rule__ChartBubble__MultiplierValueAssignment_2_0_1 ) ) ;
+    public final void rule__ChartBubble__Group_2_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5317:1: ( ( ( rule__ChartBubble__MultiplierValueAssignment_2_0_1 ) ) )
+            // InternalChartDSL.g:5318:1: ( ( rule__ChartBubble__MultiplierValueAssignment_2_0_1 ) )
+            {
+            // InternalChartDSL.g:5318:1: ( ( rule__ChartBubble__MultiplierValueAssignment_2_0_1 ) )
+            // InternalChartDSL.g:5319:2: ( rule__ChartBubble__MultiplierValueAssignment_2_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBubbleAccess().getMultiplierValueAssignment_2_0_1()); 
+            }
+            // InternalChartDSL.g:5320:2: ( rule__ChartBubble__MultiplierValueAssignment_2_0_1 )
+            // InternalChartDSL.g:5320:3: rule__ChartBubble__MultiplierValueAssignment_2_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartBubble__MultiplierValueAssignment_2_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBubbleAccess().getMultiplierValueAssignment_2_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBubble__Group_2_0__1__Impl"
+
+
+    // $ANTLR start "rule__ChartGauge__Group__0"
+    // InternalChartDSL.g:5329:1: rule__ChartGauge__Group__0 : rule__ChartGauge__Group__0__Impl rule__ChartGauge__Group__1 ;
+    public final void rule__ChartGauge__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5333:1: ( rule__ChartGauge__Group__0__Impl rule__ChartGauge__Group__1 )
+            // InternalChartDSL.g:5334:2: rule__ChartGauge__Group__0__Impl rule__ChartGauge__Group__1
+            {
+            pushFollow(FOLLOW_30);
+            rule__ChartGauge__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group__0"
+
+
+    // $ANTLR start "rule__ChartGauge__Group__0__Impl"
+    // InternalChartDSL.g:5341:1: rule__ChartGauge__Group__0__Impl : ( () ) ;
+    public final void rule__ChartGauge__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5345:1: ( ( () ) )
+            // InternalChartDSL.g:5346:1: ( () )
+            {
+            // InternalChartDSL.g:5346:1: ( () )
+            // InternalChartDSL.g:5347:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getChartGaugeAction_0()); 
+            }
+            // InternalChartDSL.g:5348:2: ()
+            // InternalChartDSL.g:5348:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getChartGaugeAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ChartGauge__Group__1"
+    // InternalChartDSL.g:5356:1: rule__ChartGauge__Group__1 : rule__ChartGauge__Group__1__Impl rule__ChartGauge__Group__2 ;
+    public final void rule__ChartGauge__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5360:1: ( rule__ChartGauge__Group__1__Impl rule__ChartGauge__Group__2 )
+            // InternalChartDSL.g:5361:2: rule__ChartGauge__Group__1__Impl rule__ChartGauge__Group__2
+            {
+            pushFollow(FOLLOW_31);
+            rule__ChartGauge__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group__1"
+
+
+    // $ANTLR start "rule__ChartGauge__Group__1__Impl"
+    // InternalChartDSL.g:5368:1: rule__ChartGauge__Group__1__Impl : ( 'gauge' ) ;
+    public final void rule__ChartGauge__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5372:1: ( ( 'gauge' ) )
+            // InternalChartDSL.g:5373:1: ( 'gauge' )
+            {
+            // InternalChartDSL.g:5373:1: ( 'gauge' )
+            // InternalChartDSL.g:5374:2: 'gauge'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getGaugeKeyword_1()); 
+            }
+            match(input,82,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getGaugeKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ChartGauge__Group__2"
+    // InternalChartDSL.g:5383:1: rule__ChartGauge__Group__2 : rule__ChartGauge__Group__2__Impl ;
+    public final void rule__ChartGauge__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5387:1: ( rule__ChartGauge__Group__2__Impl )
+            // InternalChartDSL.g:5388:2: rule__ChartGauge__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group__2"
+
+
+    // $ANTLR start "rule__ChartGauge__Group__2__Impl"
+    // InternalChartDSL.g:5394:1: rule__ChartGauge__Group__2__Impl : ( ( rule__ChartGauge__UnorderedGroup_2 ) ) ;
+    public final void rule__ChartGauge__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5398:1: ( ( ( rule__ChartGauge__UnorderedGroup_2 ) ) )
+            // InternalChartDSL.g:5399:1: ( ( rule__ChartGauge__UnorderedGroup_2 ) )
+            {
+            // InternalChartDSL.g:5399:1: ( ( rule__ChartGauge__UnorderedGroup_2 ) )
+            // InternalChartDSL.g:5400:2: ( rule__ChartGauge__UnorderedGroup_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2()); 
+            }
+            // InternalChartDSL.g:5401:2: ( rule__ChartGauge__UnorderedGroup_2 )
+            // InternalChartDSL.g:5401:3: rule__ChartGauge__UnorderedGroup_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__UnorderedGroup_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_0__0"
+    // InternalChartDSL.g:5410:1: rule__ChartGauge__Group_2_0__0 : rule__ChartGauge__Group_2_0__0__Impl rule__ChartGauge__Group_2_0__1 ;
+    public final void rule__ChartGauge__Group_2_0__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5414:1: ( rule__ChartGauge__Group_2_0__0__Impl rule__ChartGauge__Group_2_0__1 )
+            // InternalChartDSL.g:5415:2: rule__ChartGauge__Group_2_0__0__Impl rule__ChartGauge__Group_2_0__1
+            {
+            pushFollow(FOLLOW_16);
+            rule__ChartGauge__Group_2_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__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__ChartGauge__Group_2_0__0"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_0__0__Impl"
+    // InternalChartDSL.g:5422:1: rule__ChartGauge__Group_2_0__0__Impl : ( ( rule__ChartGauge__LabeledAssignment_2_0_0 ) ) ;
+    public final void rule__ChartGauge__Group_2_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5426:1: ( ( ( rule__ChartGauge__LabeledAssignment_2_0_0 ) ) )
+            // InternalChartDSL.g:5427:1: ( ( rule__ChartGauge__LabeledAssignment_2_0_0 ) )
+            {
+            // InternalChartDSL.g:5427:1: ( ( rule__ChartGauge__LabeledAssignment_2_0_0 ) )
+            // InternalChartDSL.g:5428:2: ( rule__ChartGauge__LabeledAssignment_2_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getLabeledAssignment_2_0_0()); 
+            }
+            // InternalChartDSL.g:5429:2: ( rule__ChartGauge__LabeledAssignment_2_0_0 )
+            // InternalChartDSL.g:5429:3: rule__ChartGauge__LabeledAssignment_2_0_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__LabeledAssignment_2_0_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getLabeledAssignment_2_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group_2_0__0__Impl"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_0__1"
+    // InternalChartDSL.g:5437:1: rule__ChartGauge__Group_2_0__1 : rule__ChartGauge__Group_2_0__1__Impl ;
+    public final void rule__ChartGauge__Group_2_0__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5441:1: ( rule__ChartGauge__Group_2_0__1__Impl )
+            // InternalChartDSL.g:5442:2: rule__ChartGauge__Group_2_0__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__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__ChartGauge__Group_2_0__1"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_0__1__Impl"
+    // InternalChartDSL.g:5448:1: rule__ChartGauge__Group_2_0__1__Impl : ( ( rule__ChartGauge__LabelValueAssignment_2_0_1 ) ) ;
+    public final void rule__ChartGauge__Group_2_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5452:1: ( ( ( rule__ChartGauge__LabelValueAssignment_2_0_1 ) ) )
+            // InternalChartDSL.g:5453:1: ( ( rule__ChartGauge__LabelValueAssignment_2_0_1 ) )
+            {
+            // InternalChartDSL.g:5453:1: ( ( rule__ChartGauge__LabelValueAssignment_2_0_1 ) )
+            // InternalChartDSL.g:5454:2: ( rule__ChartGauge__LabelValueAssignment_2_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getLabelValueAssignment_2_0_1()); 
+            }
+            // InternalChartDSL.g:5455:2: ( rule__ChartGauge__LabelValueAssignment_2_0_1 )
+            // InternalChartDSL.g:5455:3: rule__ChartGauge__LabelValueAssignment_2_0_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__LabelValueAssignment_2_0_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getLabelValueAssignment_2_0_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group_2_0__1__Impl"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_1__0"
+    // InternalChartDSL.g:5464:1: rule__ChartGauge__Group_2_1__0 : rule__ChartGauge__Group_2_1__0__Impl rule__ChartGauge__Group_2_1__1 ;
+    public final void rule__ChartGauge__Group_2_1__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5468:1: ( rule__ChartGauge__Group_2_1__0__Impl rule__ChartGauge__Group_2_1__1 )
+            // InternalChartDSL.g:5469:2: rule__ChartGauge__Group_2_1__0__Impl rule__ChartGauge__Group_2_1__1
+            {
+            pushFollow(FOLLOW_32);
+            rule__ChartGauge__Group_2_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__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__ChartGauge__Group_2_1__0"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_1__0__Impl"
+    // InternalChartDSL.g:5476:1: rule__ChartGauge__Group_2_1__0__Impl : ( ( rule__ChartGauge__HasTicksAssignment_2_1_0 ) ) ;
+    public final void rule__ChartGauge__Group_2_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5480:1: ( ( ( rule__ChartGauge__HasTicksAssignment_2_1_0 ) ) )
+            // InternalChartDSL.g:5481:1: ( ( rule__ChartGauge__HasTicksAssignment_2_1_0 ) )
+            {
+            // InternalChartDSL.g:5481:1: ( ( rule__ChartGauge__HasTicksAssignment_2_1_0 ) )
+            // InternalChartDSL.g:5482:2: ( rule__ChartGauge__HasTicksAssignment_2_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getHasTicksAssignment_2_1_0()); 
+            }
+            // InternalChartDSL.g:5483:2: ( rule__ChartGauge__HasTicksAssignment_2_1_0 )
+            // InternalChartDSL.g:5483:3: rule__ChartGauge__HasTicksAssignment_2_1_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__HasTicksAssignment_2_1_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getHasTicksAssignment_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group_2_1__0__Impl"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_1__1"
+    // InternalChartDSL.g:5491:1: rule__ChartGauge__Group_2_1__1 : rule__ChartGauge__Group_2_1__1__Impl rule__ChartGauge__Group_2_1__2 ;
+    public final void rule__ChartGauge__Group_2_1__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5495:1: ( rule__ChartGauge__Group_2_1__1__Impl rule__ChartGauge__Group_2_1__2 )
+            // InternalChartDSL.g:5496:2: rule__ChartGauge__Group_2_1__1__Impl rule__ChartGauge__Group_2_1__2
+            {
+            pushFollow(FOLLOW_17);
+            rule__ChartGauge__Group_2_1__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__Group_2_1__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group_2_1__1"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_1__1__Impl"
+    // InternalChartDSL.g:5503:1: rule__ChartGauge__Group_2_1__1__Impl : ( 'minimum' ) ;
+    public final void rule__ChartGauge__Group_2_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5507:1: ( ( 'minimum' ) )
+            // InternalChartDSL.g:5508:1: ( 'minimum' )
+            {
+            // InternalChartDSL.g:5508:1: ( 'minimum' )
+            // InternalChartDSL.g:5509:2: 'minimum'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getMinimumKeyword_2_1_1()); 
+            }
+            match(input,83,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getMinimumKeyword_2_1_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group_2_1__1__Impl"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_1__2"
+    // InternalChartDSL.g:5518:1: rule__ChartGauge__Group_2_1__2 : rule__ChartGauge__Group_2_1__2__Impl rule__ChartGauge__Group_2_1__3 ;
+    public final void rule__ChartGauge__Group_2_1__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5522:1: ( rule__ChartGauge__Group_2_1__2__Impl rule__ChartGauge__Group_2_1__3 )
+            // InternalChartDSL.g:5523:2: rule__ChartGauge__Group_2_1__2__Impl rule__ChartGauge__Group_2_1__3
+            {
+            pushFollow(FOLLOW_33);
+            rule__ChartGauge__Group_2_1__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__Group_2_1__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group_2_1__2"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_1__2__Impl"
+    // InternalChartDSL.g:5530:1: rule__ChartGauge__Group_2_1__2__Impl : ( ( rule__ChartGauge__MinValueAssignment_2_1_2 ) ) ;
+    public final void rule__ChartGauge__Group_2_1__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5534:1: ( ( ( rule__ChartGauge__MinValueAssignment_2_1_2 ) ) )
+            // InternalChartDSL.g:5535:1: ( ( rule__ChartGauge__MinValueAssignment_2_1_2 ) )
+            {
+            // InternalChartDSL.g:5535:1: ( ( rule__ChartGauge__MinValueAssignment_2_1_2 ) )
+            // InternalChartDSL.g:5536:2: ( rule__ChartGauge__MinValueAssignment_2_1_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getMinValueAssignment_2_1_2()); 
+            }
+            // InternalChartDSL.g:5537:2: ( rule__ChartGauge__MinValueAssignment_2_1_2 )
+            // InternalChartDSL.g:5537:3: rule__ChartGauge__MinValueAssignment_2_1_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__MinValueAssignment_2_1_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getMinValueAssignment_2_1_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group_2_1__2__Impl"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_1__3"
+    // InternalChartDSL.g:5545:1: rule__ChartGauge__Group_2_1__3 : rule__ChartGauge__Group_2_1__3__Impl rule__ChartGauge__Group_2_1__4 ;
+    public final void rule__ChartGauge__Group_2_1__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5549:1: ( rule__ChartGauge__Group_2_1__3__Impl rule__ChartGauge__Group_2_1__4 )
+            // InternalChartDSL.g:5550:2: rule__ChartGauge__Group_2_1__3__Impl rule__ChartGauge__Group_2_1__4
+            {
+            pushFollow(FOLLOW_17);
+            rule__ChartGauge__Group_2_1__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__Group_2_1__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group_2_1__3"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_1__3__Impl"
+    // InternalChartDSL.g:5557:1: rule__ChartGauge__Group_2_1__3__Impl : ( 'maximum' ) ;
+    public final void rule__ChartGauge__Group_2_1__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5561:1: ( ( 'maximum' ) )
+            // InternalChartDSL.g:5562:1: ( 'maximum' )
+            {
+            // InternalChartDSL.g:5562:1: ( 'maximum' )
+            // InternalChartDSL.g:5563:2: 'maximum'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getMaximumKeyword_2_1_3()); 
+            }
+            match(input,84,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getMaximumKeyword_2_1_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group_2_1__3__Impl"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_1__4"
+    // InternalChartDSL.g:5572:1: rule__ChartGauge__Group_2_1__4 : rule__ChartGauge__Group_2_1__4__Impl ;
+    public final void rule__ChartGauge__Group_2_1__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5576:1: ( rule__ChartGauge__Group_2_1__4__Impl )
+            // InternalChartDSL.g:5577:2: rule__ChartGauge__Group_2_1__4__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__Group_2_1__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group_2_1__4"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_1__4__Impl"
+    // InternalChartDSL.g:5583:1: rule__ChartGauge__Group_2_1__4__Impl : ( ( rule__ChartGauge__MaxValueAssignment_2_1_4 ) ) ;
+    public final void rule__ChartGauge__Group_2_1__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5587:1: ( ( ( rule__ChartGauge__MaxValueAssignment_2_1_4 ) ) )
+            // InternalChartDSL.g:5588:1: ( ( rule__ChartGauge__MaxValueAssignment_2_1_4 ) )
+            {
+            // InternalChartDSL.g:5588:1: ( ( rule__ChartGauge__MaxValueAssignment_2_1_4 ) )
+            // InternalChartDSL.g:5589:2: ( rule__ChartGauge__MaxValueAssignment_2_1_4 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getMaxValueAssignment_2_1_4()); 
+            }
+            // InternalChartDSL.g:5590:2: ( rule__ChartGauge__MaxValueAssignment_2_1_4 )
+            // InternalChartDSL.g:5590:3: rule__ChartGauge__MaxValueAssignment_2_1_4
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__MaxValueAssignment_2_1_4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getMaxValueAssignment_2_1_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group_2_1__4__Impl"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_2__0"
+    // InternalChartDSL.g:5599:1: rule__ChartGauge__Group_2_2__0 : rule__ChartGauge__Group_2_2__0__Impl rule__ChartGauge__Group_2_2__1 ;
+    public final void rule__ChartGauge__Group_2_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5603:1: ( rule__ChartGauge__Group_2_2__0__Impl rule__ChartGauge__Group_2_2__1 )
+            // InternalChartDSL.g:5604:2: rule__ChartGauge__Group_2_2__0__Impl rule__ChartGauge__Group_2_2__1
+            {
+            pushFollow(FOLLOW_8);
+            rule__ChartGauge__Group_2_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__Group_2_2__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group_2_2__0"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_2__0__Impl"
+    // InternalChartDSL.g:5611:1: rule__ChartGauge__Group_2_2__0__Impl : ( ( rule__ChartGauge__HasIntervalsAssignment_2_2_0 ) ) ;
+    public final void rule__ChartGauge__Group_2_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5615:1: ( ( ( rule__ChartGauge__HasIntervalsAssignment_2_2_0 ) ) )
+            // InternalChartDSL.g:5616:1: ( ( rule__ChartGauge__HasIntervalsAssignment_2_2_0 ) )
+            {
+            // InternalChartDSL.g:5616:1: ( ( rule__ChartGauge__HasIntervalsAssignment_2_2_0 ) )
+            // InternalChartDSL.g:5617:2: ( rule__ChartGauge__HasIntervalsAssignment_2_2_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getHasIntervalsAssignment_2_2_0()); 
+            }
+            // InternalChartDSL.g:5618:2: ( rule__ChartGauge__HasIntervalsAssignment_2_2_0 )
+            // InternalChartDSL.g:5618:3: rule__ChartGauge__HasIntervalsAssignment_2_2_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__HasIntervalsAssignment_2_2_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getHasIntervalsAssignment_2_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group_2_2__0__Impl"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_2__1"
+    // InternalChartDSL.g:5626:1: rule__ChartGauge__Group_2_2__1 : rule__ChartGauge__Group_2_2__1__Impl rule__ChartGauge__Group_2_2__2 ;
+    public final void rule__ChartGauge__Group_2_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5630:1: ( rule__ChartGauge__Group_2_2__1__Impl rule__ChartGauge__Group_2_2__2 )
+            // InternalChartDSL.g:5631:2: rule__ChartGauge__Group_2_2__1__Impl rule__ChartGauge__Group_2_2__2
+            {
+            pushFollow(FOLLOW_34);
+            rule__ChartGauge__Group_2_2__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__Group_2_2__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group_2_2__1"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_2__1__Impl"
+    // InternalChartDSL.g:5638:1: rule__ChartGauge__Group_2_2__1__Impl : ( '{' ) ;
+    public final void rule__ChartGauge__Group_2_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5642:1: ( ( '{' ) )
+            // InternalChartDSL.g:5643:1: ( '{' )
+            {
+            // InternalChartDSL.g:5643:1: ( '{' )
+            // InternalChartDSL.g:5644:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getLeftCurlyBracketKeyword_2_2_1()); 
+            }
+            match(input,72,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getLeftCurlyBracketKeyword_2_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group_2_2__1__Impl"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_2__2"
+    // InternalChartDSL.g:5653:1: rule__ChartGauge__Group_2_2__2 : rule__ChartGauge__Group_2_2__2__Impl rule__ChartGauge__Group_2_2__3 ;
+    public final void rule__ChartGauge__Group_2_2__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5657:1: ( rule__ChartGauge__Group_2_2__2__Impl rule__ChartGauge__Group_2_2__3 )
+            // InternalChartDSL.g:5658:2: rule__ChartGauge__Group_2_2__2__Impl rule__ChartGauge__Group_2_2__3
+            {
+            pushFollow(FOLLOW_34);
+            rule__ChartGauge__Group_2_2__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__Group_2_2__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group_2_2__2"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_2__2__Impl"
+    // InternalChartDSL.g:5665:1: rule__ChartGauge__Group_2_2__2__Impl : ( ( rule__ChartGauge__IntervalsAssignment_2_2_2 )* ) ;
+    public final void rule__ChartGauge__Group_2_2__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5669:1: ( ( ( rule__ChartGauge__IntervalsAssignment_2_2_2 )* ) )
+            // InternalChartDSL.g:5670:1: ( ( rule__ChartGauge__IntervalsAssignment_2_2_2 )* )
+            {
+            // InternalChartDSL.g:5670:1: ( ( rule__ChartGauge__IntervalsAssignment_2_2_2 )* )
+            // InternalChartDSL.g:5671:2: ( rule__ChartGauge__IntervalsAssignment_2_2_2 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getIntervalsAssignment_2_2_2()); 
+            }
+            // InternalChartDSL.g:5672:2: ( rule__ChartGauge__IntervalsAssignment_2_2_2 )*
+            loop65:
+            do {
+                int alt65=2;
+                int LA65_0 = input.LA(1);
+
+                if ( (LA65_0==86) ) {
+                    alt65=1;
+                }
+
+
+                switch (alt65) {
+            	case 1 :
+            	    // InternalChartDSL.g:5672:3: rule__ChartGauge__IntervalsAssignment_2_2_2
+            	    {
+            	    pushFollow(FOLLOW_35);
+            	    rule__ChartGauge__IntervalsAssignment_2_2_2();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop65;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getIntervalsAssignment_2_2_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group_2_2__2__Impl"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_2__3"
+    // InternalChartDSL.g:5680:1: rule__ChartGauge__Group_2_2__3 : rule__ChartGauge__Group_2_2__3__Impl ;
+    public final void rule__ChartGauge__Group_2_2__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5684:1: ( rule__ChartGauge__Group_2_2__3__Impl )
+            // InternalChartDSL.g:5685:2: rule__ChartGauge__Group_2_2__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__Group_2_2__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group_2_2__3"
+
+
+    // $ANTLR start "rule__ChartGauge__Group_2_2__3__Impl"
+    // InternalChartDSL.g:5691:1: rule__ChartGauge__Group_2_2__3__Impl : ( '}' ) ;
+    public final void rule__ChartGauge__Group_2_2__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5695:1: ( ( '}' ) )
+            // InternalChartDSL.g:5696:1: ( '}' )
+            {
+            // InternalChartDSL.g:5696:1: ( '}' )
+            // InternalChartDSL.g:5697:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getRightCurlyBracketKeyword_2_2_3()); 
+            }
+            match(input,73,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getRightCurlyBracketKeyword_2_2_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__Group_2_2__3__Impl"
+
+
+    // $ANTLR start "rule__ChartTree__Group__0"
+    // InternalChartDSL.g:5707:1: rule__ChartTree__Group__0 : rule__ChartTree__Group__0__Impl rule__ChartTree__Group__1 ;
+    public final void rule__ChartTree__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5711:1: ( rule__ChartTree__Group__0__Impl rule__ChartTree__Group__1 )
+            // InternalChartDSL.g:5712:2: rule__ChartTree__Group__0__Impl rule__ChartTree__Group__1
+            {
+            pushFollow(FOLLOW_13);
+            rule__ChartTree__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartTree__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartTree__Group__0"
+
+
+    // $ANTLR start "rule__ChartTree__Group__0__Impl"
+    // InternalChartDSL.g:5719:1: rule__ChartTree__Group__0__Impl : ( () ) ;
+    public final void rule__ChartTree__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5723:1: ( ( () ) )
+            // InternalChartDSL.g:5724:1: ( () )
+            {
+            // InternalChartDSL.g:5724:1: ( () )
+            // InternalChartDSL.g:5725:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartTreeAccess().getChartTreeAction_0()); 
+            }
+            // InternalChartDSL.g:5726:2: ()
+            // InternalChartDSL.g:5726:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartTreeAccess().getChartTreeAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartTree__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ChartTree__Group__1"
+    // InternalChartDSL.g:5734:1: rule__ChartTree__Group__1 : rule__ChartTree__Group__1__Impl rule__ChartTree__Group__2 ;
+    public final void rule__ChartTree__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5738:1: ( rule__ChartTree__Group__1__Impl rule__ChartTree__Group__2 )
+            // InternalChartDSL.g:5739:2: rule__ChartTree__Group__1__Impl rule__ChartTree__Group__2
+            {
+            pushFollow(FOLLOW_36);
+            rule__ChartTree__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartTree__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartTree__Group__1"
+
+
+    // $ANTLR start "rule__ChartTree__Group__1__Impl"
+    // InternalChartDSL.g:5746:1: rule__ChartTree__Group__1__Impl : ( 'tree' ) ;
+    public final void rule__ChartTree__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5750:1: ( ( 'tree' ) )
+            // InternalChartDSL.g:5751:1: ( 'tree' )
+            {
+            // InternalChartDSL.g:5751:1: ( 'tree' )
+            // InternalChartDSL.g:5752:2: 'tree'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartTreeAccess().getTreeKeyword_1()); 
+            }
+            match(input,85,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartTreeAccess().getTreeKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartTree__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ChartTree__Group__2"
+    // InternalChartDSL.g:5761:1: rule__ChartTree__Group__2 : rule__ChartTree__Group__2__Impl ;
+    public final void rule__ChartTree__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5765:1: ( rule__ChartTree__Group__2__Impl )
+            // InternalChartDSL.g:5766:2: rule__ChartTree__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartTree__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartTree__Group__2"
+
+
+    // $ANTLR start "rule__ChartTree__Group__2__Impl"
+    // InternalChartDSL.g:5772:1: rule__ChartTree__Group__2__Impl : ( ( rule__ChartTree__Alternatives_2 ) ) ;
+    public final void rule__ChartTree__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5776:1: ( ( ( rule__ChartTree__Alternatives_2 ) ) )
+            // InternalChartDSL.g:5777:1: ( ( rule__ChartTree__Alternatives_2 ) )
+            {
+            // InternalChartDSL.g:5777:1: ( ( rule__ChartTree__Alternatives_2 ) )
+            // InternalChartDSL.g:5778:2: ( rule__ChartTree__Alternatives_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartTreeAccess().getAlternatives_2()); 
+            }
+            // InternalChartDSL.g:5779:2: ( rule__ChartTree__Alternatives_2 )
+            // InternalChartDSL.g:5779:3: rule__ChartTree__Alternatives_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartTree__Alternatives_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartTreeAccess().getAlternatives_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartTree__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ChartNumberInterval__Group__0"
+    // InternalChartDSL.g:5788:1: rule__ChartNumberInterval__Group__0 : rule__ChartNumberInterval__Group__0__Impl rule__ChartNumberInterval__Group__1 ;
+    public final void rule__ChartNumberInterval__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5792:1: ( rule__ChartNumberInterval__Group__0__Impl rule__ChartNumberInterval__Group__1 )
+            // InternalChartDSL.g:5793:2: rule__ChartNumberInterval__Group__0__Impl rule__ChartNumberInterval__Group__1
+            {
+            pushFollow(FOLLOW_37);
+            rule__ChartNumberInterval__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartNumberInterval__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartNumberInterval__Group__0"
+
+
+    // $ANTLR start "rule__ChartNumberInterval__Group__0__Impl"
+    // InternalChartDSL.g:5800:1: rule__ChartNumberInterval__Group__0__Impl : ( () ) ;
+    public final void rule__ChartNumberInterval__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5804:1: ( ( () ) )
+            // InternalChartDSL.g:5805:1: ( () )
+            {
+            // InternalChartDSL.g:5805:1: ( () )
+            // InternalChartDSL.g:5806:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartNumberIntervalAccess().getChartNumberIntervalAction_0()); 
+            }
+            // InternalChartDSL.g:5807:2: ()
+            // InternalChartDSL.g:5807:3: 
+            {
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartNumberIntervalAccess().getChartNumberIntervalAction_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartNumberInterval__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ChartNumberInterval__Group__1"
+    // InternalChartDSL.g:5815:1: rule__ChartNumberInterval__Group__1 : rule__ChartNumberInterval__Group__1__Impl rule__ChartNumberInterval__Group__2 ;
+    public final void rule__ChartNumberInterval__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5819:1: ( rule__ChartNumberInterval__Group__1__Impl rule__ChartNumberInterval__Group__2 )
+            // InternalChartDSL.g:5820:2: rule__ChartNumberInterval__Group__1__Impl rule__ChartNumberInterval__Group__2
+            {
+            pushFollow(FOLLOW_38);
+            rule__ChartNumberInterval__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartNumberInterval__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartNumberInterval__Group__1"
+
+
+    // $ANTLR start "rule__ChartNumberInterval__Group__1__Impl"
+    // InternalChartDSL.g:5827:1: rule__ChartNumberInterval__Group__1__Impl : ( 'upTo' ) ;
+    public final void rule__ChartNumberInterval__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5831:1: ( ( 'upTo' ) )
+            // InternalChartDSL.g:5832:1: ( 'upTo' )
+            {
+            // InternalChartDSL.g:5832:1: ( 'upTo' )
+            // InternalChartDSL.g:5833:2: 'upTo'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartNumberIntervalAccess().getUpToKeyword_1()); 
+            }
+            match(input,86,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartNumberIntervalAccess().getUpToKeyword_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartNumberInterval__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ChartNumberInterval__Group__2"
+    // InternalChartDSL.g:5842:1: rule__ChartNumberInterval__Group__2 : rule__ChartNumberInterval__Group__2__Impl rule__ChartNumberInterval__Group__3 ;
+    public final void rule__ChartNumberInterval__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5846:1: ( rule__ChartNumberInterval__Group__2__Impl rule__ChartNumberInterval__Group__3 )
+            // InternalChartDSL.g:5847:2: rule__ChartNumberInterval__Group__2__Impl rule__ChartNumberInterval__Group__3
+            {
+            pushFollow(FOLLOW_39);
+            rule__ChartNumberInterval__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartNumberInterval__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartNumberInterval__Group__2"
+
+
+    // $ANTLR start "rule__ChartNumberInterval__Group__2__Impl"
+    // InternalChartDSL.g:5854:1: rule__ChartNumberInterval__Group__2__Impl : ( ( rule__ChartNumberInterval__NumberIntervalValueAssignment_2 ) ) ;
+    public final void rule__ChartNumberInterval__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5858:1: ( ( ( rule__ChartNumberInterval__NumberIntervalValueAssignment_2 ) ) )
+            // InternalChartDSL.g:5859:1: ( ( rule__ChartNumberInterval__NumberIntervalValueAssignment_2 ) )
+            {
+            // InternalChartDSL.g:5859:1: ( ( rule__ChartNumberInterval__NumberIntervalValueAssignment_2 ) )
+            // InternalChartDSL.g:5860:2: ( rule__ChartNumberInterval__NumberIntervalValueAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartNumberIntervalAccess().getNumberIntervalValueAssignment_2()); 
+            }
+            // InternalChartDSL.g:5861:2: ( rule__ChartNumberInterval__NumberIntervalValueAssignment_2 )
+            // InternalChartDSL.g:5861:3: rule__ChartNumberInterval__NumberIntervalValueAssignment_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartNumberInterval__NumberIntervalValueAssignment_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartNumberIntervalAccess().getNumberIntervalValueAssignment_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartNumberInterval__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ChartNumberInterval__Group__3"
+    // InternalChartDSL.g:5869:1: rule__ChartNumberInterval__Group__3 : rule__ChartNumberInterval__Group__3__Impl ;
+    public final void rule__ChartNumberInterval__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5873:1: ( rule__ChartNumberInterval__Group__3__Impl )
+            // InternalChartDSL.g:5874:2: rule__ChartNumberInterval__Group__3__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartNumberInterval__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartNumberInterval__Group__3"
+
+
+    // $ANTLR start "rule__ChartNumberInterval__Group__3__Impl"
+    // InternalChartDSL.g:5880:1: rule__ChartNumberInterval__Group__3__Impl : ( ( rule__ChartNumberInterval__NumberRangeAssignment_3 ) ) ;
+    public final void rule__ChartNumberInterval__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5884:1: ( ( ( rule__ChartNumberInterval__NumberRangeAssignment_3 ) ) )
+            // InternalChartDSL.g:5885:1: ( ( rule__ChartNumberInterval__NumberRangeAssignment_3 ) )
+            {
+            // InternalChartDSL.g:5885:1: ( ( rule__ChartNumberInterval__NumberRangeAssignment_3 ) )
+            // InternalChartDSL.g:5886:2: ( rule__ChartNumberInterval__NumberRangeAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartNumberIntervalAccess().getNumberRangeAssignment_3()); 
+            }
+            // InternalChartDSL.g:5887:2: ( rule__ChartNumberInterval__NumberRangeAssignment_3 )
+            // InternalChartDSL.g:5887:3: rule__ChartNumberInterval__NumberRangeAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartNumberInterval__NumberRangeAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartNumberIntervalAccess().getNumberRangeAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartNumberInterval__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ChartDatamart__Group__0"
+    // InternalChartDSL.g:5896:1: rule__ChartDatamart__Group__0 : rule__ChartDatamart__Group__0__Impl rule__ChartDatamart__Group__1 ;
+    public final void rule__ChartDatamart__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5900:1: ( rule__ChartDatamart__Group__0__Impl rule__ChartDatamart__Group__1 )
+            // InternalChartDSL.g:5901:2: rule__ChartDatamart__Group__0__Impl rule__ChartDatamart__Group__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__ChartDatamart__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartDatamart__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartDatamart__Group__0"
+
+
+    // $ANTLR start "rule__ChartDatamart__Group__0__Impl"
+    // InternalChartDSL.g:5908:1: rule__ChartDatamart__Group__0__Impl : ( 'datamart' ) ;
+    public final void rule__ChartDatamart__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5912:1: ( ( 'datamart' ) )
+            // InternalChartDSL.g:5913:1: ( 'datamart' )
+            {
+            // InternalChartDSL.g:5913:1: ( 'datamart' )
+            // InternalChartDSL.g:5914:2: 'datamart'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartDatamartAccess().getDatamartKeyword_0()); 
+            }
+            match(input,87,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartDatamartAccess().getDatamartKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartDatamart__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ChartDatamart__Group__1"
+    // InternalChartDSL.g:5923:1: rule__ChartDatamart__Group__1 : rule__ChartDatamart__Group__1__Impl rule__ChartDatamart__Group__2 ;
+    public final void rule__ChartDatamart__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5927:1: ( rule__ChartDatamart__Group__1__Impl rule__ChartDatamart__Group__2 )
+            // InternalChartDSL.g:5928:2: rule__ChartDatamart__Group__1__Impl rule__ChartDatamart__Group__2
+            {
+            pushFollow(FOLLOW_8);
+            rule__ChartDatamart__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartDatamart__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartDatamart__Group__1"
+
+
+    // $ANTLR start "rule__ChartDatamart__Group__1__Impl"
+    // InternalChartDSL.g:5935:1: rule__ChartDatamart__Group__1__Impl : ( ( rule__ChartDatamart__DatamartRefAssignment_1 ) ) ;
+    public final void rule__ChartDatamart__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5939:1: ( ( ( rule__ChartDatamart__DatamartRefAssignment_1 ) ) )
+            // InternalChartDSL.g:5940:1: ( ( rule__ChartDatamart__DatamartRefAssignment_1 ) )
+            {
+            // InternalChartDSL.g:5940:1: ( ( rule__ChartDatamart__DatamartRefAssignment_1 ) )
+            // InternalChartDSL.g:5941:2: ( rule__ChartDatamart__DatamartRefAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartDatamartAccess().getDatamartRefAssignment_1()); 
+            }
+            // InternalChartDSL.g:5942:2: ( rule__ChartDatamart__DatamartRefAssignment_1 )
+            // InternalChartDSL.g:5942:3: rule__ChartDatamart__DatamartRefAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartDatamart__DatamartRefAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartDatamartAccess().getDatamartRefAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartDatamart__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ChartDatamart__Group__2"
+    // InternalChartDSL.g:5950:1: rule__ChartDatamart__Group__2 : rule__ChartDatamart__Group__2__Impl rule__ChartDatamart__Group__3 ;
+    public final void rule__ChartDatamart__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5954:1: ( rule__ChartDatamart__Group__2__Impl rule__ChartDatamart__Group__3 )
+            // InternalChartDSL.g:5955:2: rule__ChartDatamart__Group__2__Impl rule__ChartDatamart__Group__3
+            {
+            pushFollow(FOLLOW_40);
+            rule__ChartDatamart__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartDatamart__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartDatamart__Group__2"
+
+
+    // $ANTLR start "rule__ChartDatamart__Group__2__Impl"
+    // InternalChartDSL.g:5962:1: rule__ChartDatamart__Group__2__Impl : ( '{' ) ;
+    public final void rule__ChartDatamart__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5966:1: ( ( '{' ) )
+            // InternalChartDSL.g:5967:1: ( '{' )
+            {
+            // InternalChartDSL.g:5967:1: ( '{' )
+            // InternalChartDSL.g:5968:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartDatamartAccess().getLeftCurlyBracketKeyword_2()); 
+            }
+            match(input,72,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartDatamartAccess().getLeftCurlyBracketKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartDatamart__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ChartDatamart__Group__3"
+    // InternalChartDSL.g:5977:1: rule__ChartDatamart__Group__3 : rule__ChartDatamart__Group__3__Impl rule__ChartDatamart__Group__4 ;
+    public final void rule__ChartDatamart__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5981:1: ( rule__ChartDatamart__Group__3__Impl rule__ChartDatamart__Group__4 )
+            // InternalChartDSL.g:5982:2: rule__ChartDatamart__Group__3__Impl rule__ChartDatamart__Group__4
+            {
+            pushFollow(FOLLOW_40);
+            rule__ChartDatamart__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartDatamart__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartDatamart__Group__3"
+
+
+    // $ANTLR start "rule__ChartDatamart__Group__3__Impl"
+    // InternalChartDSL.g:5989:1: rule__ChartDatamart__Group__3__Impl : ( ( rule__ChartDatamart__ElementsAssignment_3 )* ) ;
+    public final void rule__ChartDatamart__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:5993:1: ( ( ( rule__ChartDatamart__ElementsAssignment_3 )* ) )
+            // InternalChartDSL.g:5994:1: ( ( rule__ChartDatamart__ElementsAssignment_3 )* )
+            {
+            // InternalChartDSL.g:5994:1: ( ( rule__ChartDatamart__ElementsAssignment_3 )* )
+            // InternalChartDSL.g:5995:2: ( rule__ChartDatamart__ElementsAssignment_3 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartDatamartAccess().getElementsAssignment_3()); 
+            }
+            // InternalChartDSL.g:5996:2: ( rule__ChartDatamart__ElementsAssignment_3 )*
+            loop66:
+            do {
+                int alt66=2;
+                int LA66_0 = input.LA(1);
+
+                if ( ((LA66_0>=88 && LA66_0<=90)) ) {
+                    alt66=1;
+                }
+
+
+                switch (alt66) {
+            	case 1 :
+            	    // InternalChartDSL.g:5996:3: rule__ChartDatamart__ElementsAssignment_3
+            	    {
+            	    pushFollow(FOLLOW_41);
+            	    rule__ChartDatamart__ElementsAssignment_3();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop66;
+                }
+            } while (true);
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartDatamartAccess().getElementsAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartDatamart__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ChartDatamart__Group__4"
+    // InternalChartDSL.g:6004:1: rule__ChartDatamart__Group__4 : rule__ChartDatamart__Group__4__Impl ;
+    public final void rule__ChartDatamart__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6008:1: ( rule__ChartDatamart__Group__4__Impl )
+            // InternalChartDSL.g:6009:2: rule__ChartDatamart__Group__4__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartDatamart__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartDatamart__Group__4"
+
+
+    // $ANTLR start "rule__ChartDatamart__Group__4__Impl"
+    // InternalChartDSL.g:6015:1: rule__ChartDatamart__Group__4__Impl : ( '}' ) ;
+    public final void rule__ChartDatamart__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6019:1: ( ( '}' ) )
+            // InternalChartDSL.g:6020:1: ( '}' )
+            {
+            // InternalChartDSL.g:6020:1: ( '}' )
+            // InternalChartDSL.g:6021:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartDatamartAccess().getRightCurlyBracketKeyword_4()); 
+            }
+            match(input,73,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartDatamartAccess().getRightCurlyBracketKeyword_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartDatamart__Group__4__Impl"
+
+
+    // $ANTLR start "rule__ChartLegend__Group__0"
+    // InternalChartDSL.g:6031:1: rule__ChartLegend__Group__0 : rule__ChartLegend__Group__0__Impl rule__ChartLegend__Group__1 ;
+    public final void rule__ChartLegend__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6035:1: ( rule__ChartLegend__Group__0__Impl rule__ChartLegend__Group__1 )
+            // InternalChartDSL.g:6036:2: rule__ChartLegend__Group__0__Impl rule__ChartLegend__Group__1
+            {
+            pushFollow(FOLLOW_42);
+            rule__ChartLegend__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartLegend__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLegend__Group__0"
+
+
+    // $ANTLR start "rule__ChartLegend__Group__0__Impl"
+    // InternalChartDSL.g:6043:1: rule__ChartLegend__Group__0__Impl : ( 'legend' ) ;
+    public final void rule__ChartLegend__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6047:1: ( ( 'legend' ) )
+            // InternalChartDSL.g:6048:1: ( 'legend' )
+            {
+            // InternalChartDSL.g:6048:1: ( 'legend' )
+            // InternalChartDSL.g:6049:2: 'legend'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLegendAccess().getLegendKeyword_0()); 
+            }
+            match(input,88,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLegendAccess().getLegendKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLegend__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ChartLegend__Group__1"
+    // InternalChartDSL.g:6058:1: rule__ChartLegend__Group__1 : rule__ChartLegend__Group__1__Impl rule__ChartLegend__Group__2 ;
+    public final void rule__ChartLegend__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6062:1: ( rule__ChartLegend__Group__1__Impl rule__ChartLegend__Group__2 )
+            // InternalChartDSL.g:6063:2: rule__ChartLegend__Group__1__Impl rule__ChartLegend__Group__2
+            {
+            pushFollow(FOLLOW_43);
+            rule__ChartLegend__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartLegend__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLegend__Group__1"
+
+
+    // $ANTLR start "rule__ChartLegend__Group__1__Impl"
+    // InternalChartDSL.g:6070:1: rule__ChartLegend__Group__1__Impl : ( ( rule__ChartLegend__PlacementAssignment_1 ) ) ;
+    public final void rule__ChartLegend__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6074:1: ( ( ( rule__ChartLegend__PlacementAssignment_1 ) ) )
+            // InternalChartDSL.g:6075:1: ( ( rule__ChartLegend__PlacementAssignment_1 ) )
+            {
+            // InternalChartDSL.g:6075:1: ( ( rule__ChartLegend__PlacementAssignment_1 ) )
+            // InternalChartDSL.g:6076:2: ( rule__ChartLegend__PlacementAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLegendAccess().getPlacementAssignment_1()); 
+            }
+            // InternalChartDSL.g:6077:2: ( rule__ChartLegend__PlacementAssignment_1 )
+            // InternalChartDSL.g:6077:3: rule__ChartLegend__PlacementAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartLegend__PlacementAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLegendAccess().getPlacementAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLegend__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ChartLegend__Group__2"
+    // InternalChartDSL.g:6085:1: rule__ChartLegend__Group__2 : rule__ChartLegend__Group__2__Impl ;
+    public final void rule__ChartLegend__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6089:1: ( rule__ChartLegend__Group__2__Impl )
+            // InternalChartDSL.g:6090:2: rule__ChartLegend__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartLegend__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLegend__Group__2"
+
+
+    // $ANTLR start "rule__ChartLegend__Group__2__Impl"
+    // InternalChartDSL.g:6096:1: rule__ChartLegend__Group__2__Impl : ( ( rule__ChartLegend__Group_2__0 )? ) ;
+    public final void rule__ChartLegend__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6100:1: ( ( ( rule__ChartLegend__Group_2__0 )? ) )
+            // InternalChartDSL.g:6101:1: ( ( rule__ChartLegend__Group_2__0 )? )
+            {
+            // InternalChartDSL.g:6101:1: ( ( rule__ChartLegend__Group_2__0 )? )
+            // InternalChartDSL.g:6102:2: ( rule__ChartLegend__Group_2__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLegendAccess().getGroup_2()); 
+            }
+            // InternalChartDSL.g:6103:2: ( rule__ChartLegend__Group_2__0 )?
+            int alt67=2;
+            int LA67_0 = input.LA(1);
+
+            if ( (LA67_0==145) ) {
+                alt67=1;
+            }
+            switch (alt67) {
+                case 1 :
+                    // InternalChartDSL.g:6103:3: rule__ChartLegend__Group_2__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartLegend__Group_2__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLegendAccess().getGroup_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLegend__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ChartLegend__Group_2__0"
+    // InternalChartDSL.g:6112:1: rule__ChartLegend__Group_2__0 : rule__ChartLegend__Group_2__0__Impl rule__ChartLegend__Group_2__1 ;
+    public final void rule__ChartLegend__Group_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6116:1: ( rule__ChartLegend__Group_2__0__Impl rule__ChartLegend__Group_2__1 )
+            // InternalChartDSL.g:6117:2: rule__ChartLegend__Group_2__0__Impl rule__ChartLegend__Group_2__1
+            {
+            pushFollow(FOLLOW_44);
+            rule__ChartLegend__Group_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartLegend__Group_2__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLegend__Group_2__0"
+
+
+    // $ANTLR start "rule__ChartLegend__Group_2__0__Impl"
+    // InternalChartDSL.g:6124:1: rule__ChartLegend__Group_2__0__Impl : ( ( rule__ChartLegend__ToggleAssignment_2_0 ) ) ;
+    public final void rule__ChartLegend__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6128:1: ( ( ( rule__ChartLegend__ToggleAssignment_2_0 ) ) )
+            // InternalChartDSL.g:6129:1: ( ( rule__ChartLegend__ToggleAssignment_2_0 ) )
+            {
+            // InternalChartDSL.g:6129:1: ( ( rule__ChartLegend__ToggleAssignment_2_0 ) )
+            // InternalChartDSL.g:6130:2: ( rule__ChartLegend__ToggleAssignment_2_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLegendAccess().getToggleAssignment_2_0()); 
+            }
+            // InternalChartDSL.g:6131:2: ( rule__ChartLegend__ToggleAssignment_2_0 )
+            // InternalChartDSL.g:6131:3: rule__ChartLegend__ToggleAssignment_2_0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartLegend__ToggleAssignment_2_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLegendAccess().getToggleAssignment_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLegend__Group_2__0__Impl"
+
+
+    // $ANTLR start "rule__ChartLegend__Group_2__1"
+    // InternalChartDSL.g:6139:1: rule__ChartLegend__Group_2__1 : rule__ChartLegend__Group_2__1__Impl rule__ChartLegend__Group_2__2 ;
+    public final void rule__ChartLegend__Group_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6143:1: ( rule__ChartLegend__Group_2__1__Impl rule__ChartLegend__Group_2__2 )
+            // InternalChartDSL.g:6144:2: rule__ChartLegend__Group_2__1__Impl rule__ChartLegend__Group_2__2
+            {
+            pushFollow(FOLLOW_45);
+            rule__ChartLegend__Group_2__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartLegend__Group_2__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLegend__Group_2__1"
+
+
+    // $ANTLR start "rule__ChartLegend__Group_2__1__Impl"
+    // InternalChartDSL.g:6151:1: rule__ChartLegend__Group_2__1__Impl : ( ( rule__ChartLegend__ReplotAssignment_2_1 ) ) ;
+    public final void rule__ChartLegend__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6155:1: ( ( ( rule__ChartLegend__ReplotAssignment_2_1 ) ) )
+            // InternalChartDSL.g:6156:1: ( ( rule__ChartLegend__ReplotAssignment_2_1 ) )
+            {
+            // InternalChartDSL.g:6156:1: ( ( rule__ChartLegend__ReplotAssignment_2_1 ) )
+            // InternalChartDSL.g:6157:2: ( rule__ChartLegend__ReplotAssignment_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLegendAccess().getReplotAssignment_2_1()); 
+            }
+            // InternalChartDSL.g:6158:2: ( rule__ChartLegend__ReplotAssignment_2_1 )
+            // InternalChartDSL.g:6158:3: rule__ChartLegend__ReplotAssignment_2_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartLegend__ReplotAssignment_2_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLegendAccess().getReplotAssignment_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLegend__Group_2__1__Impl"
+
+
+    // $ANTLR start "rule__ChartLegend__Group_2__2"
+    // InternalChartDSL.g:6166:1: rule__ChartLegend__Group_2__2 : rule__ChartLegend__Group_2__2__Impl ;
+    public final void rule__ChartLegend__Group_2__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6170:1: ( rule__ChartLegend__Group_2__2__Impl )
+            // InternalChartDSL.g:6171:2: rule__ChartLegend__Group_2__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartLegend__Group_2__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLegend__Group_2__2"
+
+
+    // $ANTLR start "rule__ChartLegend__Group_2__2__Impl"
+    // InternalChartDSL.g:6177:1: rule__ChartLegend__Group_2__2__Impl : ( ( rule__ChartLegend__ToggleTypeAssignment_2_2 ) ) ;
+    public final void rule__ChartLegend__Group_2__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6181:1: ( ( ( rule__ChartLegend__ToggleTypeAssignment_2_2 ) ) )
+            // InternalChartDSL.g:6182:1: ( ( rule__ChartLegend__ToggleTypeAssignment_2_2 ) )
+            {
+            // InternalChartDSL.g:6182:1: ( ( rule__ChartLegend__ToggleTypeAssignment_2_2 ) )
+            // InternalChartDSL.g:6183:2: ( rule__ChartLegend__ToggleTypeAssignment_2_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLegendAccess().getToggleTypeAssignment_2_2()); 
+            }
+            // InternalChartDSL.g:6184:2: ( rule__ChartLegend__ToggleTypeAssignment_2_2 )
+            // InternalChartDSL.g:6184:3: rule__ChartLegend__ToggleTypeAssignment_2_2
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartLegend__ToggleTypeAssignment_2_2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLegendAccess().getToggleTypeAssignment_2_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLegend__Group_2__2__Impl"
+
+
+    // $ANTLR start "rule__ChartHighlighter__Group__0"
+    // InternalChartDSL.g:6193:1: rule__ChartHighlighter__Group__0 : rule__ChartHighlighter__Group__0__Impl rule__ChartHighlighter__Group__1 ;
+    public final void rule__ChartHighlighter__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6197:1: ( rule__ChartHighlighter__Group__0__Impl rule__ChartHighlighter__Group__1 )
+            // InternalChartDSL.g:6198:2: rule__ChartHighlighter__Group__0__Impl rule__ChartHighlighter__Group__1
+            {
+            pushFollow(FOLLOW_46);
+            rule__ChartHighlighter__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartHighlighter__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartHighlighter__Group__0"
+
+
+    // $ANTLR start "rule__ChartHighlighter__Group__0__Impl"
+    // InternalChartDSL.g:6205:1: rule__ChartHighlighter__Group__0__Impl : ( 'tooltip' ) ;
+    public final void rule__ChartHighlighter__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6209:1: ( ( 'tooltip' ) )
+            // InternalChartDSL.g:6210:1: ( 'tooltip' )
+            {
+            // InternalChartDSL.g:6210:1: ( 'tooltip' )
+            // InternalChartDSL.g:6211:2: 'tooltip'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartHighlighterAccess().getTooltipKeyword_0()); 
+            }
+            match(input,89,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartHighlighterAccess().getTooltipKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartHighlighter__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ChartHighlighter__Group__1"
+    // InternalChartDSL.g:6220:1: rule__ChartHighlighter__Group__1 : rule__ChartHighlighter__Group__1__Impl rule__ChartHighlighter__Group__2 ;
+    public final void rule__ChartHighlighter__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6224:1: ( rule__ChartHighlighter__Group__1__Impl rule__ChartHighlighter__Group__2 )
+            // InternalChartDSL.g:6225:2: rule__ChartHighlighter__Group__1__Impl rule__ChartHighlighter__Group__2
+            {
+            pushFollow(FOLLOW_47);
+            rule__ChartHighlighter__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartHighlighter__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartHighlighter__Group__1"
+
+
+    // $ANTLR start "rule__ChartHighlighter__Group__1__Impl"
+    // InternalChartDSL.g:6232:1: rule__ChartHighlighter__Group__1__Impl : ( ( rule__ChartHighlighter__LocationAssignment_1 ) ) ;
+    public final void rule__ChartHighlighter__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6236:1: ( ( ( rule__ChartHighlighter__LocationAssignment_1 ) ) )
+            // InternalChartDSL.g:6237:1: ( ( rule__ChartHighlighter__LocationAssignment_1 ) )
+            {
+            // InternalChartDSL.g:6237:1: ( ( rule__ChartHighlighter__LocationAssignment_1 ) )
+            // InternalChartDSL.g:6238:2: ( rule__ChartHighlighter__LocationAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartHighlighterAccess().getLocationAssignment_1()); 
+            }
+            // InternalChartDSL.g:6239:2: ( rule__ChartHighlighter__LocationAssignment_1 )
+            // InternalChartDSL.g:6239:3: rule__ChartHighlighter__LocationAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartHighlighter__LocationAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartHighlighterAccess().getLocationAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartHighlighter__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ChartHighlighter__Group__2"
+    // InternalChartDSL.g:6247:1: rule__ChartHighlighter__Group__2 : rule__ChartHighlighter__Group__2__Impl ;
+    public final void rule__ChartHighlighter__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6251:1: ( rule__ChartHighlighter__Group__2__Impl )
+            // InternalChartDSL.g:6252:2: rule__ChartHighlighter__Group__2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartHighlighter__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartHighlighter__Group__2"
+
+
+    // $ANTLR start "rule__ChartHighlighter__Group__2__Impl"
+    // InternalChartDSL.g:6258:1: rule__ChartHighlighter__Group__2__Impl : ( ( rule__ChartHighlighter__Group_2__0 ) ) ;
+    public final void rule__ChartHighlighter__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6262:1: ( ( ( rule__ChartHighlighter__Group_2__0 ) ) )
+            // InternalChartDSL.g:6263:1: ( ( rule__ChartHighlighter__Group_2__0 ) )
+            {
+            // InternalChartDSL.g:6263:1: ( ( rule__ChartHighlighter__Group_2__0 ) )
+            // InternalChartDSL.g:6264:2: ( rule__ChartHighlighter__Group_2__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartHighlighterAccess().getGroup_2()); 
+            }
+            // InternalChartDSL.g:6265:2: ( rule__ChartHighlighter__Group_2__0 )
+            // InternalChartDSL.g:6265:3: rule__ChartHighlighter__Group_2__0
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartHighlighter__Group_2__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartHighlighterAccess().getGroup_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartHighlighter__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ChartHighlighter__Group_2__0"
+    // InternalChartDSL.g:6274:1: rule__ChartHighlighter__Group_2__0 : rule__ChartHighlighter__Group_2__0__Impl rule__ChartHighlighter__Group_2__1 ;
+    public final void rule__ChartHighlighter__Group_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6278:1: ( rule__ChartHighlighter__Group_2__0__Impl rule__ChartHighlighter__Group_2__1 )
+            // InternalChartDSL.g:6279:2: rule__ChartHighlighter__Group_2__0__Impl rule__ChartHighlighter__Group_2__1
+            {
+            pushFollow(FOLLOW_47);
+            rule__ChartHighlighter__Group_2__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartHighlighter__Group_2__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartHighlighter__Group_2__0"
+
+
+    // $ANTLR start "rule__ChartHighlighter__Group_2__0__Impl"
+    // InternalChartDSL.g:6286:1: rule__ChartHighlighter__Group_2__0__Impl : ( ( rule__ChartHighlighter__TooltipAlwaysAssignment_2_0 )? ) ;
+    public final void rule__ChartHighlighter__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6290:1: ( ( ( rule__ChartHighlighter__TooltipAlwaysAssignment_2_0 )? ) )
+            // InternalChartDSL.g:6291:1: ( ( rule__ChartHighlighter__TooltipAlwaysAssignment_2_0 )? )
+            {
+            // InternalChartDSL.g:6291:1: ( ( rule__ChartHighlighter__TooltipAlwaysAssignment_2_0 )? )
+            // InternalChartDSL.g:6292:2: ( rule__ChartHighlighter__TooltipAlwaysAssignment_2_0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAssignment_2_0()); 
+            }
+            // InternalChartDSL.g:6293:2: ( rule__ChartHighlighter__TooltipAlwaysAssignment_2_0 )?
+            int alt68=2;
+            int LA68_0 = input.LA(1);
+
+            if ( (LA68_0==147) ) {
+                alt68=1;
+            }
+            switch (alt68) {
+                case 1 :
+                    // InternalChartDSL.g:6293:3: rule__ChartHighlighter__TooltipAlwaysAssignment_2_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartHighlighter__TooltipAlwaysAssignment_2_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAssignment_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartHighlighter__Group_2__0__Impl"
+
+
+    // $ANTLR start "rule__ChartHighlighter__Group_2__1"
+    // InternalChartDSL.g:6301:1: rule__ChartHighlighter__Group_2__1 : rule__ChartHighlighter__Group_2__1__Impl ;
+    public final void rule__ChartHighlighter__Group_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6305:1: ( rule__ChartHighlighter__Group_2__1__Impl )
+            // InternalChartDSL.g:6306:2: rule__ChartHighlighter__Group_2__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartHighlighter__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__ChartHighlighter__Group_2__1"
+
+
+    // $ANTLR start "rule__ChartHighlighter__Group_2__1__Impl"
+    // InternalChartDSL.g:6312:1: rule__ChartHighlighter__Group_2__1__Impl : ( ( rule__ChartHighlighter__InsideChartAssignment_2_1 )? ) ;
+    public final void rule__ChartHighlighter__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6316:1: ( ( ( rule__ChartHighlighter__InsideChartAssignment_2_1 )? ) )
+            // InternalChartDSL.g:6317:1: ( ( rule__ChartHighlighter__InsideChartAssignment_2_1 )? )
+            {
+            // InternalChartDSL.g:6317:1: ( ( rule__ChartHighlighter__InsideChartAssignment_2_1 )? )
+            // InternalChartDSL.g:6318:2: ( rule__ChartHighlighter__InsideChartAssignment_2_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartHighlighterAccess().getInsideChartAssignment_2_1()); 
+            }
+            // InternalChartDSL.g:6319:2: ( rule__ChartHighlighter__InsideChartAssignment_2_1 )?
+            int alt69=2;
+            int LA69_0 = input.LA(1);
+
+            if ( (LA69_0==51) ) {
+                alt69=1;
+            }
+            switch (alt69) {
+                case 1 :
+                    // InternalChartDSL.g:6319:3: rule__ChartHighlighter__InsideChartAssignment_2_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartHighlighter__InsideChartAssignment_2_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartHighlighterAccess().getInsideChartAssignment_2_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartHighlighter__Group_2__1__Impl"
+
+
+    // $ANTLR start "rule__ChartAxis__Group__0"
+    // InternalChartDSL.g:6328:1: rule__ChartAxis__Group__0 : rule__ChartAxis__Group__0__Impl rule__ChartAxis__Group__1 ;
+    public final void rule__ChartAxis__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6332:1: ( rule__ChartAxis__Group__0__Impl rule__ChartAxis__Group__1 )
+            // InternalChartDSL.g:6333:2: rule__ChartAxis__Group__0__Impl rule__ChartAxis__Group__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__ChartAxis__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartAxis__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartAxis__Group__0"
+
+
+    // $ANTLR start "rule__ChartAxis__Group__0__Impl"
+    // InternalChartDSL.g:6340:1: rule__ChartAxis__Group__0__Impl : ( 'axis' ) ;
+    public final void rule__ChartAxis__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6344:1: ( ( 'axis' ) )
+            // InternalChartDSL.g:6345:1: ( 'axis' )
+            {
+            // InternalChartDSL.g:6345:1: ( 'axis' )
+            // InternalChartDSL.g:6346:2: 'axis'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAxisAccess().getAxisKeyword_0()); 
+            }
+            match(input,90,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAxisAccess().getAxisKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartAxis__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ChartAxis__Group__1"
+    // InternalChartDSL.g:6355:1: rule__ChartAxis__Group__1 : rule__ChartAxis__Group__1__Impl rule__ChartAxis__Group__2 ;
+    public final void rule__ChartAxis__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6359:1: ( rule__ChartAxis__Group__1__Impl rule__ChartAxis__Group__2 )
+            // InternalChartDSL.g:6360:2: rule__ChartAxis__Group__1__Impl rule__ChartAxis__Group__2
+            {
+            pushFollow(FOLLOW_48);
+            rule__ChartAxis__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartAxis__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartAxis__Group__1"
+
+
+    // $ANTLR start "rule__ChartAxis__Group__1__Impl"
+    // InternalChartDSL.g:6367:1: rule__ChartAxis__Group__1__Impl : ( ( rule__ChartAxis__AxisAssignment_1 ) ) ;
+    public final void rule__ChartAxis__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6371:1: ( ( ( rule__ChartAxis__AxisAssignment_1 ) ) )
+            // InternalChartDSL.g:6372:1: ( ( rule__ChartAxis__AxisAssignment_1 ) )
+            {
+            // InternalChartDSL.g:6372:1: ( ( rule__ChartAxis__AxisAssignment_1 ) )
+            // InternalChartDSL.g:6373:2: ( rule__ChartAxis__AxisAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAxisAccess().getAxisAssignment_1()); 
+            }
+            // InternalChartDSL.g:6374:2: ( rule__ChartAxis__AxisAssignment_1 )
+            // InternalChartDSL.g:6374:3: rule__ChartAxis__AxisAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartAxis__AxisAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAxisAccess().getAxisAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartAxis__Group__1__Impl"
+
+
+    // $ANTLR start "rule__ChartAxis__Group__2"
+    // InternalChartDSL.g:6382:1: rule__ChartAxis__Group__2 : rule__ChartAxis__Group__2__Impl rule__ChartAxis__Group__3 ;
+    public final void rule__ChartAxis__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6386:1: ( rule__ChartAxis__Group__2__Impl rule__ChartAxis__Group__3 )
+            // InternalChartDSL.g:6387:2: rule__ChartAxis__Group__2__Impl rule__ChartAxis__Group__3
+            {
+            pushFollow(FOLLOW_49);
+            rule__ChartAxis__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartAxis__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartAxis__Group__2"
+
+
+    // $ANTLR start "rule__ChartAxis__Group__2__Impl"
+    // InternalChartDSL.g:6394:1: rule__ChartAxis__Group__2__Impl : ( 'renders' ) ;
+    public final void rule__ChartAxis__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6398:1: ( ( 'renders' ) )
+            // InternalChartDSL.g:6399:1: ( 'renders' )
+            {
+            // InternalChartDSL.g:6399:1: ( 'renders' )
+            // InternalChartDSL.g:6400:2: 'renders'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAxisAccess().getRendersKeyword_2()); 
+            }
+            match(input,91,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAxisAccess().getRendersKeyword_2()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartAxis__Group__2__Impl"
+
+
+    // $ANTLR start "rule__ChartAxis__Group__3"
+    // InternalChartDSL.g:6409:1: rule__ChartAxis__Group__3 : rule__ChartAxis__Group__3__Impl rule__ChartAxis__Group__4 ;
+    public final void rule__ChartAxis__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6413:1: ( rule__ChartAxis__Group__3__Impl rule__ChartAxis__Group__4 )
+            // InternalChartDSL.g:6414:2: rule__ChartAxis__Group__3__Impl rule__ChartAxis__Group__4
+            {
+            pushFollow(FOLLOW_50);
+            rule__ChartAxis__Group__3__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartAxis__Group__4();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartAxis__Group__3"
+
+
+    // $ANTLR start "rule__ChartAxis__Group__3__Impl"
+    // InternalChartDSL.g:6421:1: rule__ChartAxis__Group__3__Impl : ( ( rule__ChartAxis__RenderTypeAssignment_3 ) ) ;
+    public final void rule__ChartAxis__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6425:1: ( ( ( rule__ChartAxis__RenderTypeAssignment_3 ) ) )
+            // InternalChartDSL.g:6426:1: ( ( rule__ChartAxis__RenderTypeAssignment_3 ) )
+            {
+            // InternalChartDSL.g:6426:1: ( ( rule__ChartAxis__RenderTypeAssignment_3 ) )
+            // InternalChartDSL.g:6427:2: ( rule__ChartAxis__RenderTypeAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAxisAccess().getRenderTypeAssignment_3()); 
+            }
+            // InternalChartDSL.g:6428:2: ( rule__ChartAxis__RenderTypeAssignment_3 )
+            // InternalChartDSL.g:6428:3: rule__ChartAxis__RenderTypeAssignment_3
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartAxis__RenderTypeAssignment_3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAxisAccess().getRenderTypeAssignment_3()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartAxis__Group__3__Impl"
+
+
+    // $ANTLR start "rule__ChartAxis__Group__4"
+    // InternalChartDSL.g:6436:1: rule__ChartAxis__Group__4 : rule__ChartAxis__Group__4__Impl rule__ChartAxis__Group__5 ;
+    public final void rule__ChartAxis__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6440:1: ( rule__ChartAxis__Group__4__Impl rule__ChartAxis__Group__5 )
+            // InternalChartDSL.g:6441:2: rule__ChartAxis__Group__4__Impl rule__ChartAxis__Group__5
+            {
+            pushFollow(FOLLOW_50);
+            rule__ChartAxis__Group__4__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartAxis__Group__5();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartAxis__Group__4"
+
+
+    // $ANTLR start "rule__ChartAxis__Group__4__Impl"
+    // InternalChartDSL.g:6448:1: rule__ChartAxis__Group__4__Impl : ( ( rule__ChartAxis__ShortLabelAssignment_4 )? ) ;
+    public final void rule__ChartAxis__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6452:1: ( ( ( rule__ChartAxis__ShortLabelAssignment_4 )? ) )
+            // InternalChartDSL.g:6453:1: ( ( rule__ChartAxis__ShortLabelAssignment_4 )? )
+            {
+            // InternalChartDSL.g:6453:1: ( ( rule__ChartAxis__ShortLabelAssignment_4 )? )
+            // InternalChartDSL.g:6454:2: ( rule__ChartAxis__ShortLabelAssignment_4 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAxisAccess().getShortLabelAssignment_4()); 
+            }
+            // InternalChartDSL.g:6455:2: ( rule__ChartAxis__ShortLabelAssignment_4 )?
+            int alt70=2;
+            int LA70_0 = input.LA(1);
+
+            if ( (LA70_0==148) ) {
+                alt70=1;
+            }
+            switch (alt70) {
+                case 1 :
+                    // InternalChartDSL.g:6455:3: rule__ChartAxis__ShortLabelAssignment_4
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartAxis__ShortLabelAssignment_4();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAxisAccess().getShortLabelAssignment_4()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartAxis__Group__4__Impl"
+
+
+    // $ANTLR start "rule__ChartAxis__Group__5"
+    // InternalChartDSL.g:6463:1: rule__ChartAxis__Group__5 : rule__ChartAxis__Group__5__Impl ;
+    public final void rule__ChartAxis__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6467:1: ( rule__ChartAxis__Group__5__Impl )
+            // InternalChartDSL.g:6468:2: rule__ChartAxis__Group__5__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartAxis__Group__5__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartAxis__Group__5"
+
+
+    // $ANTLR start "rule__ChartAxis__Group__5__Impl"
+    // InternalChartDSL.g:6474:1: rule__ChartAxis__Group__5__Impl : ( ( rule__ChartAxis__Group_5__0 )? ) ;
+    public final void rule__ChartAxis__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6478:1: ( ( ( rule__ChartAxis__Group_5__0 )? ) )
+            // InternalChartDSL.g:6479:1: ( ( rule__ChartAxis__Group_5__0 )? )
+            {
+            // InternalChartDSL.g:6479:1: ( ( rule__ChartAxis__Group_5__0 )? )
+            // InternalChartDSL.g:6480:2: ( rule__ChartAxis__Group_5__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAxisAccess().getGroup_5()); 
+            }
+            // InternalChartDSL.g:6481:2: ( rule__ChartAxis__Group_5__0 )?
+            int alt71=2;
+            int LA71_0 = input.LA(1);
+
+            if ( (LA71_0==92) ) {
+                alt71=1;
+            }
+            switch (alt71) {
+                case 1 :
+                    // InternalChartDSL.g:6481:3: rule__ChartAxis__Group_5__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartAxis__Group_5__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAxisAccess().getGroup_5()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartAxis__Group__5__Impl"
+
+
+    // $ANTLR start "rule__ChartAxis__Group_5__0"
+    // InternalChartDSL.g:6490:1: rule__ChartAxis__Group_5__0 : rule__ChartAxis__Group_5__0__Impl rule__ChartAxis__Group_5__1 ;
+    public final void rule__ChartAxis__Group_5__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6494:1: ( rule__ChartAxis__Group_5__0__Impl rule__ChartAxis__Group_5__1 )
+            // InternalChartDSL.g:6495:2: rule__ChartAxis__Group_5__0__Impl rule__ChartAxis__Group_5__1
+            {
+            pushFollow(FOLLOW_38);
+            rule__ChartAxis__Group_5__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartAxis__Group_5__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartAxis__Group_5__0"
+
+
+    // $ANTLR start "rule__ChartAxis__Group_5__0__Impl"
+    // InternalChartDSL.g:6502:1: rule__ChartAxis__Group_5__0__Impl : ( 'angle' ) ;
+    public final void rule__ChartAxis__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6506:1: ( ( 'angle' ) )
+            // InternalChartDSL.g:6507:1: ( 'angle' )
+            {
+            // InternalChartDSL.g:6507:1: ( 'angle' )
+            // InternalChartDSL.g:6508:2: 'angle'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAxisAccess().getAngleKeyword_5_0()); 
+            }
+            match(input,92,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAxisAccess().getAngleKeyword_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartAxis__Group_5__0__Impl"
+
+
+    // $ANTLR start "rule__ChartAxis__Group_5__1"
+    // InternalChartDSL.g:6517:1: rule__ChartAxis__Group_5__1 : rule__ChartAxis__Group_5__1__Impl ;
+    public final void rule__ChartAxis__Group_5__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6521:1: ( rule__ChartAxis__Group_5__1__Impl )
+            // InternalChartDSL.g:6522:2: rule__ChartAxis__Group_5__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartAxis__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__ChartAxis__Group_5__1"
+
+
+    // $ANTLR start "rule__ChartAxis__Group_5__1__Impl"
+    // InternalChartDSL.g:6528:1: rule__ChartAxis__Group_5__1__Impl : ( ( rule__ChartAxis__AngleAssignment_5_1 ) ) ;
+    public final void rule__ChartAxis__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6532:1: ( ( ( rule__ChartAxis__AngleAssignment_5_1 ) ) )
+            // InternalChartDSL.g:6533:1: ( ( rule__ChartAxis__AngleAssignment_5_1 ) )
+            {
+            // InternalChartDSL.g:6533:1: ( ( rule__ChartAxis__AngleAssignment_5_1 ) )
+            // InternalChartDSL.g:6534:2: ( rule__ChartAxis__AngleAssignment_5_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAxisAccess().getAngleAssignment_5_1()); 
+            }
+            // InternalChartDSL.g:6535:2: ( rule__ChartAxis__AngleAssignment_5_1 )
+            // InternalChartDSL.g:6535:3: rule__ChartAxis__AngleAssignment_5_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartAxis__AngleAssignment_5_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAxisAccess().getAngleAssignment_5_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartAxis__Group_5__1__Impl"
+
+
+    // $ANTLR start "rule__ChartSegmentColor__Group__0"
+    // InternalChartDSL.g:6544:1: rule__ChartSegmentColor__Group__0 : rule__ChartSegmentColor__Group__0__Impl rule__ChartSegmentColor__Group__1 ;
+    public final void rule__ChartSegmentColor__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6548:1: ( rule__ChartSegmentColor__Group__0__Impl rule__ChartSegmentColor__Group__1 )
+            // InternalChartDSL.g:6549:2: rule__ChartSegmentColor__Group__0__Impl rule__ChartSegmentColor__Group__1
+            {
+            pushFollow(FOLLOW_16);
+            rule__ChartSegmentColor__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__ChartSegmentColor__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartSegmentColor__Group__0"
+
+
+    // $ANTLR start "rule__ChartSegmentColor__Group__0__Impl"
+    // InternalChartDSL.g:6556:1: rule__ChartSegmentColor__Group__0__Impl : ( 'segmentcolor' ) ;
+    public final void rule__ChartSegmentColor__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6560:1: ( ( 'segmentcolor' ) )
+            // InternalChartDSL.g:6561:1: ( 'segmentcolor' )
+            {
+            // InternalChartDSL.g:6561:1: ( 'segmentcolor' )
+            // InternalChartDSL.g:6562:2: 'segmentcolor'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartSegmentColorAccess().getSegmentcolorKeyword_0()); 
+            }
+            match(input,93,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartSegmentColorAccess().getSegmentcolorKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartSegmentColor__Group__0__Impl"
+
+
+    // $ANTLR start "rule__ChartSegmentColor__Group__1"
+    // InternalChartDSL.g:6571:1: rule__ChartSegmentColor__Group__1 : rule__ChartSegmentColor__Group__1__Impl ;
+    public final void rule__ChartSegmentColor__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6575:1: ( rule__ChartSegmentColor__Group__1__Impl )
+            // InternalChartDSL.g:6576:2: rule__ChartSegmentColor__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartSegmentColor__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartSegmentColor__Group__1"
+
+
+    // $ANTLR start "rule__ChartSegmentColor__Group__1__Impl"
+    // InternalChartDSL.g:6582:1: rule__ChartSegmentColor__Group__1__Impl : ( ( rule__ChartSegmentColor__RgbAssignment_1 ) ) ;
+    public final void rule__ChartSegmentColor__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6586:1: ( ( ( rule__ChartSegmentColor__RgbAssignment_1 ) ) )
+            // InternalChartDSL.g:6587:1: ( ( rule__ChartSegmentColor__RgbAssignment_1 ) )
+            {
+            // InternalChartDSL.g:6587:1: ( ( rule__ChartSegmentColor__RgbAssignment_1 ) )
+            // InternalChartDSL.g:6588:2: ( rule__ChartSegmentColor__RgbAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartSegmentColorAccess().getRgbAssignment_1()); 
+            }
+            // InternalChartDSL.g:6589:2: ( rule__ChartSegmentColor__RgbAssignment_1 )
+            // InternalChartDSL.g:6589:3: rule__ChartSegmentColor__RgbAssignment_1
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartSegmentColor__RgbAssignment_1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartSegmentColorAccess().getRgbAssignment_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartSegmentColor__Group__1__Impl"
+
+
+    // $ANTLR start "rule__SignedNumber__Group__0"
+    // InternalChartDSL.g:6598:1: rule__SignedNumber__Group__0 : rule__SignedNumber__Group__0__Impl rule__SignedNumber__Group__1 ;
+    public final void rule__SignedNumber__Group__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6602:1: ( rule__SignedNumber__Group__0__Impl rule__SignedNumber__Group__1 )
+            // InternalChartDSL.g:6603:2: rule__SignedNumber__Group__0__Impl rule__SignedNumber__Group__1
+            {
+            pushFollow(FOLLOW_38);
+            rule__SignedNumber__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__SignedNumber__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignedNumber__Group__0"
+
+
+    // $ANTLR start "rule__SignedNumber__Group__0__Impl"
+    // InternalChartDSL.g:6610:1: rule__SignedNumber__Group__0__Impl : ( ( '-' )? ) ;
+    public final void rule__SignedNumber__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6614:1: ( ( ( '-' )? ) )
+            // InternalChartDSL.g:6615:1: ( ( '-' )? )
+            {
+            // InternalChartDSL.g:6615:1: ( ( '-' )? )
+            // InternalChartDSL.g:6616:2: ( '-' )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignedNumberAccess().getHyphenMinusKeyword_0()); 
+            }
+            // InternalChartDSL.g:6617:2: ( '-' )?
+            int alt72=2;
+            int LA72_0 = input.LA(1);
+
+            if ( (LA72_0==35) ) {
+                alt72=1;
+            }
+            switch (alt72) {
+                case 1 :
+                    // InternalChartDSL.g:6617:3: '-'
+                    {
+                    match(input,35,FOLLOW_2); if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignedNumberAccess().getHyphenMinusKeyword_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignedNumber__Group__0__Impl"
+
+
+    // $ANTLR start "rule__SignedNumber__Group__1"
+    // InternalChartDSL.g:6625:1: rule__SignedNumber__Group__1 : rule__SignedNumber__Group__1__Impl ;
+    public final void rule__SignedNumber__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6629:1: ( rule__SignedNumber__Group__1__Impl )
+            // InternalChartDSL.g:6630:2: rule__SignedNumber__Group__1__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__SignedNumber__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignedNumber__Group__1"
+
+
+    // $ANTLR start "rule__SignedNumber__Group__1__Impl"
+    // InternalChartDSL.g:6636:1: rule__SignedNumber__Group__1__Impl : ( RULE_INT ) ;
+    public final void rule__SignedNumber__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6640:1: ( ( RULE_INT ) )
+            // InternalChartDSL.g:6641:1: ( RULE_INT )
+            {
+            // InternalChartDSL.g:6641:1: ( RULE_INT )
+            // InternalChartDSL.g:6642:2: RULE_INT
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getSignedNumberAccess().getINTTerminalRuleCall_1()); 
+            }
+            match(input,RULE_INT,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getSignedNumberAccess().getINTTerminalRuleCall_1()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__SignedNumber__Group__1__Impl"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group__0"
+    // InternalChartDSL.g:6652: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 {
+            // InternalChartDSL.g:6656:1: ( rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1 )
+            // InternalChartDSL.g:6657:2: rule__XImportDeclaration__Group__0__Impl rule__XImportDeclaration__Group__1
+            {
+            pushFollow(FOLLOW_51);
+            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"
+    // InternalChartDSL.g:6664:1: rule__XImportDeclaration__Group__0__Impl : ( () ) ;
+    public final void rule__XImportDeclaration__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6668:1: ( ( () ) )
+            // InternalChartDSL.g:6669:1: ( () )
+            {
+            // InternalChartDSL.g:6669:1: ( () )
+            // InternalChartDSL.g:6670:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getOXImportDeclarationAction_0()); 
+            }
+            // InternalChartDSL.g:6671:2: ()
+            // InternalChartDSL.g:6671: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"
+    // InternalChartDSL.g:6679: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 {
+            // InternalChartDSL.g:6683:1: ( rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2 )
+            // InternalChartDSL.g:6684:2: rule__XImportDeclaration__Group__1__Impl rule__XImportDeclaration__Group__2
+            {
+            pushFollow(FOLLOW_52);
+            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"
+    // InternalChartDSL.g:6691:1: rule__XImportDeclaration__Group__1__Impl : ( 'import' ) ;
+    public final void rule__XImportDeclaration__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6695:1: ( ( 'import' ) )
+            // InternalChartDSL.g:6696:1: ( 'import' )
+            {
+            // InternalChartDSL.g:6696:1: ( 'import' )
+            // InternalChartDSL.g:6697: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"
+    // InternalChartDSL.g:6706: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 {
+            // InternalChartDSL.g:6710:1: ( rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3 )
+            // InternalChartDSL.g:6711:2: rule__XImportDeclaration__Group__2__Impl rule__XImportDeclaration__Group__3
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalChartDSL.g:6718:1: rule__XImportDeclaration__Group__2__Impl : ( ( rule__XImportDeclaration__Alternatives_2 ) ) ;
+    public final void rule__XImportDeclaration__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6722:1: ( ( ( rule__XImportDeclaration__Alternatives_2 ) ) )
+            // InternalChartDSL.g:6723:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
+            {
+            // InternalChartDSL.g:6723:1: ( ( rule__XImportDeclaration__Alternatives_2 ) )
+            // InternalChartDSL.g:6724:2: ( rule__XImportDeclaration__Alternatives_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getAlternatives_2()); 
+            }
+            // InternalChartDSL.g:6725:2: ( rule__XImportDeclaration__Alternatives_2 )
+            // InternalChartDSL.g:6725: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"
+    // InternalChartDSL.g:6733:1: rule__XImportDeclaration__Group__3 : rule__XImportDeclaration__Group__3__Impl ;
+    public final void rule__XImportDeclaration__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6737:1: ( rule__XImportDeclaration__Group__3__Impl )
+            // InternalChartDSL.g:6738: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"
+    // InternalChartDSL.g:6744:1: rule__XImportDeclaration__Group__3__Impl : ( ( ';' )? ) ;
+    public final void rule__XImportDeclaration__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6748:1: ( ( ( ';' )? ) )
+            // InternalChartDSL.g:6749:1: ( ( ';' )? )
+            {
+            // InternalChartDSL.g:6749:1: ( ( ';' )? )
+            // InternalChartDSL.g:6750:2: ( ';' )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getSemicolonKeyword_3()); 
+            }
+            // InternalChartDSL.g:6751:2: ( ';' )?
+            int alt73=2;
+            int LA73_0 = input.LA(1);
+
+            if ( (LA73_0==94) ) {
+                alt73=1;
+            }
+            switch (alt73) {
+                case 1 :
+                    // InternalChartDSL.g:6751:3: ';'
+                    {
+                    match(input,94,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"
+    // InternalChartDSL.g:6760: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 {
+            // InternalChartDSL.g:6764:1: ( rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1 )
+            // InternalChartDSL.g:6765:2: rule__XImportDeclaration__Group_2_0__0__Impl rule__XImportDeclaration__Group_2_0__1
+            {
+            pushFollow(FOLLOW_54);
+            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"
+    // InternalChartDSL.g:6772: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 {
+            // InternalChartDSL.g:6776:1: ( ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) ) )
+            // InternalChartDSL.g:6777:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
+            {
+            // InternalChartDSL.g:6777:1: ( ( rule__XImportDeclaration__StaticAssignment_2_0_0 ) )
+            // InternalChartDSL.g:6778:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getStaticAssignment_2_0_0()); 
+            }
+            // InternalChartDSL.g:6779:2: ( rule__XImportDeclaration__StaticAssignment_2_0_0 )
+            // InternalChartDSL.g:6779: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"
+    // InternalChartDSL.g:6787: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 {
+            // InternalChartDSL.g:6791:1: ( rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2 )
+            // InternalChartDSL.g:6792:2: rule__XImportDeclaration__Group_2_0__1__Impl rule__XImportDeclaration__Group_2_0__2
+            {
+            pushFollow(FOLLOW_54);
+            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"
+    // InternalChartDSL.g:6799: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 {
+            // InternalChartDSL.g:6803:1: ( ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? ) )
+            // InternalChartDSL.g:6804:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
+            {
+            // InternalChartDSL.g:6804:1: ( ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )? )
+            // InternalChartDSL.g:6805:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getExtensionAssignment_2_0_1()); 
+            }
+            // InternalChartDSL.g:6806:2: ( rule__XImportDeclaration__ExtensionAssignment_2_0_1 )?
+            int alt74=2;
+            int LA74_0 = input.LA(1);
+
+            if ( (LA74_0==48) ) {
+                alt74=1;
+            }
+            switch (alt74) {
+                case 1 :
+                    // InternalChartDSL.g:6806: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"
+    // InternalChartDSL.g:6814: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 {
+            // InternalChartDSL.g:6818:1: ( rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3 )
+            // InternalChartDSL.g:6819:2: rule__XImportDeclaration__Group_2_0__2__Impl rule__XImportDeclaration__Group_2_0__3
+            {
+            pushFollow(FOLLOW_55);
+            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"
+    // InternalChartDSL.g:6826: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 {
+            // InternalChartDSL.g:6830:1: ( ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) ) )
+            // InternalChartDSL.g:6831:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
+            {
+            // InternalChartDSL.g:6831:1: ( ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 ) )
+            // InternalChartDSL.g:6832:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportedTypeAssignment_2_0_2()); 
+            }
+            // InternalChartDSL.g:6833:2: ( rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 )
+            // InternalChartDSL.g:6833: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"
+    // InternalChartDSL.g:6841: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 {
+            // InternalChartDSL.g:6845:1: ( rule__XImportDeclaration__Group_2_0__3__Impl )
+            // InternalChartDSL.g:6846: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"
+    // InternalChartDSL.g:6852: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 {
+            // InternalChartDSL.g:6856:1: ( ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) ) )
+            // InternalChartDSL.g:6857:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
+            {
+            // InternalChartDSL.g:6857:1: ( ( rule__XImportDeclaration__Alternatives_2_0_3 ) )
+            // InternalChartDSL.g:6858:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getAlternatives_2_0_3()); 
+            }
+            // InternalChartDSL.g:6859:2: ( rule__XImportDeclaration__Alternatives_2_0_3 )
+            // InternalChartDSL.g:6859: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"
+    // InternalChartDSL.g:6868: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 {
+            // InternalChartDSL.g:6872:1: ( rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1 )
+            // InternalChartDSL.g:6873:2: rule__XImportDeclaration__Group_2_3__0__Impl rule__XImportDeclaration__Group_2_3__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__XImportDeclaration__Group_2_3__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XImportDeclaration__Group_2_3__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XImportDeclaration__Group_2_3__0"
+
+
+    // $ANTLR start "rule__XImportDeclaration__Group_2_3__0__Impl"
+    // InternalChartDSL.g:6880: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 {
+            // InternalChartDSL.g:6884:1: ( ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) ) )
+            // InternalChartDSL.g:6885:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
+            {
+            // InternalChartDSL.g:6885:1: ( ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 ) )
+            // InternalChartDSL.g:6886:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getFqnImportAssignment_2_3_0()); 
+            }
+            // InternalChartDSL.g:6887:2: ( rule__XImportDeclaration__FqnImportAssignment_2_3_0 )
+            // InternalChartDSL.g:6887: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"
+    // InternalChartDSL.g:6895: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 {
+            // InternalChartDSL.g:6899:1: ( rule__XImportDeclaration__Group_2_3__1__Impl )
+            // InternalChartDSL.g:6900: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"
+    // InternalChartDSL.g:6906: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 {
+            // InternalChartDSL.g:6910:1: ( ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) ) )
+            // InternalChartDSL.g:6911:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
+            {
+            // InternalChartDSL.g:6911:1: ( ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 ) )
+            // InternalChartDSL.g:6912:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameAssignment_2_3_1()); 
+            }
+            // InternalChartDSL.g:6913:2: ( rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 )
+            // InternalChartDSL.g:6913: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"
+    // InternalChartDSL.g:6922: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 {
+            // InternalChartDSL.g:6926:1: ( rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1 )
+            // InternalChartDSL.g:6927:2: rule__XAnnotation__Group__0__Impl rule__XAnnotation__Group__1
+            {
+            pushFollow(FOLLOW_56);
+            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"
+    // InternalChartDSL.g:6934:1: rule__XAnnotation__Group__0__Impl : ( () ) ;
+    public final void rule__XAnnotation__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6938:1: ( ( () ) )
+            // InternalChartDSL.g:6939:1: ( () )
+            {
+            // InternalChartDSL.g:6939:1: ( () )
+            // InternalChartDSL.g:6940:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getXAnnotationAction_0()); 
+            }
+            // InternalChartDSL.g:6941:2: ()
+            // InternalChartDSL.g:6941: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"
+    // InternalChartDSL.g:6949: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 {
+            // InternalChartDSL.g:6953:1: ( rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2 )
+            // InternalChartDSL.g:6954:2: rule__XAnnotation__Group__1__Impl rule__XAnnotation__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__XAnnotation__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotation__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group__1"
+
+
+    // $ANTLR start "rule__XAnnotation__Group__1__Impl"
+    // InternalChartDSL.g:6961:1: rule__XAnnotation__Group__1__Impl : ( '@' ) ;
+    public final void rule__XAnnotation__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6965:1: ( ( '@' ) )
+            // InternalChartDSL.g:6966:1: ( '@' )
+            {
+            // InternalChartDSL.g:6966:1: ( '@' )
+            // InternalChartDSL.g:6967:2: '@'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getCommercialAtKeyword_1()); 
+            }
+            match(input,95,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"
+    // InternalChartDSL.g:6976: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 {
+            // InternalChartDSL.g:6980:1: ( rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3 )
+            // InternalChartDSL.g:6981:2: rule__XAnnotation__Group__2__Impl rule__XAnnotation__Group__3
+            {
+            pushFollow(FOLLOW_57);
+            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"
+    // InternalChartDSL.g:6988:1: rule__XAnnotation__Group__2__Impl : ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) ;
+    public final void rule__XAnnotation__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:6992:1: ( ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) ) )
+            // InternalChartDSL.g:6993:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
+            {
+            // InternalChartDSL.g:6993:1: ( ( rule__XAnnotation__AnnotationTypeAssignment_2 ) )
+            // InternalChartDSL.g:6994:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getAnnotationTypeAssignment_2()); 
+            }
+            // InternalChartDSL.g:6995:2: ( rule__XAnnotation__AnnotationTypeAssignment_2 )
+            // InternalChartDSL.g:6995: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"
+    // InternalChartDSL.g:7003:1: rule__XAnnotation__Group__3 : rule__XAnnotation__Group__3__Impl ;
+    public final void rule__XAnnotation__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:7007:1: ( rule__XAnnotation__Group__3__Impl )
+            // InternalChartDSL.g:7008: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"
+    // InternalChartDSL.g:7014: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 {
+            // InternalChartDSL.g:7018:1: ( ( ( rule__XAnnotation__Group_3__0 )? ) )
+            // InternalChartDSL.g:7019:1: ( ( rule__XAnnotation__Group_3__0 )? )
+            {
+            // InternalChartDSL.g:7019:1: ( ( rule__XAnnotation__Group_3__0 )? )
+            // InternalChartDSL.g:7020:2: ( rule__XAnnotation__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getGroup_3()); 
+            }
+            // InternalChartDSL.g:7021:2: ( rule__XAnnotation__Group_3__0 )?
+            int alt75=2;
+            int LA75_0 = input.LA(1);
+
+            if ( (LA75_0==96) ) {
+                alt75=1;
+            }
+            switch (alt75) {
+                case 1 :
+                    // InternalChartDSL.g:7021: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"
+    // InternalChartDSL.g:7030: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 {
+            // InternalChartDSL.g:7034:1: ( rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1 )
+            // InternalChartDSL.g:7035:2: rule__XAnnotation__Group_3__0__Impl rule__XAnnotation__Group_3__1
+            {
+            pushFollow(FOLLOW_58);
+            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"
+    // InternalChartDSL.g:7042:1: rule__XAnnotation__Group_3__0__Impl : ( ( '(' ) ) ;
+    public final void rule__XAnnotation__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:7046:1: ( ( ( '(' ) ) )
+            // InternalChartDSL.g:7047:1: ( ( '(' ) )
+            {
+            // InternalChartDSL.g:7047:1: ( ( '(' ) )
+            // InternalChartDSL.g:7048:2: ( '(' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getLeftParenthesisKeyword_3_0()); 
+            }
+            // InternalChartDSL.g:7049:2: ( '(' )
+            // InternalChartDSL.g:7049:3: '('
+            {
+            match(input,96,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"
+    // InternalChartDSL.g:7057: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 {
+            // InternalChartDSL.g:7061:1: ( rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2 )
+            // InternalChartDSL.g:7062:2: rule__XAnnotation__Group_3__1__Impl rule__XAnnotation__Group_3__2
+            {
+            pushFollow(FOLLOW_58);
+            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"
+    // InternalChartDSL.g:7069: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 {
+            // InternalChartDSL.g:7073:1: ( ( ( rule__XAnnotation__Alternatives_3_1 )? ) )
+            // InternalChartDSL.g:7074:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
+            {
+            // InternalChartDSL.g:7074:1: ( ( rule__XAnnotation__Alternatives_3_1 )? )
+            // InternalChartDSL.g:7075:2: ( rule__XAnnotation__Alternatives_3_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getAlternatives_3_1()); 
+            }
+            // InternalChartDSL.g:7076:2: ( rule__XAnnotation__Alternatives_3_1 )?
+            int alt76=2;
+            int LA76_0 = input.LA(1);
+
+            if ( ((LA76_0>=RULE_STRING && LA76_0<=RULE_DECIMAL)||LA76_0==27||(LA76_0>=34 && LA76_0<=35)||LA76_0==40||(LA76_0>=45 && LA76_0<=50)||LA76_0==72||(LA76_0>=95 && LA76_0<=96)||(LA76_0>=100 && LA76_0<=101)||LA76_0==103||LA76_0==105||(LA76_0>=109 && LA76_0<=117)||LA76_0==119||LA76_0==154) ) {
+                alt76=1;
+            }
+            switch (alt76) {
+                case 1 :
+                    // InternalChartDSL.g:7076: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"
+    // InternalChartDSL.g:7084: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 {
+            // InternalChartDSL.g:7088:1: ( rule__XAnnotation__Group_3__2__Impl )
+            // InternalChartDSL.g:7089: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"
+    // InternalChartDSL.g:7095:1: rule__XAnnotation__Group_3__2__Impl : ( ')' ) ;
+    public final void rule__XAnnotation__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:7099:1: ( ( ')' ) )
+            // InternalChartDSL.g:7100:1: ( ')' )
+            {
+            // InternalChartDSL.g:7100:1: ( ')' )
+            // InternalChartDSL.g:7101:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2()); 
+            }
+            match(input,97,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"
+    // InternalChartDSL.g:7111: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 {
+            // InternalChartDSL.g:7115:1: ( rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1 )
+            // InternalChartDSL.g:7116:2: rule__XAnnotation__Group_3_1_0__0__Impl rule__XAnnotation__Group_3_1_0__1
+            {
+            pushFollow(FOLLOW_59);
+            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"
+    // InternalChartDSL.g:7123: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 {
+            // InternalChartDSL.g:7127:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) ) )
+            // InternalChartDSL.g:7128:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
+            {
+            // InternalChartDSL.g:7128:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 ) )
+            // InternalChartDSL.g:7129:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_0()); 
+            }
+            // InternalChartDSL.g:7130:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_0 )
+            // InternalChartDSL.g:7130: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"
+    // InternalChartDSL.g:7138: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 {
+            // InternalChartDSL.g:7142:1: ( rule__XAnnotation__Group_3_1_0__1__Impl )
+            // InternalChartDSL.g:7143: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"
+    // InternalChartDSL.g:7149: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 {
+            // InternalChartDSL.g:7153:1: ( ( ( rule__XAnnotation__Group_3_1_0_1__0 )* ) )
+            // InternalChartDSL.g:7154:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
+            {
+            // InternalChartDSL.g:7154:1: ( ( rule__XAnnotation__Group_3_1_0_1__0 )* )
+            // InternalChartDSL.g:7155:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0_1()); 
+            }
+            // InternalChartDSL.g:7156:2: ( rule__XAnnotation__Group_3_1_0_1__0 )*
+            loop77:
+            do {
+                int alt77=2;
+                int LA77_0 = input.LA(1);
+
+                if ( (LA77_0==98) ) {
+                    alt77=1;
+                }
+
+
+                switch (alt77) {
+            	case 1 :
+            	    // InternalChartDSL.g:7156:3: rule__XAnnotation__Group_3_1_0_1__0
+            	    {
+            	    pushFollow(FOLLOW_60);
+            	    rule__XAnnotation__Group_3_1_0_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop77;
+                }
+            } 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"
+    // InternalChartDSL.g:7165: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 {
+            // InternalChartDSL.g:7169:1: ( rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1 )
+            // InternalChartDSL.g:7170:2: rule__XAnnotation__Group_3_1_0_1__0__Impl rule__XAnnotation__Group_3_1_0_1__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__XAnnotation__Group_3_1_0_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XAnnotation__Group_3_1_0_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XAnnotation__Group_3_1_0_1__0"
+
+
+    // $ANTLR start "rule__XAnnotation__Group_3_1_0_1__0__Impl"
+    // InternalChartDSL.g:7177: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 {
+            // InternalChartDSL.g:7181:1: ( ( ',' ) )
+            // InternalChartDSL.g:7182:1: ( ',' )
+            {
+            // InternalChartDSL.g:7182:1: ( ',' )
+            // InternalChartDSL.g:7183:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0()); 
+            }
+            match(input,98,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"
+    // InternalChartDSL.g:7192: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 {
+            // InternalChartDSL.g:7196:1: ( rule__XAnnotation__Group_3_1_0_1__1__Impl )
+            // InternalChartDSL.g:7197: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"
+    // InternalChartDSL.g:7203: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 {
+            // InternalChartDSL.g:7207:1: ( ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) ) )
+            // InternalChartDSL.g:7208:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
+            {
+            // InternalChartDSL.g:7208:1: ( ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 ) )
+            // InternalChartDSL.g:7209:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getElementValuePairsAssignment_3_1_0_1_1()); 
+            }
+            // InternalChartDSL.g:7210:2: ( rule__XAnnotation__ElementValuePairsAssignment_3_1_0_1_1 )
+            // InternalChartDSL.g:7210: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"
+    // InternalChartDSL.g:7219: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 {
+            // InternalChartDSL.g:7223:1: ( rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1 )
+            // InternalChartDSL.g:7224:2: rule__XAnnotationElementValuePair__Group__0__Impl rule__XAnnotationElementValuePair__Group__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:7231: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 {
+            // InternalChartDSL.g:7235:1: ( ( ( rule__XAnnotationElementValuePair__Group_0__0 ) ) )
+            // InternalChartDSL.g:7236:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
+            {
+            // InternalChartDSL.g:7236:1: ( ( rule__XAnnotationElementValuePair__Group_0__0 ) )
+            // InternalChartDSL.g:7237:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0()); 
+            }
+            // InternalChartDSL.g:7238:2: ( rule__XAnnotationElementValuePair__Group_0__0 )
+            // InternalChartDSL.g:7238: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"
+    // InternalChartDSL.g:7246:1: rule__XAnnotationElementValuePair__Group__1 : rule__XAnnotationElementValuePair__Group__1__Impl ;
+    public final void rule__XAnnotationElementValuePair__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:7250:1: ( rule__XAnnotationElementValuePair__Group__1__Impl )
+            // InternalChartDSL.g:7251: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"
+    // InternalChartDSL.g:7257:1: rule__XAnnotationElementValuePair__Group__1__Impl : ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) ;
+    public final void rule__XAnnotationElementValuePair__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:7261:1: ( ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) ) )
+            // InternalChartDSL.g:7262:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
+            {
+            // InternalChartDSL.g:7262:1: ( ( rule__XAnnotationElementValuePair__ValueAssignment_1 ) )
+            // InternalChartDSL.g:7263:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getValueAssignment_1()); 
+            }
+            // InternalChartDSL.g:7264:2: ( rule__XAnnotationElementValuePair__ValueAssignment_1 )
+            // InternalChartDSL.g:7264: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"
+    // InternalChartDSL.g:7273: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 {
+            // InternalChartDSL.g:7277:1: ( rule__XAnnotationElementValuePair__Group_0__0__Impl )
+            // InternalChartDSL.g:7278: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"
+    // InternalChartDSL.g:7284: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 {
+            // InternalChartDSL.g:7288:1: ( ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) ) )
+            // InternalChartDSL.g:7289:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
+            {
+            // InternalChartDSL.g:7289:1: ( ( rule__XAnnotationElementValuePair__Group_0_0__0 ) )
+            // InternalChartDSL.g:7290:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getGroup_0_0()); 
+            }
+            // InternalChartDSL.g:7291:2: ( rule__XAnnotationElementValuePair__Group_0_0__0 )
+            // InternalChartDSL.g:7291: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"
+    // InternalChartDSL.g:7300: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 {
+            // InternalChartDSL.g:7304:1: ( rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1 )
+            // InternalChartDSL.g:7305:2: rule__XAnnotationElementValuePair__Group_0_0__0__Impl rule__XAnnotationElementValuePair__Group_0_0__1
+            {
+            pushFollow(FOLLOW_62);
+            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"
+    // InternalChartDSL.g:7312: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 {
+            // InternalChartDSL.g:7316:1: ( ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) ) )
+            // InternalChartDSL.g:7317:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
+            {
+            // InternalChartDSL.g:7317:1: ( ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 ) )
+            // InternalChartDSL.g:7318:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getElementAssignment_0_0_0()); 
+            }
+            // InternalChartDSL.g:7319:2: ( rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 )
+            // InternalChartDSL.g:7319: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"
+    // InternalChartDSL.g:7327: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 {
+            // InternalChartDSL.g:7331:1: ( rule__XAnnotationElementValuePair__Group_0_0__1__Impl )
+            // InternalChartDSL.g:7332: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"
+    // InternalChartDSL.g:7338:1: rule__XAnnotationElementValuePair__Group_0_0__1__Impl : ( '=' ) ;
+    public final void rule__XAnnotationElementValuePair__Group_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:7342:1: ( ( '=' ) )
+            // InternalChartDSL.g:7343:1: ( '=' )
+            {
+            // InternalChartDSL.g:7343:1: ( '=' )
+            // InternalChartDSL.g:7344: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"
+    // InternalChartDSL.g:7354: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 {
+            // InternalChartDSL.g:7358:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1 )
+            // InternalChartDSL.g:7359:2: rule__XAnnotationElementValueOrCommaList__Group_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0__1
+            {
+            pushFollow(FOLLOW_63);
+            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"
+    // InternalChartDSL.g:7366: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 {
+            // InternalChartDSL.g:7370:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) ) )
+            // InternalChartDSL.g:7371:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
+            {
+            // InternalChartDSL.g:7371:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 ) )
+            // InternalChartDSL.g:7372:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0()); 
+            }
+            // InternalChartDSL.g:7373:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0 )
+            // InternalChartDSL.g:7373: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"
+    // InternalChartDSL.g:7381: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 {
+            // InternalChartDSL.g:7385:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2 )
+            // InternalChartDSL.g:7386:2: rule__XAnnotationElementValueOrCommaList__Group_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0__2
+            {
+            pushFollow(FOLLOW_63);
+            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"
+    // InternalChartDSL.g:7393: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 {
+            // InternalChartDSL.g:7397:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? ) )
+            // InternalChartDSL.g:7398:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
+            {
+            // InternalChartDSL.g:7398:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )? )
+            // InternalChartDSL.g:7399:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1()); 
+            }
+            // InternalChartDSL.g:7400:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0 )?
+            int alt78=2;
+            int LA78_0 = input.LA(1);
+
+            if ( ((LA78_0>=RULE_STRING && LA78_0<=RULE_DECIMAL)||LA78_0==27||(LA78_0>=34 && LA78_0<=35)||LA78_0==40||(LA78_0>=45 && LA78_0<=50)||LA78_0==72||(LA78_0>=95 && LA78_0<=96)||(LA78_0>=100 && LA78_0<=101)||LA78_0==103||LA78_0==105||(LA78_0>=109 && LA78_0<=117)||LA78_0==119||LA78_0==154) ) {
+                alt78=1;
+            }
+            switch (alt78) {
+                case 1 :
+                    // InternalChartDSL.g:7400: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"
+    // InternalChartDSL.g:7408: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 {
+            // InternalChartDSL.g:7412:1: ( rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl )
+            // InternalChartDSL.g:7413: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"
+    // InternalChartDSL.g:7419:1: rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl : ( ']' ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:7423:1: ( ( ']' ) )
+            // InternalChartDSL.g:7424:1: ( ']' )
+            {
+            // InternalChartDSL.g:7424:1: ( ']' )
+            // InternalChartDSL.g:7425:2: ']'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2()); 
+            }
+            match(input,99,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"
+    // InternalChartDSL.g:7435: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 {
+            // InternalChartDSL.g:7439:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0__0__Impl )
+            // InternalChartDSL.g:7440: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"
+    // InternalChartDSL.g:7446: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 {
+            // InternalChartDSL.g:7450:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) ) )
+            // InternalChartDSL.g:7451:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
+            {
+            // InternalChartDSL.g:7451:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 ) )
+            // InternalChartDSL.g:7452:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_0_0()); 
+            }
+            // InternalChartDSL.g:7453:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0 )
+            // InternalChartDSL.g:7453: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"
+    // InternalChartDSL.g:7462: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 {
+            // InternalChartDSL.g:7466:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1 )
+            // InternalChartDSL.g:7467:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1
+            {
+            pushFollow(FOLLOW_64);
+            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"
+    // InternalChartDSL.g:7474: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 {
+            // InternalChartDSL.g:7478:1: ( ( () ) )
+            // InternalChartDSL.g:7479:1: ( () )
+            {
+            // InternalChartDSL.g:7479:1: ( () )
+            // InternalChartDSL.g:7480:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0()); 
+            }
+            // InternalChartDSL.g:7481:2: ()
+            // InternalChartDSL.g:7481: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"
+    // InternalChartDSL.g:7489: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 {
+            // InternalChartDSL.g:7493:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2 )
+            // InternalChartDSL.g:7494:2: rule__XAnnotationElementValueOrCommaList__Group_0_0_0__1__Impl rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalChartDSL.g:7501: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 {
+            // InternalChartDSL.g:7505:1: ( ( '#' ) )
+            // InternalChartDSL.g:7506:1: ( '#' )
+            {
+            // InternalChartDSL.g:7506:1: ( '#' )
+            // InternalChartDSL.g:7507:2: '#'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1()); 
+            }
+            match(input,100,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"
+    // InternalChartDSL.g:7516: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 {
+            // InternalChartDSL.g:7520:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_0_0__2__Impl )
+            // InternalChartDSL.g:7521: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"
+    // InternalChartDSL.g:7527: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 {
+            // InternalChartDSL.g:7531:1: ( ( '[' ) )
+            // InternalChartDSL.g:7532:1: ( '[' )
+            {
+            // InternalChartDSL.g:7532:1: ( '[' )
+            // InternalChartDSL.g:7533:2: '['
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
+            }
+            match(input,101,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"
+    // InternalChartDSL.g:7543: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 {
+            // InternalChartDSL.g:7547:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1 )
+            // InternalChartDSL.g:7548:2: rule__XAnnotationElementValueOrCommaList__Group_0_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1__1
+            {
+            pushFollow(FOLLOW_59);
+            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"
+    // InternalChartDSL.g:7555: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 {
+            // InternalChartDSL.g:7559:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) ) )
+            // InternalChartDSL.g:7560:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
+            {
+            // InternalChartDSL.g:7560:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 ) )
+            // InternalChartDSL.g:7561:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_0()); 
+            }
+            // InternalChartDSL.g:7562:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 )
+            // InternalChartDSL.g:7562: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"
+    // InternalChartDSL.g:7570: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 {
+            // InternalChartDSL.g:7574:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1__1__Impl )
+            // InternalChartDSL.g:7575: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"
+    // InternalChartDSL.g:7581: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 {
+            // InternalChartDSL.g:7585:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* ) )
+            // InternalChartDSL.g:7586:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
+            {
+            // InternalChartDSL.g:7586:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )* )
+            // InternalChartDSL.g:7587:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0_1_1()); 
+            }
+            // InternalChartDSL.g:7588:2: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0 )*
+            loop79:
+            do {
+                int alt79=2;
+                int LA79_0 = input.LA(1);
+
+                if ( (LA79_0==98) ) {
+                    alt79=1;
+                }
+
+
+                switch (alt79) {
+            	case 1 :
+            	    // InternalChartDSL.g:7588:3: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_60);
+            	    rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop79;
+                }
+            } 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"
+    // InternalChartDSL.g:7597: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 {
+            // InternalChartDSL.g:7601:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1 )
+            // InternalChartDSL.g:7602:2: rule__XAnnotationElementValueOrCommaList__Group_0_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:7609: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 {
+            // InternalChartDSL.g:7613:1: ( ( ',' ) )
+            // InternalChartDSL.g:7614:1: ( ',' )
+            {
+            // InternalChartDSL.g:7614:1: ( ',' )
+            // InternalChartDSL.g:7615:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0()); 
+            }
+            match(input,98,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"
+    // InternalChartDSL.g:7624: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 {
+            // InternalChartDSL.g:7628:1: ( rule__XAnnotationElementValueOrCommaList__Group_0_1_1__1__Impl )
+            // InternalChartDSL.g:7629: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"
+    // InternalChartDSL.g:7635: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 {
+            // InternalChartDSL.g:7639:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) ) )
+            // InternalChartDSL.g:7640:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
+            {
+            // InternalChartDSL.g:7640:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 ) )
+            // InternalChartDSL.g:7641:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_0_1_1_1()); 
+            }
+            // InternalChartDSL.g:7642:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_1_1 )
+            // InternalChartDSL.g:7642: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"
+    // InternalChartDSL.g:7651: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 {
+            // InternalChartDSL.g:7655:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1 )
+            // InternalChartDSL.g:7656:2: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1__1
+            {
+            pushFollow(FOLLOW_59);
+            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"
+    // InternalChartDSL.g:7663:1: rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl : ( ruleXAnnotationOrExpression ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:7667:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalChartDSL.g:7668:1: ( ruleXAnnotationOrExpression )
+            {
+            // InternalChartDSL.g:7668:1: ( ruleXAnnotationOrExpression )
+            // InternalChartDSL.g:7669: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"
+    // InternalChartDSL.g:7678: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 {
+            // InternalChartDSL.g:7682:1: ( rule__XAnnotationElementValueOrCommaList__Group_1__1__Impl )
+            // InternalChartDSL.g:7683: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"
+    // InternalChartDSL.g:7689: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 {
+            // InternalChartDSL.g:7693:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? ) )
+            // InternalChartDSL.g:7694:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
+            {
+            // InternalChartDSL.g:7694:1: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )? )
+            // InternalChartDSL.g:7695:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1()); 
+            }
+            // InternalChartDSL.g:7696:2: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0 )?
+            int alt80=2;
+            int LA80_0 = input.LA(1);
+
+            if ( (LA80_0==98) ) {
+                alt80=1;
+            }
+            switch (alt80) {
+                case 1 :
+                    // InternalChartDSL.g:7696: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"
+    // InternalChartDSL.g:7705: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 {
+            // InternalChartDSL.g:7709:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1 )
+            // InternalChartDSL.g:7710:2: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1__1
+            {
+            pushFollow(FOLLOW_59);
+            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"
+    // InternalChartDSL.g:7717:1: rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl : ( () ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__Group_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:7721:1: ( ( () ) )
+            // InternalChartDSL.g:7722:1: ( () )
+            {
+            // InternalChartDSL.g:7722:1: ( () )
+            // InternalChartDSL.g:7723:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0()); 
+            }
+            // InternalChartDSL.g:7724:2: ()
+            // InternalChartDSL.g:7724: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"
+    // InternalChartDSL.g:7732: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 {
+            // InternalChartDSL.g:7736:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1__1__Impl )
+            // InternalChartDSL.g:7737: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"
+    // InternalChartDSL.g:7743: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 {
+            // InternalChartDSL.g:7747:1: ( ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) ) )
+            // InternalChartDSL.g:7748:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
+            {
+            // InternalChartDSL.g:7748:1: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* ) )
+            // InternalChartDSL.g:7749:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) ) ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
+            {
+            // InternalChartDSL.g:7749:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 ) )
+            // InternalChartDSL.g:7750:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
+            }
+            // InternalChartDSL.g:7751:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )
+            // InternalChartDSL.g:7751:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
+            {
+            pushFollow(FOLLOW_60);
+            rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
+            }
+
+            }
+
+            // InternalChartDSL.g:7754:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )* )
+            // InternalChartDSL.g:7755:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_1_1_1()); 
+            }
+            // InternalChartDSL.g:7756:3: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0 )*
+            loop81:
+            do {
+                int alt81=2;
+                int LA81_0 = input.LA(1);
+
+                if ( (LA81_0==98) ) {
+                    alt81=1;
+                }
+
+
+                switch (alt81) {
+            	case 1 :
+            	    // InternalChartDSL.g:7756:4: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_60);
+            	    rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop81;
+                }
+            } 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"
+    // InternalChartDSL.g:7766: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 {
+            // InternalChartDSL.g:7770:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1 )
+            // InternalChartDSL.g:7771:2: rule__XAnnotationElementValueOrCommaList__Group_1_1_1__0__Impl rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:7778: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 {
+            // InternalChartDSL.g:7782:1: ( ( ',' ) )
+            // InternalChartDSL.g:7783:1: ( ',' )
+            {
+            // InternalChartDSL.g:7783:1: ( ',' )
+            // InternalChartDSL.g:7784:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0()); 
+            }
+            match(input,98,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"
+    // InternalChartDSL.g:7793: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 {
+            // InternalChartDSL.g:7797:1: ( rule__XAnnotationElementValueOrCommaList__Group_1_1_1__1__Impl )
+            // InternalChartDSL.g:7798: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"
+    // InternalChartDSL.g:7804: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 {
+            // InternalChartDSL.g:7808:1: ( ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) ) )
+            // InternalChartDSL.g:7809:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
+            {
+            // InternalChartDSL.g:7809:1: ( ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 ) )
+            // InternalChartDSL.g:7810:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsAssignment_1_1_1_1()); 
+            }
+            // InternalChartDSL.g:7811:2: ( rule__XAnnotationElementValueOrCommaList__ElementsAssignment_1_1_1_1 )
+            // InternalChartDSL.g:7811: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"
+    // InternalChartDSL.g:7820: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 {
+            // InternalChartDSL.g:7824:1: ( rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1 )
+            // InternalChartDSL.g:7825:2: rule__XAnnotationElementValue__Group_0__0__Impl rule__XAnnotationElementValue__Group_0__1
+            {
+            pushFollow(FOLLOW_63);
+            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"
+    // InternalChartDSL.g:7832: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 {
+            // InternalChartDSL.g:7836:1: ( ( ( rule__XAnnotationElementValue__Group_0_0__0 ) ) )
+            // InternalChartDSL.g:7837:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
+            {
+            // InternalChartDSL.g:7837:1: ( ( rule__XAnnotationElementValue__Group_0_0__0 ) )
+            // InternalChartDSL.g:7838:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0()); 
+            }
+            // InternalChartDSL.g:7839:2: ( rule__XAnnotationElementValue__Group_0_0__0 )
+            // InternalChartDSL.g:7839: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"
+    // InternalChartDSL.g:7847: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 {
+            // InternalChartDSL.g:7851:1: ( rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2 )
+            // InternalChartDSL.g:7852:2: rule__XAnnotationElementValue__Group_0__1__Impl rule__XAnnotationElementValue__Group_0__2
+            {
+            pushFollow(FOLLOW_63);
+            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"
+    // InternalChartDSL.g:7859: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 {
+            // InternalChartDSL.g:7863:1: ( ( ( rule__XAnnotationElementValue__Group_0_1__0 )? ) )
+            // InternalChartDSL.g:7864:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
+            {
+            // InternalChartDSL.g:7864:1: ( ( rule__XAnnotationElementValue__Group_0_1__0 )? )
+            // InternalChartDSL.g:7865:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1()); 
+            }
+            // InternalChartDSL.g:7866:2: ( rule__XAnnotationElementValue__Group_0_1__0 )?
+            int alt82=2;
+            int LA82_0 = input.LA(1);
+
+            if ( ((LA82_0>=RULE_STRING && LA82_0<=RULE_DECIMAL)||LA82_0==27||(LA82_0>=34 && LA82_0<=35)||LA82_0==40||(LA82_0>=45 && LA82_0<=50)||LA82_0==72||(LA82_0>=95 && LA82_0<=96)||(LA82_0>=100 && LA82_0<=101)||LA82_0==103||LA82_0==105||(LA82_0>=109 && LA82_0<=117)||LA82_0==119||LA82_0==154) ) {
+                alt82=1;
+            }
+            switch (alt82) {
+                case 1 :
+                    // InternalChartDSL.g:7866: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"
+    // InternalChartDSL.g:7874: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 {
+            // InternalChartDSL.g:7878:1: ( rule__XAnnotationElementValue__Group_0__2__Impl )
+            // InternalChartDSL.g:7879: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"
+    // InternalChartDSL.g:7885:1: rule__XAnnotationElementValue__Group_0__2__Impl : ( ']' ) ;
+    public final void rule__XAnnotationElementValue__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:7889:1: ( ( ']' ) )
+            // InternalChartDSL.g:7890:1: ( ']' )
+            {
+            // InternalChartDSL.g:7890:1: ( ']' )
+            // InternalChartDSL.g:7891:2: ']'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getRightSquareBracketKeyword_0_2()); 
+            }
+            match(input,99,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"
+    // InternalChartDSL.g:7901: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 {
+            // InternalChartDSL.g:7905:1: ( rule__XAnnotationElementValue__Group_0_0__0__Impl )
+            // InternalChartDSL.g:7906: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"
+    // InternalChartDSL.g:7912: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 {
+            // InternalChartDSL.g:7916:1: ( ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) ) )
+            // InternalChartDSL.g:7917:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
+            {
+            // InternalChartDSL.g:7917:1: ( ( rule__XAnnotationElementValue__Group_0_0_0__0 ) )
+            // InternalChartDSL.g:7918:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_0_0()); 
+            }
+            // InternalChartDSL.g:7919:2: ( rule__XAnnotationElementValue__Group_0_0_0__0 )
+            // InternalChartDSL.g:7919: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"
+    // InternalChartDSL.g:7928: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 {
+            // InternalChartDSL.g:7932:1: ( rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1 )
+            // InternalChartDSL.g:7933:2: rule__XAnnotationElementValue__Group_0_0_0__0__Impl rule__XAnnotationElementValue__Group_0_0_0__1
+            {
+            pushFollow(FOLLOW_64);
+            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"
+    // InternalChartDSL.g:7940: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 {
+            // InternalChartDSL.g:7944:1: ( ( () ) )
+            // InternalChartDSL.g:7945:1: ( () )
+            {
+            // InternalChartDSL.g:7945:1: ( () )
+            // InternalChartDSL.g:7946:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getXListLiteralAction_0_0_0_0()); 
+            }
+            // InternalChartDSL.g:7947:2: ()
+            // InternalChartDSL.g:7947: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"
+    // InternalChartDSL.g:7955: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 {
+            // InternalChartDSL.g:7959:1: ( rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2 )
+            // InternalChartDSL.g:7960:2: rule__XAnnotationElementValue__Group_0_0_0__1__Impl rule__XAnnotationElementValue__Group_0_0_0__2
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalChartDSL.g:7967: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 {
+            // InternalChartDSL.g:7971:1: ( ( '#' ) )
+            // InternalChartDSL.g:7972:1: ( '#' )
+            {
+            // InternalChartDSL.g:7972:1: ( '#' )
+            // InternalChartDSL.g:7973:2: '#'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getNumberSignKeyword_0_0_0_1()); 
+            }
+            match(input,100,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"
+    // InternalChartDSL.g:7982: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 {
+            // InternalChartDSL.g:7986:1: ( rule__XAnnotationElementValue__Group_0_0_0__2__Impl )
+            // InternalChartDSL.g:7987: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"
+    // InternalChartDSL.g:7993: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 {
+            // InternalChartDSL.g:7997:1: ( ( '[' ) )
+            // InternalChartDSL.g:7998:1: ( '[' )
+            {
+            // InternalChartDSL.g:7998:1: ( '[' )
+            // InternalChartDSL.g:7999:2: '['
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getLeftSquareBracketKeyword_0_0_0_2()); 
+            }
+            match(input,101,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"
+    // InternalChartDSL.g:8009: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 {
+            // InternalChartDSL.g:8013:1: ( rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1 )
+            // InternalChartDSL.g:8014:2: rule__XAnnotationElementValue__Group_0_1__0__Impl rule__XAnnotationElementValue__Group_0_1__1
+            {
+            pushFollow(FOLLOW_59);
+            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"
+    // InternalChartDSL.g:8021: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 {
+            // InternalChartDSL.g:8025:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) ) )
+            // InternalChartDSL.g:8026:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
+            {
+            // InternalChartDSL.g:8026:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 ) )
+            // InternalChartDSL.g:8027:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_0()); 
+            }
+            // InternalChartDSL.g:8028:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_0 )
+            // InternalChartDSL.g:8028: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"
+    // InternalChartDSL.g:8036: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 {
+            // InternalChartDSL.g:8040:1: ( rule__XAnnotationElementValue__Group_0_1__1__Impl )
+            // InternalChartDSL.g:8041: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"
+    // InternalChartDSL.g:8047: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 {
+            // InternalChartDSL.g:8051:1: ( ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* ) )
+            // InternalChartDSL.g:8052:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
+            {
+            // InternalChartDSL.g:8052:1: ( ( rule__XAnnotationElementValue__Group_0_1_1__0 )* )
+            // InternalChartDSL.g:8053:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0_1_1()); 
+            }
+            // InternalChartDSL.g:8054:2: ( rule__XAnnotationElementValue__Group_0_1_1__0 )*
+            loop83:
+            do {
+                int alt83=2;
+                int LA83_0 = input.LA(1);
+
+                if ( (LA83_0==98) ) {
+                    alt83=1;
+                }
+
+
+                switch (alt83) {
+            	case 1 :
+            	    // InternalChartDSL.g:8054:3: rule__XAnnotationElementValue__Group_0_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_60);
+            	    rule__XAnnotationElementValue__Group_0_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop83;
+                }
+            } 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"
+    // InternalChartDSL.g:8063: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 {
+            // InternalChartDSL.g:8067:1: ( rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1 )
+            // InternalChartDSL.g:8068:2: rule__XAnnotationElementValue__Group_0_1_1__0__Impl rule__XAnnotationElementValue__Group_0_1_1__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:8075: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 {
+            // InternalChartDSL.g:8079:1: ( ( ',' ) )
+            // InternalChartDSL.g:8080:1: ( ',' )
+            {
+            // InternalChartDSL.g:8080:1: ( ',' )
+            // InternalChartDSL.g:8081:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getCommaKeyword_0_1_1_0()); 
+            }
+            match(input,98,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"
+    // InternalChartDSL.g:8090: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 {
+            // InternalChartDSL.g:8094:1: ( rule__XAnnotationElementValue__Group_0_1_1__1__Impl )
+            // InternalChartDSL.g:8095: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"
+    // InternalChartDSL.g:8101: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 {
+            // InternalChartDSL.g:8105:1: ( ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) ) )
+            // InternalChartDSL.g:8106:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
+            {
+            // InternalChartDSL.g:8106:1: ( ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 ) )
+            // InternalChartDSL.g:8107:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValueAccess().getElementsAssignment_0_1_1_1()); 
+            }
+            // InternalChartDSL.g:8108:2: ( rule__XAnnotationElementValue__ElementsAssignment_0_1_1_1 )
+            // InternalChartDSL.g:8108: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"
+    // InternalChartDSL.g:8117: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 {
+            // InternalChartDSL.g:8121:1: ( rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1 )
+            // InternalChartDSL.g:8122:2: rule__XAssignment__Group_0__0__Impl rule__XAssignment__Group_0__1
+            {
+            pushFollow(FOLLOW_66);
+            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"
+    // InternalChartDSL.g:8129:1: rule__XAssignment__Group_0__0__Impl : ( () ) ;
+    public final void rule__XAssignment__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:8133:1: ( ( () ) )
+            // InternalChartDSL.g:8134:1: ( () )
+            {
+            // InternalChartDSL.g:8134:1: ( () )
+            // InternalChartDSL.g:8135:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0()); 
+            }
+            // InternalChartDSL.g:8136:2: ()
+            // InternalChartDSL.g:8136: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"
+    // InternalChartDSL.g:8144: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 {
+            // InternalChartDSL.g:8148:1: ( rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2 )
+            // InternalChartDSL.g:8149:2: rule__XAssignment__Group_0__1__Impl rule__XAssignment__Group_0__2
+            {
+            pushFollow(FOLLOW_62);
+            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"
+    // InternalChartDSL.g:8156: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 {
+            // InternalChartDSL.g:8160:1: ( ( ( rule__XAssignment__FeatureAssignment_0_1 ) ) )
+            // InternalChartDSL.g:8161:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
+            {
+            // InternalChartDSL.g:8161:1: ( ( rule__XAssignment__FeatureAssignment_0_1 ) )
+            // InternalChartDSL.g:8162:2: ( rule__XAssignment__FeatureAssignment_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_0_1()); 
+            }
+            // InternalChartDSL.g:8163:2: ( rule__XAssignment__FeatureAssignment_0_1 )
+            // InternalChartDSL.g:8163: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"
+    // InternalChartDSL.g:8171: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 {
+            // InternalChartDSL.g:8175:1: ( rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3 )
+            // InternalChartDSL.g:8176:2: rule__XAssignment__Group_0__2__Impl rule__XAssignment__Group_0__3
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:8183:1: rule__XAssignment__Group_0__2__Impl : ( ruleOpSingleAssign ) ;
+    public final void rule__XAssignment__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:8187:1: ( ( ruleOpSingleAssign ) )
+            // InternalChartDSL.g:8188:1: ( ruleOpSingleAssign )
+            {
+            // InternalChartDSL.g:8188:1: ( ruleOpSingleAssign )
+            // InternalChartDSL.g:8189: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"
+    // InternalChartDSL.g:8198: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 {
+            // InternalChartDSL.g:8202:1: ( rule__XAssignment__Group_0__3__Impl )
+            // InternalChartDSL.g:8203: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"
+    // InternalChartDSL.g:8209: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 {
+            // InternalChartDSL.g:8213:1: ( ( ( rule__XAssignment__ValueAssignment_0_3 ) ) )
+            // InternalChartDSL.g:8214:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
+            {
+            // InternalChartDSL.g:8214:1: ( ( rule__XAssignment__ValueAssignment_0_3 ) )
+            // InternalChartDSL.g:8215:2: ( rule__XAssignment__ValueAssignment_0_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getValueAssignment_0_3()); 
+            }
+            // InternalChartDSL.g:8216:2: ( rule__XAssignment__ValueAssignment_0_3 )
+            // InternalChartDSL.g:8216: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"
+    // InternalChartDSL.g:8225: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 {
+            // InternalChartDSL.g:8229:1: ( rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1 )
+            // InternalChartDSL.g:8230:2: rule__XAssignment__Group_1__0__Impl rule__XAssignment__Group_1__1
+            {
+            pushFollow(FOLLOW_67);
+            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"
+    // InternalChartDSL.g:8237:1: rule__XAssignment__Group_1__0__Impl : ( ruleXOrExpression ) ;
+    public final void rule__XAssignment__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:8241:1: ( ( ruleXOrExpression ) )
+            // InternalChartDSL.g:8242:1: ( ruleXOrExpression )
+            {
+            // InternalChartDSL.g:8242:1: ( ruleXOrExpression )
+            // InternalChartDSL.g:8243: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"
+    // InternalChartDSL.g:8252: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 {
+            // InternalChartDSL.g:8256:1: ( rule__XAssignment__Group_1__1__Impl )
+            // InternalChartDSL.g:8257: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"
+    // InternalChartDSL.g:8263: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 {
+            // InternalChartDSL.g:8267:1: ( ( ( rule__XAssignment__Group_1_1__0 )? ) )
+            // InternalChartDSL.g:8268:1: ( ( rule__XAssignment__Group_1_1__0 )? )
+            {
+            // InternalChartDSL.g:8268:1: ( ( rule__XAssignment__Group_1_1__0 )? )
+            // InternalChartDSL.g:8269:2: ( rule__XAssignment__Group_1_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getGroup_1_1()); 
+            }
+            // InternalChartDSL.g:8270:2: ( rule__XAssignment__Group_1_1__0 )?
+            int alt84=2;
+            alt84 = dfa84.predict(input);
+            switch (alt84) {
+                case 1 :
+                    // InternalChartDSL.g:8270: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"
+    // InternalChartDSL.g:8279: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 {
+            // InternalChartDSL.g:8283:1: ( rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1 )
+            // InternalChartDSL.g:8284:2: rule__XAssignment__Group_1_1__0__Impl rule__XAssignment__Group_1_1__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:8291: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 {
+            // InternalChartDSL.g:8295:1: ( ( ( rule__XAssignment__Group_1_1_0__0 ) ) )
+            // InternalChartDSL.g:8296:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
+            {
+            // InternalChartDSL.g:8296:1: ( ( rule__XAssignment__Group_1_1_0__0 ) )
+            // InternalChartDSL.g:8297:2: ( rule__XAssignment__Group_1_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0()); 
+            }
+            // InternalChartDSL.g:8298:2: ( rule__XAssignment__Group_1_1_0__0 )
+            // InternalChartDSL.g:8298: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"
+    // InternalChartDSL.g:8306: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 {
+            // InternalChartDSL.g:8310:1: ( rule__XAssignment__Group_1_1__1__Impl )
+            // InternalChartDSL.g:8311: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"
+    // InternalChartDSL.g:8317: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 {
+            // InternalChartDSL.g:8321:1: ( ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) ) )
+            // InternalChartDSL.g:8322:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
+            {
+            // InternalChartDSL.g:8322:1: ( ( rule__XAssignment__RightOperandAssignment_1_1_1 ) )
+            // InternalChartDSL.g:8323:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getRightOperandAssignment_1_1_1()); 
+            }
+            // InternalChartDSL.g:8324:2: ( rule__XAssignment__RightOperandAssignment_1_1_1 )
+            // InternalChartDSL.g:8324: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"
+    // InternalChartDSL.g:8333: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 {
+            // InternalChartDSL.g:8337:1: ( rule__XAssignment__Group_1_1_0__0__Impl )
+            // InternalChartDSL.g:8338: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"
+    // InternalChartDSL.g:8344: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 {
+            // InternalChartDSL.g:8348:1: ( ( ( rule__XAssignment__Group_1_1_0_0__0 ) ) )
+            // InternalChartDSL.g:8349:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
+            {
+            // InternalChartDSL.g:8349:1: ( ( rule__XAssignment__Group_1_1_0_0__0 ) )
+            // InternalChartDSL.g:8350:2: ( rule__XAssignment__Group_1_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getGroup_1_1_0_0()); 
+            }
+            // InternalChartDSL.g:8351:2: ( rule__XAssignment__Group_1_1_0_0__0 )
+            // InternalChartDSL.g:8351: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"
+    // InternalChartDSL.g:8360: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 {
+            // InternalChartDSL.g:8364:1: ( rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1 )
+            // InternalChartDSL.g:8365:2: rule__XAssignment__Group_1_1_0_0__0__Impl rule__XAssignment__Group_1_1_0_0__1
+            {
+            pushFollow(FOLLOW_67);
+            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"
+    // InternalChartDSL.g:8372: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 {
+            // InternalChartDSL.g:8376:1: ( ( () ) )
+            // InternalChartDSL.g:8377:1: ( () )
+            {
+            // InternalChartDSL.g:8377:1: ( () )
+            // InternalChartDSL.g:8378:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); 
+            }
+            // InternalChartDSL.g:8379:2: ()
+            // InternalChartDSL.g:8379: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"
+    // InternalChartDSL.g:8387: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 {
+            // InternalChartDSL.g:8391:1: ( rule__XAssignment__Group_1_1_0_0__1__Impl )
+            // InternalChartDSL.g:8392: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"
+    // InternalChartDSL.g:8398: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 {
+            // InternalChartDSL.g:8402:1: ( ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) ) )
+            // InternalChartDSL.g:8403:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
+            {
+            // InternalChartDSL.g:8403:1: ( ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalChartDSL.g:8404:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getFeatureAssignment_1_1_0_0_1()); 
+            }
+            // InternalChartDSL.g:8405:2: ( rule__XAssignment__FeatureAssignment_1_1_0_0_1 )
+            // InternalChartDSL.g:8405: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"
+    // InternalChartDSL.g:8414: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 {
+            // InternalChartDSL.g:8418:1: ( rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1 )
+            // InternalChartDSL.g:8419:2: rule__OpMultiAssign__Group_5__0__Impl rule__OpMultiAssign__Group_5__1
+            {
+            pushFollow(FOLLOW_68);
+            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"
+    // InternalChartDSL.g:8426:1: rule__OpMultiAssign__Group_5__0__Impl : ( '<' ) ;
+    public final void rule__OpMultiAssign__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:8430:1: ( ( '<' ) )
+            // InternalChartDSL.g:8431:1: ( '<' )
+            {
+            // InternalChartDSL.g:8431:1: ( '<' )
+            // InternalChartDSL.g:8432: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"
+    // InternalChartDSL.g:8441: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 {
+            // InternalChartDSL.g:8445:1: ( rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2 )
+            // InternalChartDSL.g:8446:2: rule__OpMultiAssign__Group_5__1__Impl rule__OpMultiAssign__Group_5__2
+            {
+            pushFollow(FOLLOW_62);
+            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"
+    // InternalChartDSL.g:8453:1: rule__OpMultiAssign__Group_5__1__Impl : ( '<' ) ;
+    public final void rule__OpMultiAssign__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:8457:1: ( ( '<' ) )
+            // InternalChartDSL.g:8458:1: ( '<' )
+            {
+            // InternalChartDSL.g:8458:1: ( '<' )
+            // InternalChartDSL.g:8459: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"
+    // InternalChartDSL.g:8468: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 {
+            // InternalChartDSL.g:8472:1: ( rule__OpMultiAssign__Group_5__2__Impl )
+            // InternalChartDSL.g:8473: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"
+    // InternalChartDSL.g:8479:1: rule__OpMultiAssign__Group_5__2__Impl : ( '=' ) ;
+    public final void rule__OpMultiAssign__Group_5__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:8483:1: ( ( '=' ) )
+            // InternalChartDSL.g:8484:1: ( '=' )
+            {
+            // InternalChartDSL.g:8484:1: ( '=' )
+            // InternalChartDSL.g:8485: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"
+    // InternalChartDSL.g:8495: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 {
+            // InternalChartDSL.g:8499:1: ( rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1 )
+            // InternalChartDSL.g:8500:2: rule__OpMultiAssign__Group_6__0__Impl rule__OpMultiAssign__Group_6__1
+            {
+            pushFollow(FOLLOW_69);
+            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"
+    // InternalChartDSL.g:8507:1: rule__OpMultiAssign__Group_6__0__Impl : ( '>' ) ;
+    public final void rule__OpMultiAssign__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:8511:1: ( ( '>' ) )
+            // InternalChartDSL.g:8512:1: ( '>' )
+            {
+            // InternalChartDSL.g:8512:1: ( '>' )
+            // InternalChartDSL.g:8513: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"
+    // InternalChartDSL.g:8522: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 {
+            // InternalChartDSL.g:8526:1: ( rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2 )
+            // InternalChartDSL.g:8527:2: rule__OpMultiAssign__Group_6__1__Impl rule__OpMultiAssign__Group_6__2
+            {
+            pushFollow(FOLLOW_69);
+            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"
+    // InternalChartDSL.g:8534:1: rule__OpMultiAssign__Group_6__1__Impl : ( ( '>' )? ) ;
+    public final void rule__OpMultiAssign__Group_6__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:8538:1: ( ( ( '>' )? ) )
+            // InternalChartDSL.g:8539:1: ( ( '>' )? )
+            {
+            // InternalChartDSL.g:8539:1: ( ( '>' )? )
+            // InternalChartDSL.g:8540:2: ( '>' )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpMultiAssignAccess().getGreaterThanSignKeyword_6_1()); 
+            }
+            // InternalChartDSL.g:8541:2: ( '>' )?
+            int alt85=2;
+            int LA85_0 = input.LA(1);
+
+            if ( (LA85_0==26) ) {
+                alt85=1;
+            }
+            switch (alt85) {
+                case 1 :
+                    // InternalChartDSL.g:8541: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"
+    // InternalChartDSL.g:8549: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 {
+            // InternalChartDSL.g:8553:1: ( rule__OpMultiAssign__Group_6__2__Impl )
+            // InternalChartDSL.g:8554: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"
+    // InternalChartDSL.g:8560:1: rule__OpMultiAssign__Group_6__2__Impl : ( '>=' ) ;
+    public final void rule__OpMultiAssign__Group_6__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:8564:1: ( ( '>=' ) )
+            // InternalChartDSL.g:8565:1: ( '>=' )
+            {
+            // InternalChartDSL.g:8565:1: ( '>=' )
+            // InternalChartDSL.g:8566: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"
+    // InternalChartDSL.g:8576: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 {
+            // InternalChartDSL.g:8580:1: ( rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1 )
+            // InternalChartDSL.g:8581:2: rule__XOrExpression__Group__0__Impl rule__XOrExpression__Group__1
+            {
+            pushFollow(FOLLOW_70);
+            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"
+    // InternalChartDSL.g:8588:1: rule__XOrExpression__Group__0__Impl : ( ruleXAndExpression ) ;
+    public final void rule__XOrExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:8592:1: ( ( ruleXAndExpression ) )
+            // InternalChartDSL.g:8593:1: ( ruleXAndExpression )
+            {
+            // InternalChartDSL.g:8593:1: ( ruleXAndExpression )
+            // InternalChartDSL.g:8594: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"
+    // InternalChartDSL.g:8603:1: rule__XOrExpression__Group__1 : rule__XOrExpression__Group__1__Impl ;
+    public final void rule__XOrExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:8607:1: ( rule__XOrExpression__Group__1__Impl )
+            // InternalChartDSL.g:8608: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"
+    // InternalChartDSL.g:8614: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 {
+            // InternalChartDSL.g:8618:1: ( ( ( rule__XOrExpression__Group_1__0 )* ) )
+            // InternalChartDSL.g:8619:1: ( ( rule__XOrExpression__Group_1__0 )* )
+            {
+            // InternalChartDSL.g:8619:1: ( ( rule__XOrExpression__Group_1__0 )* )
+            // InternalChartDSL.g:8620:2: ( rule__XOrExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getGroup_1()); 
+            }
+            // InternalChartDSL.g:8621:2: ( rule__XOrExpression__Group_1__0 )*
+            loop86:
+            do {
+                int alt86=2;
+                int LA86_0 = input.LA(1);
+
+                if ( (LA86_0==14) ) {
+                    int LA86_2 = input.LA(2);
+
+                    if ( (synpred148_InternalChartDSL()) ) {
+                        alt86=1;
+                    }
+
+
+                }
+
+
+                switch (alt86) {
+            	case 1 :
+            	    // InternalChartDSL.g:8621:3: rule__XOrExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_71);
+            	    rule__XOrExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop86;
+                }
+            } 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"
+    // InternalChartDSL.g:8630: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 {
+            // InternalChartDSL.g:8634:1: ( rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1 )
+            // InternalChartDSL.g:8635:2: rule__XOrExpression__Group_1__0__Impl rule__XOrExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:8642: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 {
+            // InternalChartDSL.g:8646:1: ( ( ( rule__XOrExpression__Group_1_0__0 ) ) )
+            // InternalChartDSL.g:8647:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
+            {
+            // InternalChartDSL.g:8647:1: ( ( rule__XOrExpression__Group_1_0__0 ) )
+            // InternalChartDSL.g:8648:2: ( rule__XOrExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalChartDSL.g:8649:2: ( rule__XOrExpression__Group_1_0__0 )
+            // InternalChartDSL.g:8649: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"
+    // InternalChartDSL.g:8657: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 {
+            // InternalChartDSL.g:8661:1: ( rule__XOrExpression__Group_1__1__Impl )
+            // InternalChartDSL.g:8662: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"
+    // InternalChartDSL.g:8668: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 {
+            // InternalChartDSL.g:8672:1: ( ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalChartDSL.g:8673:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalChartDSL.g:8673:1: ( ( rule__XOrExpression__RightOperandAssignment_1_1 ) )
+            // InternalChartDSL.g:8674:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalChartDSL.g:8675:2: ( rule__XOrExpression__RightOperandAssignment_1_1 )
+            // InternalChartDSL.g:8675: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"
+    // InternalChartDSL.g:8684: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 {
+            // InternalChartDSL.g:8688:1: ( rule__XOrExpression__Group_1_0__0__Impl )
+            // InternalChartDSL.g:8689: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"
+    // InternalChartDSL.g:8695: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 {
+            // InternalChartDSL.g:8699:1: ( ( ( rule__XOrExpression__Group_1_0_0__0 ) ) )
+            // InternalChartDSL.g:8700:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
+            {
+            // InternalChartDSL.g:8700:1: ( ( rule__XOrExpression__Group_1_0_0__0 ) )
+            // InternalChartDSL.g:8701:2: ( rule__XOrExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalChartDSL.g:8702:2: ( rule__XOrExpression__Group_1_0_0__0 )
+            // InternalChartDSL.g:8702: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"
+    // InternalChartDSL.g:8711: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 {
+            // InternalChartDSL.g:8715:1: ( rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1 )
+            // InternalChartDSL.g:8716:2: rule__XOrExpression__Group_1_0_0__0__Impl rule__XOrExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_70);
+            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"
+    // InternalChartDSL.g:8723: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 {
+            // InternalChartDSL.g:8727:1: ( ( () ) )
+            // InternalChartDSL.g:8728:1: ( () )
+            {
+            // InternalChartDSL.g:8728:1: ( () )
+            // InternalChartDSL.g:8729:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalChartDSL.g:8730:2: ()
+            // InternalChartDSL.g:8730: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"
+    // InternalChartDSL.g:8738: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 {
+            // InternalChartDSL.g:8742:1: ( rule__XOrExpression__Group_1_0_0__1__Impl )
+            // InternalChartDSL.g:8743: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"
+    // InternalChartDSL.g:8749: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 {
+            // InternalChartDSL.g:8753:1: ( ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalChartDSL.g:8754:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalChartDSL.g:8754:1: ( ( rule__XOrExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalChartDSL.g:8755:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalChartDSL.g:8756:2: ( rule__XOrExpression__FeatureAssignment_1_0_0_1 )
+            // InternalChartDSL.g:8756: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"
+    // InternalChartDSL.g:8765: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 {
+            // InternalChartDSL.g:8769:1: ( rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1 )
+            // InternalChartDSL.g:8770:2: rule__XAndExpression__Group__0__Impl rule__XAndExpression__Group__1
+            {
+            pushFollow(FOLLOW_72);
+            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"
+    // InternalChartDSL.g:8777:1: rule__XAndExpression__Group__0__Impl : ( ruleXEqualityExpression ) ;
+    public final void rule__XAndExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:8781:1: ( ( ruleXEqualityExpression ) )
+            // InternalChartDSL.g:8782:1: ( ruleXEqualityExpression )
+            {
+            // InternalChartDSL.g:8782:1: ( ruleXEqualityExpression )
+            // InternalChartDSL.g:8783: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"
+    // InternalChartDSL.g:8792:1: rule__XAndExpression__Group__1 : rule__XAndExpression__Group__1__Impl ;
+    public final void rule__XAndExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:8796:1: ( rule__XAndExpression__Group__1__Impl )
+            // InternalChartDSL.g:8797: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"
+    // InternalChartDSL.g:8803: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 {
+            // InternalChartDSL.g:8807:1: ( ( ( rule__XAndExpression__Group_1__0 )* ) )
+            // InternalChartDSL.g:8808:1: ( ( rule__XAndExpression__Group_1__0 )* )
+            {
+            // InternalChartDSL.g:8808:1: ( ( rule__XAndExpression__Group_1__0 )* )
+            // InternalChartDSL.g:8809:2: ( rule__XAndExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getGroup_1()); 
+            }
+            // InternalChartDSL.g:8810:2: ( rule__XAndExpression__Group_1__0 )*
+            loop87:
+            do {
+                int alt87=2;
+                int LA87_0 = input.LA(1);
+
+                if ( (LA87_0==15) ) {
+                    int LA87_2 = input.LA(2);
+
+                    if ( (synpred149_InternalChartDSL()) ) {
+                        alt87=1;
+                    }
+
+
+                }
+
+
+                switch (alt87) {
+            	case 1 :
+            	    // InternalChartDSL.g:8810:3: rule__XAndExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_73);
+            	    rule__XAndExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop87;
+                }
+            } 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"
+    // InternalChartDSL.g:8819: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 {
+            // InternalChartDSL.g:8823:1: ( rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1 )
+            // InternalChartDSL.g:8824:2: rule__XAndExpression__Group_1__0__Impl rule__XAndExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:8831: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 {
+            // InternalChartDSL.g:8835:1: ( ( ( rule__XAndExpression__Group_1_0__0 ) ) )
+            // InternalChartDSL.g:8836:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
+            {
+            // InternalChartDSL.g:8836:1: ( ( rule__XAndExpression__Group_1_0__0 ) )
+            // InternalChartDSL.g:8837:2: ( rule__XAndExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalChartDSL.g:8838:2: ( rule__XAndExpression__Group_1_0__0 )
+            // InternalChartDSL.g:8838: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"
+    // InternalChartDSL.g:8846: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 {
+            // InternalChartDSL.g:8850:1: ( rule__XAndExpression__Group_1__1__Impl )
+            // InternalChartDSL.g:8851: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"
+    // InternalChartDSL.g:8857: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 {
+            // InternalChartDSL.g:8861:1: ( ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalChartDSL.g:8862:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalChartDSL.g:8862:1: ( ( rule__XAndExpression__RightOperandAssignment_1_1 ) )
+            // InternalChartDSL.g:8863:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalChartDSL.g:8864:2: ( rule__XAndExpression__RightOperandAssignment_1_1 )
+            // InternalChartDSL.g:8864: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"
+    // InternalChartDSL.g:8873: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 {
+            // InternalChartDSL.g:8877:1: ( rule__XAndExpression__Group_1_0__0__Impl )
+            // InternalChartDSL.g:8878: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"
+    // InternalChartDSL.g:8884: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 {
+            // InternalChartDSL.g:8888:1: ( ( ( rule__XAndExpression__Group_1_0_0__0 ) ) )
+            // InternalChartDSL.g:8889:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
+            {
+            // InternalChartDSL.g:8889:1: ( ( rule__XAndExpression__Group_1_0_0__0 ) )
+            // InternalChartDSL.g:8890:2: ( rule__XAndExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalChartDSL.g:8891:2: ( rule__XAndExpression__Group_1_0_0__0 )
+            // InternalChartDSL.g:8891: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"
+    // InternalChartDSL.g:8900: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 {
+            // InternalChartDSL.g:8904:1: ( rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1 )
+            // InternalChartDSL.g:8905:2: rule__XAndExpression__Group_1_0_0__0__Impl rule__XAndExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_72);
+            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"
+    // InternalChartDSL.g:8912: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 {
+            // InternalChartDSL.g:8916:1: ( ( () ) )
+            // InternalChartDSL.g:8917:1: ( () )
+            {
+            // InternalChartDSL.g:8917:1: ( () )
+            // InternalChartDSL.g:8918:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalChartDSL.g:8919:2: ()
+            // InternalChartDSL.g:8919: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"
+    // InternalChartDSL.g:8927: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 {
+            // InternalChartDSL.g:8931:1: ( rule__XAndExpression__Group_1_0_0__1__Impl )
+            // InternalChartDSL.g:8932: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"
+    // InternalChartDSL.g:8938: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 {
+            // InternalChartDSL.g:8942:1: ( ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalChartDSL.g:8943:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalChartDSL.g:8943:1: ( ( rule__XAndExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalChartDSL.g:8944:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalChartDSL.g:8945:2: ( rule__XAndExpression__FeatureAssignment_1_0_0_1 )
+            // InternalChartDSL.g:8945: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"
+    // InternalChartDSL.g:8954: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 {
+            // InternalChartDSL.g:8958:1: ( rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1 )
+            // InternalChartDSL.g:8959:2: rule__XEqualityExpression__Group__0__Impl rule__XEqualityExpression__Group__1
+            {
+            pushFollow(FOLLOW_74);
+            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"
+    // InternalChartDSL.g:8966:1: rule__XEqualityExpression__Group__0__Impl : ( ruleXRelationalExpression ) ;
+    public final void rule__XEqualityExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:8970:1: ( ( ruleXRelationalExpression ) )
+            // InternalChartDSL.g:8971:1: ( ruleXRelationalExpression )
+            {
+            // InternalChartDSL.g:8971:1: ( ruleXRelationalExpression )
+            // InternalChartDSL.g:8972: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"
+    // InternalChartDSL.g:8981:1: rule__XEqualityExpression__Group__1 : rule__XEqualityExpression__Group__1__Impl ;
+    public final void rule__XEqualityExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:8985:1: ( rule__XEqualityExpression__Group__1__Impl )
+            // InternalChartDSL.g:8986: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"
+    // InternalChartDSL.g:8992: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 {
+            // InternalChartDSL.g:8996:1: ( ( ( rule__XEqualityExpression__Group_1__0 )* ) )
+            // InternalChartDSL.g:8997:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
+            {
+            // InternalChartDSL.g:8997:1: ( ( rule__XEqualityExpression__Group_1__0 )* )
+            // InternalChartDSL.g:8998:2: ( rule__XEqualityExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getGroup_1()); 
+            }
+            // InternalChartDSL.g:8999:2: ( rule__XEqualityExpression__Group_1__0 )*
+            loop88:
+            do {
+                int alt88=2;
+                switch ( input.LA(1) ) {
+                case 21:
+                    {
+                    int LA88_2 = input.LA(2);
+
+                    if ( (synpred150_InternalChartDSL()) ) {
+                        alt88=1;
+                    }
+
+
+                    }
+                    break;
+                case 22:
+                    {
+                    int LA88_3 = input.LA(2);
+
+                    if ( (synpred150_InternalChartDSL()) ) {
+                        alt88=1;
+                    }
+
+
+                    }
+                    break;
+                case 23:
+                    {
+                    int LA88_4 = input.LA(2);
+
+                    if ( (synpred150_InternalChartDSL()) ) {
+                        alt88=1;
+                    }
+
+
+                    }
+                    break;
+                case 24:
+                    {
+                    int LA88_5 = input.LA(2);
+
+                    if ( (synpred150_InternalChartDSL()) ) {
+                        alt88=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt88) {
+            	case 1 :
+            	    // InternalChartDSL.g:8999:3: rule__XEqualityExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_75);
+            	    rule__XEqualityExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop88;
+                }
+            } 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"
+    // InternalChartDSL.g:9008: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 {
+            // InternalChartDSL.g:9012:1: ( rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1 )
+            // InternalChartDSL.g:9013:2: rule__XEqualityExpression__Group_1__0__Impl rule__XEqualityExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:9020: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 {
+            // InternalChartDSL.g:9024:1: ( ( ( rule__XEqualityExpression__Group_1_0__0 ) ) )
+            // InternalChartDSL.g:9025:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
+            {
+            // InternalChartDSL.g:9025:1: ( ( rule__XEqualityExpression__Group_1_0__0 ) )
+            // InternalChartDSL.g:9026:2: ( rule__XEqualityExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalChartDSL.g:9027:2: ( rule__XEqualityExpression__Group_1_0__0 )
+            // InternalChartDSL.g:9027: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"
+    // InternalChartDSL.g:9035: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 {
+            // InternalChartDSL.g:9039:1: ( rule__XEqualityExpression__Group_1__1__Impl )
+            // InternalChartDSL.g:9040: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"
+    // InternalChartDSL.g:9046: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 {
+            // InternalChartDSL.g:9050:1: ( ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalChartDSL.g:9051:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalChartDSL.g:9051:1: ( ( rule__XEqualityExpression__RightOperandAssignment_1_1 ) )
+            // InternalChartDSL.g:9052:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalChartDSL.g:9053:2: ( rule__XEqualityExpression__RightOperandAssignment_1_1 )
+            // InternalChartDSL.g:9053: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"
+    // InternalChartDSL.g:9062: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 {
+            // InternalChartDSL.g:9066:1: ( rule__XEqualityExpression__Group_1_0__0__Impl )
+            // InternalChartDSL.g:9067: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"
+    // InternalChartDSL.g:9073: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 {
+            // InternalChartDSL.g:9077:1: ( ( ( rule__XEqualityExpression__Group_1_0_0__0 ) ) )
+            // InternalChartDSL.g:9078:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
+            {
+            // InternalChartDSL.g:9078:1: ( ( rule__XEqualityExpression__Group_1_0_0__0 ) )
+            // InternalChartDSL.g:9079:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalChartDSL.g:9080:2: ( rule__XEqualityExpression__Group_1_0_0__0 )
+            // InternalChartDSL.g:9080: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"
+    // InternalChartDSL.g:9089: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 {
+            // InternalChartDSL.g:9093:1: ( rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1 )
+            // InternalChartDSL.g:9094:2: rule__XEqualityExpression__Group_1_0_0__0__Impl rule__XEqualityExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_74);
+            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"
+    // InternalChartDSL.g:9101: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 {
+            // InternalChartDSL.g:9105:1: ( ( () ) )
+            // InternalChartDSL.g:9106:1: ( () )
+            {
+            // InternalChartDSL.g:9106:1: ( () )
+            // InternalChartDSL.g:9107:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalChartDSL.g:9108:2: ()
+            // InternalChartDSL.g:9108: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"
+    // InternalChartDSL.g:9116: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 {
+            // InternalChartDSL.g:9120:1: ( rule__XEqualityExpression__Group_1_0_0__1__Impl )
+            // InternalChartDSL.g:9121: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"
+    // InternalChartDSL.g:9127: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 {
+            // InternalChartDSL.g:9131:1: ( ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalChartDSL.g:9132:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalChartDSL.g:9132:1: ( ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalChartDSL.g:9133:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalChartDSL.g:9134:2: ( rule__XEqualityExpression__FeatureAssignment_1_0_0_1 )
+            // InternalChartDSL.g:9134: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"
+    // InternalChartDSL.g:9143: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 {
+            // InternalChartDSL.g:9147:1: ( rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1 )
+            // InternalChartDSL.g:9148:2: rule__XRelationalExpression__Group__0__Impl rule__XRelationalExpression__Group__1
+            {
+            pushFollow(FOLLOW_76);
+            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"
+    // InternalChartDSL.g:9155:1: rule__XRelationalExpression__Group__0__Impl : ( ruleXOtherOperatorExpression ) ;
+    public final void rule__XRelationalExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:9159:1: ( ( ruleXOtherOperatorExpression ) )
+            // InternalChartDSL.g:9160:1: ( ruleXOtherOperatorExpression )
+            {
+            // InternalChartDSL.g:9160:1: ( ruleXOtherOperatorExpression )
+            // InternalChartDSL.g:9161: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"
+    // InternalChartDSL.g:9170:1: rule__XRelationalExpression__Group__1 : rule__XRelationalExpression__Group__1__Impl ;
+    public final void rule__XRelationalExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:9174:1: ( rule__XRelationalExpression__Group__1__Impl )
+            // InternalChartDSL.g:9175: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"
+    // InternalChartDSL.g:9181:1: rule__XRelationalExpression__Group__1__Impl : ( ( rule__XRelationalExpression__Alternatives_1 )* ) ;
+    public final void rule__XRelationalExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:9185:1: ( ( ( rule__XRelationalExpression__Alternatives_1 )* ) )
+            // InternalChartDSL.g:9186:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
+            {
+            // InternalChartDSL.g:9186:1: ( ( rule__XRelationalExpression__Alternatives_1 )* )
+            // InternalChartDSL.g:9187:2: ( rule__XRelationalExpression__Alternatives_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getAlternatives_1()); 
+            }
+            // InternalChartDSL.g:9188:2: ( rule__XRelationalExpression__Alternatives_1 )*
+            loop89:
+            do {
+                int alt89=2;
+                switch ( input.LA(1) ) {
+                case 27:
+                    {
+                    int LA89_2 = input.LA(2);
+
+                    if ( (synpred151_InternalChartDSL()) ) {
+                        alt89=1;
+                    }
+
+
+                    }
+                    break;
+                case 26:
+                    {
+                    int LA89_3 = input.LA(2);
+
+                    if ( (synpred151_InternalChartDSL()) ) {
+                        alt89=1;
+                    }
+
+
+                    }
+                    break;
+                case 102:
+                    {
+                    int LA89_4 = input.LA(2);
+
+                    if ( (synpred151_InternalChartDSL()) ) {
+                        alt89=1;
+                    }
+
+
+                    }
+                    break;
+                case 25:
+                    {
+                    int LA89_5 = input.LA(2);
+
+                    if ( (synpred151_InternalChartDSL()) ) {
+                        alt89=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt89) {
+            	case 1 :
+            	    // InternalChartDSL.g:9188:3: rule__XRelationalExpression__Alternatives_1
+            	    {
+            	    pushFollow(FOLLOW_77);
+            	    rule__XRelationalExpression__Alternatives_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop89;
+                }
+            } 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"
+    // InternalChartDSL.g:9197: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 {
+            // InternalChartDSL.g:9201:1: ( rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1 )
+            // InternalChartDSL.g:9202:2: rule__XRelationalExpression__Group_1_0__0__Impl rule__XRelationalExpression__Group_1_0__1
+            {
+            pushFollow(FOLLOW_78);
+            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"
+    // InternalChartDSL.g:9209: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 {
+            // InternalChartDSL.g:9213:1: ( ( ( rule__XRelationalExpression__Group_1_0_0__0 ) ) )
+            // InternalChartDSL.g:9214:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
+            {
+            // InternalChartDSL.g:9214:1: ( ( rule__XRelationalExpression__Group_1_0_0__0 ) )
+            // InternalChartDSL.g:9215:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalChartDSL.g:9216:2: ( rule__XRelationalExpression__Group_1_0_0__0 )
+            // InternalChartDSL.g:9216: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"
+    // InternalChartDSL.g:9224: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 {
+            // InternalChartDSL.g:9228:1: ( rule__XRelationalExpression__Group_1_0__1__Impl )
+            // InternalChartDSL.g:9229: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"
+    // InternalChartDSL.g:9235: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 {
+            // InternalChartDSL.g:9239:1: ( ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) ) )
+            // InternalChartDSL.g:9240:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
+            {
+            // InternalChartDSL.g:9240:1: ( ( rule__XRelationalExpression__TypeAssignment_1_0_1 ) )
+            // InternalChartDSL.g:9241:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getTypeAssignment_1_0_1()); 
+            }
+            // InternalChartDSL.g:9242:2: ( rule__XRelationalExpression__TypeAssignment_1_0_1 )
+            // InternalChartDSL.g:9242: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"
+    // InternalChartDSL.g:9251: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 {
+            // InternalChartDSL.g:9255:1: ( rule__XRelationalExpression__Group_1_0_0__0__Impl )
+            // InternalChartDSL.g:9256: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"
+    // InternalChartDSL.g:9262: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 {
+            // InternalChartDSL.g:9266:1: ( ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) ) )
+            // InternalChartDSL.g:9267:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
+            {
+            // InternalChartDSL.g:9267:1: ( ( rule__XRelationalExpression__Group_1_0_0_0__0 ) )
+            // InternalChartDSL.g:9268:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_0_0_0()); 
+            }
+            // InternalChartDSL.g:9269:2: ( rule__XRelationalExpression__Group_1_0_0_0__0 )
+            // InternalChartDSL.g:9269: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"
+    // InternalChartDSL.g:9278: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 {
+            // InternalChartDSL.g:9282:1: ( rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1 )
+            // InternalChartDSL.g:9283:2: rule__XRelationalExpression__Group_1_0_0_0__0__Impl rule__XRelationalExpression__Group_1_0_0_0__1
+            {
+            pushFollow(FOLLOW_79);
+            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"
+    // InternalChartDSL.g:9290: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 {
+            // InternalChartDSL.g:9294:1: ( ( () ) )
+            // InternalChartDSL.g:9295:1: ( () )
+            {
+            // InternalChartDSL.g:9295:1: ( () )
+            // InternalChartDSL.g:9296:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0()); 
+            }
+            // InternalChartDSL.g:9297:2: ()
+            // InternalChartDSL.g:9297: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"
+    // InternalChartDSL.g:9305: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 {
+            // InternalChartDSL.g:9309:1: ( rule__XRelationalExpression__Group_1_0_0_0__1__Impl )
+            // InternalChartDSL.g:9310: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"
+    // InternalChartDSL.g:9316: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 {
+            // InternalChartDSL.g:9320:1: ( ( 'instanceof' ) )
+            // InternalChartDSL.g:9321:1: ( 'instanceof' )
+            {
+            // InternalChartDSL.g:9321:1: ( 'instanceof' )
+            // InternalChartDSL.g:9322:2: 'instanceof'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1()); 
+            }
+            match(input,102,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"
+    // InternalChartDSL.g:9332: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 {
+            // InternalChartDSL.g:9336:1: ( rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1 )
+            // InternalChartDSL.g:9337:2: rule__XRelationalExpression__Group_1_1__0__Impl rule__XRelationalExpression__Group_1_1__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:9344: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 {
+            // InternalChartDSL.g:9348:1: ( ( ( rule__XRelationalExpression__Group_1_1_0__0 ) ) )
+            // InternalChartDSL.g:9349:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
+            {
+            // InternalChartDSL.g:9349:1: ( ( rule__XRelationalExpression__Group_1_1_0__0 ) )
+            // InternalChartDSL.g:9350:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0()); 
+            }
+            // InternalChartDSL.g:9351:2: ( rule__XRelationalExpression__Group_1_1_0__0 )
+            // InternalChartDSL.g:9351: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"
+    // InternalChartDSL.g:9359: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 {
+            // InternalChartDSL.g:9363:1: ( rule__XRelationalExpression__Group_1_1__1__Impl )
+            // InternalChartDSL.g:9364: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"
+    // InternalChartDSL.g:9370: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 {
+            // InternalChartDSL.g:9374:1: ( ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) ) )
+            // InternalChartDSL.g:9375:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
+            {
+            // InternalChartDSL.g:9375:1: ( ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 ) )
+            // InternalChartDSL.g:9376:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getRightOperandAssignment_1_1_1()); 
+            }
+            // InternalChartDSL.g:9377:2: ( rule__XRelationalExpression__RightOperandAssignment_1_1_1 )
+            // InternalChartDSL.g:9377: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"
+    // InternalChartDSL.g:9386: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 {
+            // InternalChartDSL.g:9390:1: ( rule__XRelationalExpression__Group_1_1_0__0__Impl )
+            // InternalChartDSL.g:9391: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"
+    // InternalChartDSL.g:9397: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 {
+            // InternalChartDSL.g:9401:1: ( ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) ) )
+            // InternalChartDSL.g:9402:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
+            {
+            // InternalChartDSL.g:9402:1: ( ( rule__XRelationalExpression__Group_1_1_0_0__0 ) )
+            // InternalChartDSL.g:9403:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getGroup_1_1_0_0()); 
+            }
+            // InternalChartDSL.g:9404:2: ( rule__XRelationalExpression__Group_1_1_0_0__0 )
+            // InternalChartDSL.g:9404: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"
+    // InternalChartDSL.g:9413: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 {
+            // InternalChartDSL.g:9417:1: ( rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1 )
+            // InternalChartDSL.g:9418:2: rule__XRelationalExpression__Group_1_1_0_0__0__Impl rule__XRelationalExpression__Group_1_1_0_0__1
+            {
+            pushFollow(FOLLOW_76);
+            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"
+    // InternalChartDSL.g:9425: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 {
+            // InternalChartDSL.g:9429:1: ( ( () ) )
+            // InternalChartDSL.g:9430:1: ( () )
+            {
+            // InternalChartDSL.g:9430:1: ( () )
+            // InternalChartDSL.g:9431:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0()); 
+            }
+            // InternalChartDSL.g:9432:2: ()
+            // InternalChartDSL.g:9432: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"
+    // InternalChartDSL.g:9440: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 {
+            // InternalChartDSL.g:9444:1: ( rule__XRelationalExpression__Group_1_1_0_0__1__Impl )
+            // InternalChartDSL.g:9445: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"
+    // InternalChartDSL.g:9451: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 {
+            // InternalChartDSL.g:9455:1: ( ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) ) )
+            // InternalChartDSL.g:9456:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
+            {
+            // InternalChartDSL.g:9456:1: ( ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 ) )
+            // InternalChartDSL.g:9457:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getFeatureAssignment_1_1_0_0_1()); 
+            }
+            // InternalChartDSL.g:9458:2: ( rule__XRelationalExpression__FeatureAssignment_1_1_0_0_1 )
+            // InternalChartDSL.g:9458: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"
+    // InternalChartDSL.g:9467: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 {
+            // InternalChartDSL.g:9471:1: ( rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1 )
+            // InternalChartDSL.g:9472:2: rule__OpCompare__Group_1__0__Impl rule__OpCompare__Group_1__1
+            {
+            pushFollow(FOLLOW_62);
+            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"
+    // InternalChartDSL.g:9479:1: rule__OpCompare__Group_1__0__Impl : ( '<' ) ;
+    public final void rule__OpCompare__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:9483:1: ( ( '<' ) )
+            // InternalChartDSL.g:9484:1: ( '<' )
+            {
+            // InternalChartDSL.g:9484:1: ( '<' )
+            // InternalChartDSL.g:9485: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"
+    // InternalChartDSL.g:9494: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 {
+            // InternalChartDSL.g:9498:1: ( rule__OpCompare__Group_1__1__Impl )
+            // InternalChartDSL.g:9499: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"
+    // InternalChartDSL.g:9505:1: rule__OpCompare__Group_1__1__Impl : ( '=' ) ;
+    public final void rule__OpCompare__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:9509:1: ( ( '=' ) )
+            // InternalChartDSL.g:9510:1: ( '=' )
+            {
+            // InternalChartDSL.g:9510:1: ( '=' )
+            // InternalChartDSL.g:9511: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"
+    // InternalChartDSL.g:9521: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 {
+            // InternalChartDSL.g:9525:1: ( rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1 )
+            // InternalChartDSL.g:9526:2: rule__XOtherOperatorExpression__Group__0__Impl rule__XOtherOperatorExpression__Group__1
+            {
+            pushFollow(FOLLOW_80);
+            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"
+    // InternalChartDSL.g:9533:1: rule__XOtherOperatorExpression__Group__0__Impl : ( ruleXAdditiveExpression ) ;
+    public final void rule__XOtherOperatorExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:9537:1: ( ( ruleXAdditiveExpression ) )
+            // InternalChartDSL.g:9538:1: ( ruleXAdditiveExpression )
+            {
+            // InternalChartDSL.g:9538:1: ( ruleXAdditiveExpression )
+            // InternalChartDSL.g:9539: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"
+    // InternalChartDSL.g:9548:1: rule__XOtherOperatorExpression__Group__1 : rule__XOtherOperatorExpression__Group__1__Impl ;
+    public final void rule__XOtherOperatorExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:9552:1: ( rule__XOtherOperatorExpression__Group__1__Impl )
+            // InternalChartDSL.g:9553: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"
+    // InternalChartDSL.g:9559: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 {
+            // InternalChartDSL.g:9563:1: ( ( ( rule__XOtherOperatorExpression__Group_1__0 )* ) )
+            // InternalChartDSL.g:9564:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
+            {
+            // InternalChartDSL.g:9564:1: ( ( rule__XOtherOperatorExpression__Group_1__0 )* )
+            // InternalChartDSL.g:9565:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1()); 
+            }
+            // InternalChartDSL.g:9566:2: ( rule__XOtherOperatorExpression__Group_1__0 )*
+            loop90:
+            do {
+                int alt90=2;
+                alt90 = dfa90.predict(input);
+                switch (alt90) {
+            	case 1 :
+            	    // InternalChartDSL.g:9566:3: rule__XOtherOperatorExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_81);
+            	    rule__XOtherOperatorExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop90;
+                }
+            } 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"
+    // InternalChartDSL.g:9575: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 {
+            // InternalChartDSL.g:9579:1: ( rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1 )
+            // InternalChartDSL.g:9580:2: rule__XOtherOperatorExpression__Group_1__0__Impl rule__XOtherOperatorExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:9587: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 {
+            // InternalChartDSL.g:9591:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) ) )
+            // InternalChartDSL.g:9592:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
+            {
+            // InternalChartDSL.g:9592:1: ( ( rule__XOtherOperatorExpression__Group_1_0__0 ) )
+            // InternalChartDSL.g:9593:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalChartDSL.g:9594:2: ( rule__XOtherOperatorExpression__Group_1_0__0 )
+            // InternalChartDSL.g:9594: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"
+    // InternalChartDSL.g:9602: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 {
+            // InternalChartDSL.g:9606:1: ( rule__XOtherOperatorExpression__Group_1__1__Impl )
+            // InternalChartDSL.g:9607: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"
+    // InternalChartDSL.g:9613: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 {
+            // InternalChartDSL.g:9617:1: ( ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalChartDSL.g:9618:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalChartDSL.g:9618:1: ( ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 ) )
+            // InternalChartDSL.g:9619:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalChartDSL.g:9620:2: ( rule__XOtherOperatorExpression__RightOperandAssignment_1_1 )
+            // InternalChartDSL.g:9620: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"
+    // InternalChartDSL.g:9629: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 {
+            // InternalChartDSL.g:9633:1: ( rule__XOtherOperatorExpression__Group_1_0__0__Impl )
+            // InternalChartDSL.g:9634: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"
+    // InternalChartDSL.g:9640: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 {
+            // InternalChartDSL.g:9644:1: ( ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) ) )
+            // InternalChartDSL.g:9645:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
+            {
+            // InternalChartDSL.g:9645:1: ( ( rule__XOtherOperatorExpression__Group_1_0_0__0 ) )
+            // InternalChartDSL.g:9646:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalChartDSL.g:9647:2: ( rule__XOtherOperatorExpression__Group_1_0_0__0 )
+            // InternalChartDSL.g:9647: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"
+    // InternalChartDSL.g:9656: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 {
+            // InternalChartDSL.g:9660:1: ( rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1 )
+            // InternalChartDSL.g:9661:2: rule__XOtherOperatorExpression__Group_1_0_0__0__Impl rule__XOtherOperatorExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_80);
+            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"
+    // InternalChartDSL.g:9668: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 {
+            // InternalChartDSL.g:9672:1: ( ( () ) )
+            // InternalChartDSL.g:9673:1: ( () )
+            {
+            // InternalChartDSL.g:9673:1: ( () )
+            // InternalChartDSL.g:9674:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalChartDSL.g:9675:2: ()
+            // InternalChartDSL.g:9675: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"
+    // InternalChartDSL.g:9683: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 {
+            // InternalChartDSL.g:9687:1: ( rule__XOtherOperatorExpression__Group_1_0_0__1__Impl )
+            // InternalChartDSL.g:9688: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"
+    // InternalChartDSL.g:9694: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 {
+            // InternalChartDSL.g:9698:1: ( ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalChartDSL.g:9699:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalChartDSL.g:9699:1: ( ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalChartDSL.g:9700:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalChartDSL.g:9701:2: ( rule__XOtherOperatorExpression__FeatureAssignment_1_0_0_1 )
+            // InternalChartDSL.g:9701: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"
+    // InternalChartDSL.g:9710: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 {
+            // InternalChartDSL.g:9714:1: ( rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1 )
+            // InternalChartDSL.g:9715:2: rule__OpOther__Group_2__0__Impl rule__OpOther__Group_2__1
+            {
+            pushFollow(FOLLOW_82);
+            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"
+    // InternalChartDSL.g:9722:1: rule__OpOther__Group_2__0__Impl : ( '>' ) ;
+    public final void rule__OpOther__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:9726:1: ( ( '>' ) )
+            // InternalChartDSL.g:9727:1: ( '>' )
+            {
+            // InternalChartDSL.g:9727:1: ( '>' )
+            // InternalChartDSL.g:9728: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"
+    // InternalChartDSL.g:9737: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 {
+            // InternalChartDSL.g:9741:1: ( rule__OpOther__Group_2__1__Impl )
+            // InternalChartDSL.g:9742: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"
+    // InternalChartDSL.g:9748:1: rule__OpOther__Group_2__1__Impl : ( '..' ) ;
+    public final void rule__OpOther__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:9752:1: ( ( '..' ) )
+            // InternalChartDSL.g:9753:1: ( '..' )
+            {
+            // InternalChartDSL.g:9753:1: ( '..' )
+            // InternalChartDSL.g:9754: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"
+    // InternalChartDSL.g:9764: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 {
+            // InternalChartDSL.g:9768:1: ( rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1 )
+            // InternalChartDSL.g:9769:2: rule__OpOther__Group_5__0__Impl rule__OpOther__Group_5__1
+            {
+            pushFollow(FOLLOW_83);
+            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"
+    // InternalChartDSL.g:9776:1: rule__OpOther__Group_5__0__Impl : ( '>' ) ;
+    public final void rule__OpOther__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:9780:1: ( ( '>' ) )
+            // InternalChartDSL.g:9781:1: ( '>' )
+            {
+            // InternalChartDSL.g:9781:1: ( '>' )
+            // InternalChartDSL.g:9782: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"
+    // InternalChartDSL.g:9791: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 {
+            // InternalChartDSL.g:9795:1: ( rule__OpOther__Group_5__1__Impl )
+            // InternalChartDSL.g:9796: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"
+    // InternalChartDSL.g:9802: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 {
+            // InternalChartDSL.g:9806:1: ( ( ( rule__OpOther__Alternatives_5_1 ) ) )
+            // InternalChartDSL.g:9807:1: ( ( rule__OpOther__Alternatives_5_1 ) )
+            {
+            // InternalChartDSL.g:9807:1: ( ( rule__OpOther__Alternatives_5_1 ) )
+            // InternalChartDSL.g:9808:2: ( rule__OpOther__Alternatives_5_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getAlternatives_5_1()); 
+            }
+            // InternalChartDSL.g:9809:2: ( rule__OpOther__Alternatives_5_1 )
+            // InternalChartDSL.g:9809: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"
+    // InternalChartDSL.g:9818: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 {
+            // InternalChartDSL.g:9822:1: ( rule__OpOther__Group_5_1_0__0__Impl )
+            // InternalChartDSL.g:9823: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"
+    // InternalChartDSL.g:9829: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 {
+            // InternalChartDSL.g:9833:1: ( ( ( rule__OpOther__Group_5_1_0_0__0 ) ) )
+            // InternalChartDSL.g:9834:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
+            {
+            // InternalChartDSL.g:9834:1: ( ( rule__OpOther__Group_5_1_0_0__0 ) )
+            // InternalChartDSL.g:9835:2: ( rule__OpOther__Group_5_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getGroup_5_1_0_0()); 
+            }
+            // InternalChartDSL.g:9836:2: ( rule__OpOther__Group_5_1_0_0__0 )
+            // InternalChartDSL.g:9836: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"
+    // InternalChartDSL.g:9845: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 {
+            // InternalChartDSL.g:9849:1: ( rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1 )
+            // InternalChartDSL.g:9850:2: rule__OpOther__Group_5_1_0_0__0__Impl rule__OpOther__Group_5_1_0_0__1
+            {
+            pushFollow(FOLLOW_83);
+            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"
+    // InternalChartDSL.g:9857: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 {
+            // InternalChartDSL.g:9861:1: ( ( '>' ) )
+            // InternalChartDSL.g:9862:1: ( '>' )
+            {
+            // InternalChartDSL.g:9862:1: ( '>' )
+            // InternalChartDSL.g:9863: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"
+    // InternalChartDSL.g:9872: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 {
+            // InternalChartDSL.g:9876:1: ( rule__OpOther__Group_5_1_0_0__1__Impl )
+            // InternalChartDSL.g:9877: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"
+    // InternalChartDSL.g:9883: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 {
+            // InternalChartDSL.g:9887:1: ( ( '>' ) )
+            // InternalChartDSL.g:9888:1: ( '>' )
+            {
+            // InternalChartDSL.g:9888:1: ( '>' )
+            // InternalChartDSL.g:9889: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"
+    // InternalChartDSL.g:9899: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 {
+            // InternalChartDSL.g:9903:1: ( rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1 )
+            // InternalChartDSL.g:9904:2: rule__OpOther__Group_6__0__Impl rule__OpOther__Group_6__1
+            {
+            pushFollow(FOLLOW_84);
+            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"
+    // InternalChartDSL.g:9911:1: rule__OpOther__Group_6__0__Impl : ( '<' ) ;
+    public final void rule__OpOther__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:9915:1: ( ( '<' ) )
+            // InternalChartDSL.g:9916:1: ( '<' )
+            {
+            // InternalChartDSL.g:9916:1: ( '<' )
+            // InternalChartDSL.g:9917: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"
+    // InternalChartDSL.g:9926: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 {
+            // InternalChartDSL.g:9930:1: ( rule__OpOther__Group_6__1__Impl )
+            // InternalChartDSL.g:9931: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"
+    // InternalChartDSL.g:9937: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 {
+            // InternalChartDSL.g:9941:1: ( ( ( rule__OpOther__Alternatives_6_1 ) ) )
+            // InternalChartDSL.g:9942:1: ( ( rule__OpOther__Alternatives_6_1 ) )
+            {
+            // InternalChartDSL.g:9942:1: ( ( rule__OpOther__Alternatives_6_1 ) )
+            // InternalChartDSL.g:9943:2: ( rule__OpOther__Alternatives_6_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getAlternatives_6_1()); 
+            }
+            // InternalChartDSL.g:9944:2: ( rule__OpOther__Alternatives_6_1 )
+            // InternalChartDSL.g:9944: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"
+    // InternalChartDSL.g:9953: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 {
+            // InternalChartDSL.g:9957:1: ( rule__OpOther__Group_6_1_0__0__Impl )
+            // InternalChartDSL.g:9958: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"
+    // InternalChartDSL.g:9964: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 {
+            // InternalChartDSL.g:9968:1: ( ( ( rule__OpOther__Group_6_1_0_0__0 ) ) )
+            // InternalChartDSL.g:9969:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
+            {
+            // InternalChartDSL.g:9969:1: ( ( rule__OpOther__Group_6_1_0_0__0 ) )
+            // InternalChartDSL.g:9970:2: ( rule__OpOther__Group_6_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getOpOtherAccess().getGroup_6_1_0_0()); 
+            }
+            // InternalChartDSL.g:9971:2: ( rule__OpOther__Group_6_1_0_0__0 )
+            // InternalChartDSL.g:9971: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"
+    // InternalChartDSL.g:9980: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 {
+            // InternalChartDSL.g:9984:1: ( rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1 )
+            // InternalChartDSL.g:9985:2: rule__OpOther__Group_6_1_0_0__0__Impl rule__OpOther__Group_6_1_0_0__1
+            {
+            pushFollow(FOLLOW_68);
+            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"
+    // InternalChartDSL.g:9992: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 {
+            // InternalChartDSL.g:9996:1: ( ( '<' ) )
+            // InternalChartDSL.g:9997:1: ( '<' )
+            {
+            // InternalChartDSL.g:9997:1: ( '<' )
+            // InternalChartDSL.g:9998: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"
+    // InternalChartDSL.g:10007: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 {
+            // InternalChartDSL.g:10011:1: ( rule__OpOther__Group_6_1_0_0__1__Impl )
+            // InternalChartDSL.g:10012: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"
+    // InternalChartDSL.g:10018: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 {
+            // InternalChartDSL.g:10022:1: ( ( '<' ) )
+            // InternalChartDSL.g:10023:1: ( '<' )
+            {
+            // InternalChartDSL.g:10023:1: ( '<' )
+            // InternalChartDSL.g:10024: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"
+    // InternalChartDSL.g:10034: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 {
+            // InternalChartDSL.g:10038:1: ( rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1 )
+            // InternalChartDSL.g:10039:2: rule__XAdditiveExpression__Group__0__Impl rule__XAdditiveExpression__Group__1
+            {
+            pushFollow(FOLLOW_85);
+            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"
+    // InternalChartDSL.g:10046:1: rule__XAdditiveExpression__Group__0__Impl : ( ruleXMultiplicativeExpression ) ;
+    public final void rule__XAdditiveExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:10050:1: ( ( ruleXMultiplicativeExpression ) )
+            // InternalChartDSL.g:10051:1: ( ruleXMultiplicativeExpression )
+            {
+            // InternalChartDSL.g:10051:1: ( ruleXMultiplicativeExpression )
+            // InternalChartDSL.g:10052: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"
+    // InternalChartDSL.g:10061:1: rule__XAdditiveExpression__Group__1 : rule__XAdditiveExpression__Group__1__Impl ;
+    public final void rule__XAdditiveExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:10065:1: ( rule__XAdditiveExpression__Group__1__Impl )
+            // InternalChartDSL.g:10066: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"
+    // InternalChartDSL.g:10072: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 {
+            // InternalChartDSL.g:10076:1: ( ( ( rule__XAdditiveExpression__Group_1__0 )* ) )
+            // InternalChartDSL.g:10077:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
+            {
+            // InternalChartDSL.g:10077:1: ( ( rule__XAdditiveExpression__Group_1__0 )* )
+            // InternalChartDSL.g:10078:2: ( rule__XAdditiveExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1()); 
+            }
+            // InternalChartDSL.g:10079:2: ( rule__XAdditiveExpression__Group_1__0 )*
+            loop91:
+            do {
+                int alt91=2;
+                int LA91_0 = input.LA(1);
+
+                if ( (LA91_0==35) ) {
+                    int LA91_2 = input.LA(2);
+
+                    if ( (synpred153_InternalChartDSL()) ) {
+                        alt91=1;
+                    }
+
+
+                }
+                else if ( (LA91_0==34) ) {
+                    int LA91_3 = input.LA(2);
+
+                    if ( (synpred153_InternalChartDSL()) ) {
+                        alt91=1;
+                    }
+
+
+                }
+
+
+                switch (alt91) {
+            	case 1 :
+            	    // InternalChartDSL.g:10079:3: rule__XAdditiveExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_86);
+            	    rule__XAdditiveExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop91;
+                }
+            } 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"
+    // InternalChartDSL.g:10088: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 {
+            // InternalChartDSL.g:10092:1: ( rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1 )
+            // InternalChartDSL.g:10093:2: rule__XAdditiveExpression__Group_1__0__Impl rule__XAdditiveExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:10100: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 {
+            // InternalChartDSL.g:10104:1: ( ( ( rule__XAdditiveExpression__Group_1_0__0 ) ) )
+            // InternalChartDSL.g:10105:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
+            {
+            // InternalChartDSL.g:10105:1: ( ( rule__XAdditiveExpression__Group_1_0__0 ) )
+            // InternalChartDSL.g:10106:2: ( rule__XAdditiveExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalChartDSL.g:10107:2: ( rule__XAdditiveExpression__Group_1_0__0 )
+            // InternalChartDSL.g:10107: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"
+    // InternalChartDSL.g:10115: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 {
+            // InternalChartDSL.g:10119:1: ( rule__XAdditiveExpression__Group_1__1__Impl )
+            // InternalChartDSL.g:10120: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"
+    // InternalChartDSL.g:10126: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 {
+            // InternalChartDSL.g:10130:1: ( ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalChartDSL.g:10131:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalChartDSL.g:10131:1: ( ( rule__XAdditiveExpression__RightOperandAssignment_1_1 ) )
+            // InternalChartDSL.g:10132:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalChartDSL.g:10133:2: ( rule__XAdditiveExpression__RightOperandAssignment_1_1 )
+            // InternalChartDSL.g:10133: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"
+    // InternalChartDSL.g:10142: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 {
+            // InternalChartDSL.g:10146:1: ( rule__XAdditiveExpression__Group_1_0__0__Impl )
+            // InternalChartDSL.g:10147: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"
+    // InternalChartDSL.g:10153: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 {
+            // InternalChartDSL.g:10157:1: ( ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) ) )
+            // InternalChartDSL.g:10158:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
+            {
+            // InternalChartDSL.g:10158:1: ( ( rule__XAdditiveExpression__Group_1_0_0__0 ) )
+            // InternalChartDSL.g:10159:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalChartDSL.g:10160:2: ( rule__XAdditiveExpression__Group_1_0_0__0 )
+            // InternalChartDSL.g:10160: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"
+    // InternalChartDSL.g:10169: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 {
+            // InternalChartDSL.g:10173:1: ( rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1 )
+            // InternalChartDSL.g:10174:2: rule__XAdditiveExpression__Group_1_0_0__0__Impl rule__XAdditiveExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_85);
+            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"
+    // InternalChartDSL.g:10181: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 {
+            // InternalChartDSL.g:10185:1: ( ( () ) )
+            // InternalChartDSL.g:10186:1: ( () )
+            {
+            // InternalChartDSL.g:10186:1: ( () )
+            // InternalChartDSL.g:10187:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalChartDSL.g:10188:2: ()
+            // InternalChartDSL.g:10188: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"
+    // InternalChartDSL.g:10196: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 {
+            // InternalChartDSL.g:10200:1: ( rule__XAdditiveExpression__Group_1_0_0__1__Impl )
+            // InternalChartDSL.g:10201: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"
+    // InternalChartDSL.g:10207: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 {
+            // InternalChartDSL.g:10211:1: ( ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalChartDSL.g:10212:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalChartDSL.g:10212:1: ( ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalChartDSL.g:10213:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalChartDSL.g:10214:2: ( rule__XAdditiveExpression__FeatureAssignment_1_0_0_1 )
+            // InternalChartDSL.g:10214: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"
+    // InternalChartDSL.g:10223: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 {
+            // InternalChartDSL.g:10227:1: ( rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1 )
+            // InternalChartDSL.g:10228:2: rule__XMultiplicativeExpression__Group__0__Impl rule__XMultiplicativeExpression__Group__1
+            {
+            pushFollow(FOLLOW_87);
+            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"
+    // InternalChartDSL.g:10235:1: rule__XMultiplicativeExpression__Group__0__Impl : ( ruleXUnaryOperation ) ;
+    public final void rule__XMultiplicativeExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:10239:1: ( ( ruleXUnaryOperation ) )
+            // InternalChartDSL.g:10240:1: ( ruleXUnaryOperation )
+            {
+            // InternalChartDSL.g:10240:1: ( ruleXUnaryOperation )
+            // InternalChartDSL.g:10241: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"
+    // InternalChartDSL.g:10250:1: rule__XMultiplicativeExpression__Group__1 : rule__XMultiplicativeExpression__Group__1__Impl ;
+    public final void rule__XMultiplicativeExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:10254:1: ( rule__XMultiplicativeExpression__Group__1__Impl )
+            // InternalChartDSL.g:10255: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"
+    // InternalChartDSL.g:10261: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 {
+            // InternalChartDSL.g:10265:1: ( ( ( rule__XMultiplicativeExpression__Group_1__0 )* ) )
+            // InternalChartDSL.g:10266:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
+            {
+            // InternalChartDSL.g:10266:1: ( ( rule__XMultiplicativeExpression__Group_1__0 )* )
+            // InternalChartDSL.g:10267:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1()); 
+            }
+            // InternalChartDSL.g:10268:2: ( rule__XMultiplicativeExpression__Group_1__0 )*
+            loop92:
+            do {
+                int alt92=2;
+                switch ( input.LA(1) ) {
+                case 36:
+                    {
+                    int LA92_2 = input.LA(2);
+
+                    if ( (synpred154_InternalChartDSL()) ) {
+                        alt92=1;
+                    }
+
+
+                    }
+                    break;
+                case 37:
+                    {
+                    int LA92_3 = input.LA(2);
+
+                    if ( (synpred154_InternalChartDSL()) ) {
+                        alt92=1;
+                    }
+
+
+                    }
+                    break;
+                case 38:
+                    {
+                    int LA92_4 = input.LA(2);
+
+                    if ( (synpred154_InternalChartDSL()) ) {
+                        alt92=1;
+                    }
+
+
+                    }
+                    break;
+                case 39:
+                    {
+                    int LA92_5 = input.LA(2);
+
+                    if ( (synpred154_InternalChartDSL()) ) {
+                        alt92=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt92) {
+            	case 1 :
+            	    // InternalChartDSL.g:10268:3: rule__XMultiplicativeExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_88);
+            	    rule__XMultiplicativeExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop92;
+                }
+            } 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"
+    // InternalChartDSL.g:10277: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 {
+            // InternalChartDSL.g:10281:1: ( rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1 )
+            // InternalChartDSL.g:10282:2: rule__XMultiplicativeExpression__Group_1__0__Impl rule__XMultiplicativeExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:10289: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 {
+            // InternalChartDSL.g:10293:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) ) )
+            // InternalChartDSL.g:10294:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
+            {
+            // InternalChartDSL.g:10294:1: ( ( rule__XMultiplicativeExpression__Group_1_0__0 ) )
+            // InternalChartDSL.g:10295:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalChartDSL.g:10296:2: ( rule__XMultiplicativeExpression__Group_1_0__0 )
+            // InternalChartDSL.g:10296: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"
+    // InternalChartDSL.g:10304: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 {
+            // InternalChartDSL.g:10308:1: ( rule__XMultiplicativeExpression__Group_1__1__Impl )
+            // InternalChartDSL.g:10309: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"
+    // InternalChartDSL.g:10315: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 {
+            // InternalChartDSL.g:10319:1: ( ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) ) )
+            // InternalChartDSL.g:10320:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
+            {
+            // InternalChartDSL.g:10320:1: ( ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 ) )
+            // InternalChartDSL.g:10321:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandAssignment_1_1()); 
+            }
+            // InternalChartDSL.g:10322:2: ( rule__XMultiplicativeExpression__RightOperandAssignment_1_1 )
+            // InternalChartDSL.g:10322: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"
+    // InternalChartDSL.g:10331: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 {
+            // InternalChartDSL.g:10335:1: ( rule__XMultiplicativeExpression__Group_1_0__0__Impl )
+            // InternalChartDSL.g:10336: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"
+    // InternalChartDSL.g:10342: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 {
+            // InternalChartDSL.g:10346:1: ( ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) ) )
+            // InternalChartDSL.g:10347:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
+            {
+            // InternalChartDSL.g:10347:1: ( ( rule__XMultiplicativeExpression__Group_1_0_0__0 ) )
+            // InternalChartDSL.g:10348:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalChartDSL.g:10349:2: ( rule__XMultiplicativeExpression__Group_1_0_0__0 )
+            // InternalChartDSL.g:10349: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"
+    // InternalChartDSL.g:10358: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 {
+            // InternalChartDSL.g:10362:1: ( rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1 )
+            // InternalChartDSL.g:10363:2: rule__XMultiplicativeExpression__Group_1_0_0__0__Impl rule__XMultiplicativeExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_87);
+            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"
+    // InternalChartDSL.g:10370: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 {
+            // InternalChartDSL.g:10374:1: ( ( () ) )
+            // InternalChartDSL.g:10375:1: ( () )
+            {
+            // InternalChartDSL.g:10375:1: ( () )
+            // InternalChartDSL.g:10376:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0()); 
+            }
+            // InternalChartDSL.g:10377:2: ()
+            // InternalChartDSL.g:10377: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"
+    // InternalChartDSL.g:10385: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 {
+            // InternalChartDSL.g:10389:1: ( rule__XMultiplicativeExpression__Group_1_0_0__1__Impl )
+            // InternalChartDSL.g:10390: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"
+    // InternalChartDSL.g:10396: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 {
+            // InternalChartDSL.g:10400:1: ( ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) ) )
+            // InternalChartDSL.g:10401:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
+            {
+            // InternalChartDSL.g:10401:1: ( ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 ) )
+            // InternalChartDSL.g:10402:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureAssignment_1_0_0_1()); 
+            }
+            // InternalChartDSL.g:10403:2: ( rule__XMultiplicativeExpression__FeatureAssignment_1_0_0_1 )
+            // InternalChartDSL.g:10403: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"
+    // InternalChartDSL.g:10412: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 {
+            // InternalChartDSL.g:10416:1: ( rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1 )
+            // InternalChartDSL.g:10417:2: rule__XUnaryOperation__Group_0__0__Impl rule__XUnaryOperation__Group_0__1
+            {
+            pushFollow(FOLLOW_89);
+            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"
+    // InternalChartDSL.g:10424:1: rule__XUnaryOperation__Group_0__0__Impl : ( () ) ;
+    public final void rule__XUnaryOperation__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:10428:1: ( ( () ) )
+            // InternalChartDSL.g:10429:1: ( () )
+            {
+            // InternalChartDSL.g:10429:1: ( () )
+            // InternalChartDSL.g:10430:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0()); 
+            }
+            // InternalChartDSL.g:10431:2: ()
+            // InternalChartDSL.g:10431: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"
+    // InternalChartDSL.g:10439: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 {
+            // InternalChartDSL.g:10443:1: ( rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2 )
+            // InternalChartDSL.g:10444:2: rule__XUnaryOperation__Group_0__1__Impl rule__XUnaryOperation__Group_0__2
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:10451: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 {
+            // InternalChartDSL.g:10455:1: ( ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) ) )
+            // InternalChartDSL.g:10456:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
+            {
+            // InternalChartDSL.g:10456:1: ( ( rule__XUnaryOperation__FeatureAssignment_0_1 ) )
+            // InternalChartDSL.g:10457:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getFeatureAssignment_0_1()); 
+            }
+            // InternalChartDSL.g:10458:2: ( rule__XUnaryOperation__FeatureAssignment_0_1 )
+            // InternalChartDSL.g:10458: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"
+    // InternalChartDSL.g:10466: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 {
+            // InternalChartDSL.g:10470:1: ( rule__XUnaryOperation__Group_0__2__Impl )
+            // InternalChartDSL.g:10471: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"
+    // InternalChartDSL.g:10477: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 {
+            // InternalChartDSL.g:10481:1: ( ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) ) )
+            // InternalChartDSL.g:10482:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
+            {
+            // InternalChartDSL.g:10482:1: ( ( rule__XUnaryOperation__OperandAssignment_0_2 ) )
+            // InternalChartDSL.g:10483:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getOperandAssignment_0_2()); 
+            }
+            // InternalChartDSL.g:10484:2: ( rule__XUnaryOperation__OperandAssignment_0_2 )
+            // InternalChartDSL.g:10484: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"
+    // InternalChartDSL.g:10493: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 {
+            // InternalChartDSL.g:10497:1: ( rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1 )
+            // InternalChartDSL.g:10498:2: rule__XCastedExpression__Group__0__Impl rule__XCastedExpression__Group__1
+            {
+            pushFollow(FOLLOW_90);
+            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"
+    // InternalChartDSL.g:10505:1: rule__XCastedExpression__Group__0__Impl : ( ruleXPostfixOperation ) ;
+    public final void rule__XCastedExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:10509:1: ( ( ruleXPostfixOperation ) )
+            // InternalChartDSL.g:10510:1: ( ruleXPostfixOperation )
+            {
+            // InternalChartDSL.g:10510:1: ( ruleXPostfixOperation )
+            // InternalChartDSL.g:10511: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"
+    // InternalChartDSL.g:10520:1: rule__XCastedExpression__Group__1 : rule__XCastedExpression__Group__1__Impl ;
+    public final void rule__XCastedExpression__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:10524:1: ( rule__XCastedExpression__Group__1__Impl )
+            // InternalChartDSL.g:10525: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"
+    // InternalChartDSL.g:10531: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 {
+            // InternalChartDSL.g:10535:1: ( ( ( rule__XCastedExpression__Group_1__0 )* ) )
+            // InternalChartDSL.g:10536:1: ( ( rule__XCastedExpression__Group_1__0 )* )
+            {
+            // InternalChartDSL.g:10536:1: ( ( rule__XCastedExpression__Group_1__0 )* )
+            // InternalChartDSL.g:10537:2: ( rule__XCastedExpression__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getGroup_1()); 
+            }
+            // InternalChartDSL.g:10538:2: ( rule__XCastedExpression__Group_1__0 )*
+            loop93:
+            do {
+                int alt93=2;
+                int LA93_0 = input.LA(1);
+
+                if ( (LA93_0==75) ) {
+                    int LA93_2 = input.LA(2);
+
+                    if ( (synpred155_InternalChartDSL()) ) {
+                        alt93=1;
+                    }
+
+
+                }
+
+
+                switch (alt93) {
+            	case 1 :
+            	    // InternalChartDSL.g:10538:3: rule__XCastedExpression__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_91);
+            	    rule__XCastedExpression__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop93;
+                }
+            } 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"
+    // InternalChartDSL.g:10547: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 {
+            // InternalChartDSL.g:10551:1: ( rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1 )
+            // InternalChartDSL.g:10552:2: rule__XCastedExpression__Group_1__0__Impl rule__XCastedExpression__Group_1__1
+            {
+            pushFollow(FOLLOW_78);
+            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"
+    // InternalChartDSL.g:10559: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 {
+            // InternalChartDSL.g:10563:1: ( ( ( rule__XCastedExpression__Group_1_0__0 ) ) )
+            // InternalChartDSL.g:10564:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
+            {
+            // InternalChartDSL.g:10564:1: ( ( rule__XCastedExpression__Group_1_0__0 ) )
+            // InternalChartDSL.g:10565:2: ( rule__XCastedExpression__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getGroup_1_0()); 
+            }
+            // InternalChartDSL.g:10566:2: ( rule__XCastedExpression__Group_1_0__0 )
+            // InternalChartDSL.g:10566: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"
+    // InternalChartDSL.g:10574: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 {
+            // InternalChartDSL.g:10578:1: ( rule__XCastedExpression__Group_1__1__Impl )
+            // InternalChartDSL.g:10579: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"
+    // InternalChartDSL.g:10585: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 {
+            // InternalChartDSL.g:10589:1: ( ( ( rule__XCastedExpression__TypeAssignment_1_1 ) ) )
+            // InternalChartDSL.g:10590:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
+            {
+            // InternalChartDSL.g:10590:1: ( ( rule__XCastedExpression__TypeAssignment_1_1 ) )
+            // InternalChartDSL.g:10591:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getTypeAssignment_1_1()); 
+            }
+            // InternalChartDSL.g:10592:2: ( rule__XCastedExpression__TypeAssignment_1_1 )
+            // InternalChartDSL.g:10592: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"
+    // InternalChartDSL.g:10601: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 {
+            // InternalChartDSL.g:10605:1: ( rule__XCastedExpression__Group_1_0__0__Impl )
+            // InternalChartDSL.g:10606: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"
+    // InternalChartDSL.g:10612: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 {
+            // InternalChartDSL.g:10616:1: ( ( ( rule__XCastedExpression__Group_1_0_0__0 ) ) )
+            // InternalChartDSL.g:10617:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
+            {
+            // InternalChartDSL.g:10617:1: ( ( rule__XCastedExpression__Group_1_0_0__0 ) )
+            // InternalChartDSL.g:10618:2: ( rule__XCastedExpression__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getGroup_1_0_0()); 
+            }
+            // InternalChartDSL.g:10619:2: ( rule__XCastedExpression__Group_1_0_0__0 )
+            // InternalChartDSL.g:10619: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"
+    // InternalChartDSL.g:10628: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 {
+            // InternalChartDSL.g:10632:1: ( rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1 )
+            // InternalChartDSL.g:10633:2: rule__XCastedExpression__Group_1_0_0__0__Impl rule__XCastedExpression__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_90);
+            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"
+    // InternalChartDSL.g:10640: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 {
+            // InternalChartDSL.g:10644:1: ( ( () ) )
+            // InternalChartDSL.g:10645:1: ( () )
+            {
+            // InternalChartDSL.g:10645:1: ( () )
+            // InternalChartDSL.g:10646:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0()); 
+            }
+            // InternalChartDSL.g:10647:2: ()
+            // InternalChartDSL.g:10647: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"
+    // InternalChartDSL.g:10655: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 {
+            // InternalChartDSL.g:10659:1: ( rule__XCastedExpression__Group_1_0_0__1__Impl )
+            // InternalChartDSL.g:10660: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"
+    // InternalChartDSL.g:10666: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 {
+            // InternalChartDSL.g:10670:1: ( ( 'as' ) )
+            // InternalChartDSL.g:10671:1: ( 'as' )
+            {
+            // InternalChartDSL.g:10671:1: ( 'as' )
+            // InternalChartDSL.g:10672:2: 'as'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1()); 
+            }
+            match(input,75,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"
+    // InternalChartDSL.g:10682: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 {
+            // InternalChartDSL.g:10686:1: ( rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1 )
+            // InternalChartDSL.g:10687:2: rule__XPostfixOperation__Group__0__Impl rule__XPostfixOperation__Group__1
+            {
+            pushFollow(FOLLOW_92);
+            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"
+    // InternalChartDSL.g:10694:1: rule__XPostfixOperation__Group__0__Impl : ( ruleXMemberFeatureCall ) ;
+    public final void rule__XPostfixOperation__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:10698:1: ( ( ruleXMemberFeatureCall ) )
+            // InternalChartDSL.g:10699:1: ( ruleXMemberFeatureCall )
+            {
+            // InternalChartDSL.g:10699:1: ( ruleXMemberFeatureCall )
+            // InternalChartDSL.g:10700: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"
+    // InternalChartDSL.g:10709:1: rule__XPostfixOperation__Group__1 : rule__XPostfixOperation__Group__1__Impl ;
+    public final void rule__XPostfixOperation__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:10713:1: ( rule__XPostfixOperation__Group__1__Impl )
+            // InternalChartDSL.g:10714: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"
+    // InternalChartDSL.g:10720: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 {
+            // InternalChartDSL.g:10724:1: ( ( ( rule__XPostfixOperation__Group_1__0 )? ) )
+            // InternalChartDSL.g:10725:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
+            {
+            // InternalChartDSL.g:10725:1: ( ( rule__XPostfixOperation__Group_1__0 )? )
+            // InternalChartDSL.g:10726:2: ( rule__XPostfixOperation__Group_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getGroup_1()); 
+            }
+            // InternalChartDSL.g:10727:2: ( rule__XPostfixOperation__Group_1__0 )?
+            int alt94=2;
+            int LA94_0 = input.LA(1);
+
+            if ( (LA94_0==41) ) {
+                int LA94_1 = input.LA(2);
+
+                if ( (synpred156_InternalChartDSL()) ) {
+                    alt94=1;
+                }
+            }
+            else if ( (LA94_0==42) ) {
+                int LA94_2 = input.LA(2);
+
+                if ( (synpred156_InternalChartDSL()) ) {
+                    alt94=1;
+                }
+            }
+            switch (alt94) {
+                case 1 :
+                    // InternalChartDSL.g:10727: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"
+    // InternalChartDSL.g:10736: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 {
+            // InternalChartDSL.g:10740:1: ( rule__XPostfixOperation__Group_1__0__Impl )
+            // InternalChartDSL.g:10741: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"
+    // InternalChartDSL.g:10747: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 {
+            // InternalChartDSL.g:10751:1: ( ( ( rule__XPostfixOperation__Group_1_0__0 ) ) )
+            // InternalChartDSL.g:10752:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
+            {
+            // InternalChartDSL.g:10752:1: ( ( rule__XPostfixOperation__Group_1_0__0 ) )
+            // InternalChartDSL.g:10753:2: ( rule__XPostfixOperation__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getGroup_1_0()); 
+            }
+            // InternalChartDSL.g:10754:2: ( rule__XPostfixOperation__Group_1_0__0 )
+            // InternalChartDSL.g:10754: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"
+    // InternalChartDSL.g:10763: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 {
+            // InternalChartDSL.g:10767:1: ( rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1 )
+            // InternalChartDSL.g:10768:2: rule__XPostfixOperation__Group_1_0__0__Impl rule__XPostfixOperation__Group_1_0__1
+            {
+            pushFollow(FOLLOW_92);
+            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"
+    // InternalChartDSL.g:10775:1: rule__XPostfixOperation__Group_1_0__0__Impl : ( () ) ;
+    public final void rule__XPostfixOperation__Group_1_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:10779:1: ( ( () ) )
+            // InternalChartDSL.g:10780:1: ( () )
+            {
+            // InternalChartDSL.g:10780:1: ( () )
+            // InternalChartDSL.g:10781:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0()); 
+            }
+            // InternalChartDSL.g:10782:2: ()
+            // InternalChartDSL.g:10782: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"
+    // InternalChartDSL.g:10790: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 {
+            // InternalChartDSL.g:10794:1: ( rule__XPostfixOperation__Group_1_0__1__Impl )
+            // InternalChartDSL.g:10795: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"
+    // InternalChartDSL.g:10801: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 {
+            // InternalChartDSL.g:10805:1: ( ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) ) )
+            // InternalChartDSL.g:10806:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
+            {
+            // InternalChartDSL.g:10806:1: ( ( rule__XPostfixOperation__FeatureAssignment_1_0_1 ) )
+            // InternalChartDSL.g:10807:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getFeatureAssignment_1_0_1()); 
+            }
+            // InternalChartDSL.g:10808:2: ( rule__XPostfixOperation__FeatureAssignment_1_0_1 )
+            // InternalChartDSL.g:10808: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"
+    // InternalChartDSL.g:10817: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 {
+            // InternalChartDSL.g:10821:1: ( rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1 )
+            // InternalChartDSL.g:10822:2: rule__XMemberFeatureCall__Group__0__Impl rule__XMemberFeatureCall__Group__1
+            {
+            pushFollow(FOLLOW_93);
+            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"
+    // InternalChartDSL.g:10829:1: rule__XMemberFeatureCall__Group__0__Impl : ( ruleXPrimaryExpression ) ;
+    public final void rule__XMemberFeatureCall__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:10833:1: ( ( ruleXPrimaryExpression ) )
+            // InternalChartDSL.g:10834:1: ( ruleXPrimaryExpression )
+            {
+            // InternalChartDSL.g:10834:1: ( ruleXPrimaryExpression )
+            // InternalChartDSL.g:10835: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"
+    // InternalChartDSL.g:10844:1: rule__XMemberFeatureCall__Group__1 : rule__XMemberFeatureCall__Group__1__Impl ;
+    public final void rule__XMemberFeatureCall__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:10848:1: ( rule__XMemberFeatureCall__Group__1__Impl )
+            // InternalChartDSL.g:10849: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"
+    // InternalChartDSL.g:10855:1: rule__XMemberFeatureCall__Group__1__Impl : ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) ;
+    public final void rule__XMemberFeatureCall__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:10859:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1 )* ) )
+            // InternalChartDSL.g:10860:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
+            {
+            // InternalChartDSL.g:10860:1: ( ( rule__XMemberFeatureCall__Alternatives_1 )* )
+            // InternalChartDSL.g:10861:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1()); 
+            }
+            // InternalChartDSL.g:10862:2: ( rule__XMemberFeatureCall__Alternatives_1 )*
+            loop95:
+            do {
+                int alt95=2;
+                switch ( input.LA(1) ) {
+                case 43:
+                    {
+                    int LA95_2 = input.LA(2);
+
+                    if ( (synpred157_InternalChartDSL()) ) {
+                        alt95=1;
+                    }
+
+
+                    }
+                    break;
+                case 150:
+                    {
+                    int LA95_3 = input.LA(2);
+
+                    if ( (synpred157_InternalChartDSL()) ) {
+                        alt95=1;
+                    }
+
+
+                    }
+                    break;
+                case 151:
+                    {
+                    int LA95_4 = input.LA(2);
+
+                    if ( (synpred157_InternalChartDSL()) ) {
+                        alt95=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt95) {
+            	case 1 :
+            	    // InternalChartDSL.g:10862:3: rule__XMemberFeatureCall__Alternatives_1
+            	    {
+            	    pushFollow(FOLLOW_94);
+            	    rule__XMemberFeatureCall__Alternatives_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop95;
+                }
+            } 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"
+    // InternalChartDSL.g:10871: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 {
+            // InternalChartDSL.g:10875:1: ( rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1 )
+            // InternalChartDSL.g:10876:2: rule__XMemberFeatureCall__Group_1_0__0__Impl rule__XMemberFeatureCall__Group_1_0__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:10883: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 {
+            // InternalChartDSL.g:10887:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) ) )
+            // InternalChartDSL.g:10888:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
+            {
+            // InternalChartDSL.g:10888:1: ( ( rule__XMemberFeatureCall__Group_1_0_0__0 ) )
+            // InternalChartDSL.g:10889:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0()); 
+            }
+            // InternalChartDSL.g:10890:2: ( rule__XMemberFeatureCall__Group_1_0_0__0 )
+            // InternalChartDSL.g:10890: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"
+    // InternalChartDSL.g:10898: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 {
+            // InternalChartDSL.g:10902:1: ( rule__XMemberFeatureCall__Group_1_0__1__Impl )
+            // InternalChartDSL.g:10903: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"
+    // InternalChartDSL.g:10909: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 {
+            // InternalChartDSL.g:10913:1: ( ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) ) )
+            // InternalChartDSL.g:10914:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
+            {
+            // InternalChartDSL.g:10914:1: ( ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 ) )
+            // InternalChartDSL.g:10915:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getValueAssignment_1_0_1()); 
+            }
+            // InternalChartDSL.g:10916:2: ( rule__XMemberFeatureCall__ValueAssignment_1_0_1 )
+            // InternalChartDSL.g:10916: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"
+    // InternalChartDSL.g:10925: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 {
+            // InternalChartDSL.g:10929:1: ( rule__XMemberFeatureCall__Group_1_0_0__0__Impl )
+            // InternalChartDSL.g:10930: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"
+    // InternalChartDSL.g:10936: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 {
+            // InternalChartDSL.g:10940:1: ( ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) ) )
+            // InternalChartDSL.g:10941:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
+            {
+            // InternalChartDSL.g:10941:1: ( ( rule__XMemberFeatureCall__Group_1_0_0_0__0 ) )
+            // InternalChartDSL.g:10942:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_0_0_0()); 
+            }
+            // InternalChartDSL.g:10943:2: ( rule__XMemberFeatureCall__Group_1_0_0_0__0 )
+            // InternalChartDSL.g:10943: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"
+    // InternalChartDSL.g:10952: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 {
+            // InternalChartDSL.g:10956:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1 )
+            // InternalChartDSL.g:10957:2: rule__XMemberFeatureCall__Group_1_0_0_0__0__Impl rule__XMemberFeatureCall__Group_1_0_0_0__1
+            {
+            pushFollow(FOLLOW_95);
+            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"
+    // InternalChartDSL.g:10964: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 {
+            // InternalChartDSL.g:10968:1: ( ( () ) )
+            // InternalChartDSL.g:10969:1: ( () )
+            {
+            // InternalChartDSL.g:10969:1: ( () )
+            // InternalChartDSL.g:10970:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0()); 
+            }
+            // InternalChartDSL.g:10971:2: ()
+            // InternalChartDSL.g:10971: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"
+    // InternalChartDSL.g:10979: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 {
+            // InternalChartDSL.g:10983:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2 )
+            // InternalChartDSL.g:10984:2: rule__XMemberFeatureCall__Group_1_0_0_0__1__Impl rule__XMemberFeatureCall__Group_1_0_0_0__2
+            {
+            pushFollow(FOLLOW_66);
+            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"
+    // InternalChartDSL.g:10991: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 {
+            // InternalChartDSL.g:10995:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) ) )
+            // InternalChartDSL.g:10996:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
+            {
+            // InternalChartDSL.g:10996:1: ( ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 ) )
+            // InternalChartDSL.g:10997:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_0_0_0_1()); 
+            }
+            // InternalChartDSL.g:10998:2: ( rule__XMemberFeatureCall__Alternatives_1_0_0_0_1 )
+            // InternalChartDSL.g:10998: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"
+    // InternalChartDSL.g:11006: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 {
+            // InternalChartDSL.g:11010:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3 )
+            // InternalChartDSL.g:11011:2: rule__XMemberFeatureCall__Group_1_0_0_0__2__Impl rule__XMemberFeatureCall__Group_1_0_0_0__3
+            {
+            pushFollow(FOLLOW_62);
+            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"
+    // InternalChartDSL.g:11018: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 {
+            // InternalChartDSL.g:11022:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) ) )
+            // InternalChartDSL.g:11023:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
+            {
+            // InternalChartDSL.g:11023:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 ) )
+            // InternalChartDSL.g:11024:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_0_0_0_2()); 
+            }
+            // InternalChartDSL.g:11025:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_0_0_0_2 )
+            // InternalChartDSL.g:11025: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"
+    // InternalChartDSL.g:11033: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 {
+            // InternalChartDSL.g:11037:1: ( rule__XMemberFeatureCall__Group_1_0_0_0__3__Impl )
+            // InternalChartDSL.g:11038: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"
+    // InternalChartDSL.g:11044: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 {
+            // InternalChartDSL.g:11048:1: ( ( ruleOpSingleAssign ) )
+            // InternalChartDSL.g:11049:1: ( ruleOpSingleAssign )
+            {
+            // InternalChartDSL.g:11049:1: ( ruleOpSingleAssign )
+            // InternalChartDSL.g:11050: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"
+    // InternalChartDSL.g:11060: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 {
+            // InternalChartDSL.g:11064:1: ( rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1 )
+            // InternalChartDSL.g:11065:2: rule__XMemberFeatureCall__Group_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1__1
+            {
+            pushFollow(FOLLOW_96);
+            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"
+    // InternalChartDSL.g:11072: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 {
+            // InternalChartDSL.g:11076:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) ) )
+            // InternalChartDSL.g:11077:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
+            {
+            // InternalChartDSL.g:11077:1: ( ( rule__XMemberFeatureCall__Group_1_1_0__0 ) )
+            // InternalChartDSL.g:11078:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0()); 
+            }
+            // InternalChartDSL.g:11079:2: ( rule__XMemberFeatureCall__Group_1_1_0__0 )
+            // InternalChartDSL.g:11079: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"
+    // InternalChartDSL.g:11087: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 {
+            // InternalChartDSL.g:11091:1: ( rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2 )
+            // InternalChartDSL.g:11092:2: rule__XMemberFeatureCall__Group_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1__2
+            {
+            pushFollow(FOLLOW_96);
+            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"
+    // InternalChartDSL.g:11099: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 {
+            // InternalChartDSL.g:11103:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? ) )
+            // InternalChartDSL.g:11104:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
+            {
+            // InternalChartDSL.g:11104:1: ( ( rule__XMemberFeatureCall__Group_1_1_1__0 )? )
+            // InternalChartDSL.g:11105:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1()); 
+            }
+            // InternalChartDSL.g:11106:2: ( rule__XMemberFeatureCall__Group_1_1_1__0 )?
+            int alt96=2;
+            int LA96_0 = input.LA(1);
+
+            if ( (LA96_0==27) ) {
+                alt96=1;
+            }
+            switch (alt96) {
+                case 1 :
+                    // InternalChartDSL.g:11106: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"
+    // InternalChartDSL.g:11114: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 {
+            // InternalChartDSL.g:11118:1: ( rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3 )
+            // InternalChartDSL.g:11119:2: rule__XMemberFeatureCall__Group_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1__3
+            {
+            pushFollow(FOLLOW_97);
+            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"
+    // InternalChartDSL.g:11126: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 {
+            // InternalChartDSL.g:11130:1: ( ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) ) )
+            // InternalChartDSL.g:11131:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
+            {
+            // InternalChartDSL.g:11131:1: ( ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 ) )
+            // InternalChartDSL.g:11132:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getFeatureAssignment_1_1_2()); 
+            }
+            // InternalChartDSL.g:11133:2: ( rule__XMemberFeatureCall__FeatureAssignment_1_1_2 )
+            // InternalChartDSL.g:11133: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"
+    // InternalChartDSL.g:11141: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 {
+            // InternalChartDSL.g:11145:1: ( rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4 )
+            // InternalChartDSL.g:11146:2: rule__XMemberFeatureCall__Group_1_1__3__Impl rule__XMemberFeatureCall__Group_1_1__4
+            {
+            pushFollow(FOLLOW_97);
+            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"
+    // InternalChartDSL.g:11153: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 {
+            // InternalChartDSL.g:11157:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? ) )
+            // InternalChartDSL.g:11158:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
+            {
+            // InternalChartDSL.g:11158:1: ( ( rule__XMemberFeatureCall__Group_1_1_3__0 )? )
+            // InternalChartDSL.g:11159:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_3()); 
+            }
+            // InternalChartDSL.g:11160:2: ( rule__XMemberFeatureCall__Group_1_1_3__0 )?
+            int alt97=2;
+            alt97 = dfa97.predict(input);
+            switch (alt97) {
+                case 1 :
+                    // InternalChartDSL.g:11160: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"
+    // InternalChartDSL.g:11168: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 {
+            // InternalChartDSL.g:11172:1: ( rule__XMemberFeatureCall__Group_1_1__4__Impl )
+            // InternalChartDSL.g:11173: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"
+    // InternalChartDSL.g:11179: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 {
+            // InternalChartDSL.g:11183:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? ) )
+            // InternalChartDSL.g:11184:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
+            {
+            // InternalChartDSL.g:11184:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )? )
+            // InternalChartDSL.g:11185:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_4()); 
+            }
+            // InternalChartDSL.g:11186:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )?
+            int alt98=2;
+            alt98 = dfa98.predict(input);
+            switch (alt98) {
+                case 1 :
+                    // InternalChartDSL.g:11186: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"
+    // InternalChartDSL.g:11195: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 {
+            // InternalChartDSL.g:11199:1: ( rule__XMemberFeatureCall__Group_1_1_0__0__Impl )
+            // InternalChartDSL.g:11200: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"
+    // InternalChartDSL.g:11206: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 {
+            // InternalChartDSL.g:11210:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) ) )
+            // InternalChartDSL.g:11211:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
+            {
+            // InternalChartDSL.g:11211:1: ( ( rule__XMemberFeatureCall__Group_1_1_0_0__0 ) )
+            // InternalChartDSL.g:11212:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_0_0()); 
+            }
+            // InternalChartDSL.g:11213:2: ( rule__XMemberFeatureCall__Group_1_1_0_0__0 )
+            // InternalChartDSL.g:11213: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"
+    // InternalChartDSL.g:11222: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 {
+            // InternalChartDSL.g:11226:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1 )
+            // InternalChartDSL.g:11227:2: rule__XMemberFeatureCall__Group_1_1_0_0__0__Impl rule__XMemberFeatureCall__Group_1_1_0_0__1
+            {
+            pushFollow(FOLLOW_93);
+            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"
+    // InternalChartDSL.g:11234: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 {
+            // InternalChartDSL.g:11238:1: ( ( () ) )
+            // InternalChartDSL.g:11239:1: ( () )
+            {
+            // InternalChartDSL.g:11239:1: ( () )
+            // InternalChartDSL.g:11240:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0()); 
+            }
+            // InternalChartDSL.g:11241:2: ()
+            // InternalChartDSL.g:11241: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"
+    // InternalChartDSL.g:11249: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 {
+            // InternalChartDSL.g:11253:1: ( rule__XMemberFeatureCall__Group_1_1_0_0__1__Impl )
+            // InternalChartDSL.g:11254: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"
+    // InternalChartDSL.g:11260: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 {
+            // InternalChartDSL.g:11264:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) ) )
+            // InternalChartDSL.g:11265:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
+            {
+            // InternalChartDSL.g:11265:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 ) )
+            // InternalChartDSL.g:11266:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_0_0_1()); 
+            }
+            // InternalChartDSL.g:11267:2: ( rule__XMemberFeatureCall__Alternatives_1_1_0_0_1 )
+            // InternalChartDSL.g:11267: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"
+    // InternalChartDSL.g:11276: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 {
+            // InternalChartDSL.g:11280:1: ( rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1 )
+            // InternalChartDSL.g:11281:2: rule__XMemberFeatureCall__Group_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_1__1
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalChartDSL.g:11288: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 {
+            // InternalChartDSL.g:11292:1: ( ( '<' ) )
+            // InternalChartDSL.g:11293:1: ( '<' )
+            {
+            // InternalChartDSL.g:11293:1: ( '<' )
+            // InternalChartDSL.g:11294: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"
+    // InternalChartDSL.g:11303: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 {
+            // InternalChartDSL.g:11307:1: ( rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2 )
+            // InternalChartDSL.g:11308:2: rule__XMemberFeatureCall__Group_1_1_1__1__Impl rule__XMemberFeatureCall__Group_1_1_1__2
+            {
+            pushFollow(FOLLOW_99);
+            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"
+    // InternalChartDSL.g:11315: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 {
+            // InternalChartDSL.g:11319:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) ) )
+            // InternalChartDSL.g:11320:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
+            {
+            // InternalChartDSL.g:11320:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 ) )
+            // InternalChartDSL.g:11321:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_1()); 
+            }
+            // InternalChartDSL.g:11322:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_1 )
+            // InternalChartDSL.g:11322: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"
+    // InternalChartDSL.g:11330: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 {
+            // InternalChartDSL.g:11334:1: ( rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3 )
+            // InternalChartDSL.g:11335:2: rule__XMemberFeatureCall__Group_1_1_1__2__Impl rule__XMemberFeatureCall__Group_1_1_1__3
+            {
+            pushFollow(FOLLOW_99);
+            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"
+    // InternalChartDSL.g:11342: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 {
+            // InternalChartDSL.g:11346:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* ) )
+            // InternalChartDSL.g:11347:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
+            {
+            // InternalChartDSL.g:11347:1: ( ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )* )
+            // InternalChartDSL.g:11348:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getGroup_1_1_1_2()); 
+            }
+            // InternalChartDSL.g:11349:2: ( rule__XMemberFeatureCall__Group_1_1_1_2__0 )*
+            loop99:
+            do {
+                int alt99=2;
+                int LA99_0 = input.LA(1);
+
+                if ( (LA99_0==98) ) {
+                    alt99=1;
+                }
+
+
+                switch (alt99) {
+            	case 1 :
+            	    // InternalChartDSL.g:11349:3: rule__XMemberFeatureCall__Group_1_1_1_2__0
+            	    {
+            	    pushFollow(FOLLOW_60);
+            	    rule__XMemberFeatureCall__Group_1_1_1_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop99;
+                }
+            } 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"
+    // InternalChartDSL.g:11357: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 {
+            // InternalChartDSL.g:11361:1: ( rule__XMemberFeatureCall__Group_1_1_1__3__Impl )
+            // InternalChartDSL.g:11362: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"
+    // InternalChartDSL.g:11368: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 {
+            // InternalChartDSL.g:11372:1: ( ( '>' ) )
+            // InternalChartDSL.g:11373:1: ( '>' )
+            {
+            // InternalChartDSL.g:11373:1: ( '>' )
+            // InternalChartDSL.g:11374: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"
+    // InternalChartDSL.g:11384: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 {
+            // InternalChartDSL.g:11388:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1 )
+            // InternalChartDSL.g:11389:2: rule__XMemberFeatureCall__Group_1_1_1_2__0__Impl rule__XMemberFeatureCall__Group_1_1_1_2__1
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalChartDSL.g:11396: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 {
+            // InternalChartDSL.g:11400:1: ( ( ',' ) )
+            // InternalChartDSL.g:11401:1: ( ',' )
+            {
+            // InternalChartDSL.g:11401:1: ( ',' )
+            // InternalChartDSL.g:11402:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0()); 
+            }
+            match(input,98,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"
+    // InternalChartDSL.g:11411: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 {
+            // InternalChartDSL.g:11415:1: ( rule__XMemberFeatureCall__Group_1_1_1_2__1__Impl )
+            // InternalChartDSL.g:11416: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"
+    // InternalChartDSL.g:11422: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 {
+            // InternalChartDSL.g:11426:1: ( ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) ) )
+            // InternalChartDSL.g:11427:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
+            {
+            // InternalChartDSL.g:11427:1: ( ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 ) )
+            // InternalChartDSL.g:11428:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsAssignment_1_1_1_2_1()); 
+            }
+            // InternalChartDSL.g:11429:2: ( rule__XMemberFeatureCall__TypeArgumentsAssignment_1_1_1_2_1 )
+            // InternalChartDSL.g:11429: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"
+    // InternalChartDSL.g:11438: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 {
+            // InternalChartDSL.g:11442:1: ( rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1 )
+            // InternalChartDSL.g:11443:2: rule__XMemberFeatureCall__Group_1_1_3__0__Impl rule__XMemberFeatureCall__Group_1_1_3__1
+            {
+            pushFollow(FOLLOW_100);
+            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"
+    // InternalChartDSL.g:11450: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 {
+            // InternalChartDSL.g:11454:1: ( ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) ) )
+            // InternalChartDSL.g:11455:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
+            {
+            // InternalChartDSL.g:11455:1: ( ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 ) )
+            // InternalChartDSL.g:11456:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallAssignment_1_1_3_0()); 
+            }
+            // InternalChartDSL.g:11457:2: ( rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 )
+            // InternalChartDSL.g:11457: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"
+    // InternalChartDSL.g:11465: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 {
+            // InternalChartDSL.g:11469:1: ( rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2 )
+            // InternalChartDSL.g:11470:2: rule__XMemberFeatureCall__Group_1_1_3__1__Impl rule__XMemberFeatureCall__Group_1_1_3__2
+            {
+            pushFollow(FOLLOW_100);
+            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"
+    // InternalChartDSL.g:11477: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 {
+            // InternalChartDSL.g:11481:1: ( ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? ) )
+            // InternalChartDSL.g:11482:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
+            {
+            // InternalChartDSL.g:11482:1: ( ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )? )
+            // InternalChartDSL.g:11483:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getAlternatives_1_1_3_1()); 
+            }
+            // InternalChartDSL.g:11484:2: ( rule__XMemberFeatureCall__Alternatives_1_1_3_1 )?
+            int alt100=2;
+            int LA100_0 = input.LA(1);
+
+            if ( ((LA100_0>=RULE_STRING && LA100_0<=RULE_DECIMAL)||LA100_0==27||LA100_0==31||(LA100_0>=34 && LA100_0<=35)||LA100_0==40||(LA100_0>=45 && LA100_0<=50)||LA100_0==72||LA100_0==96||(LA100_0>=100 && LA100_0<=101)||LA100_0==103||LA100_0==105||(LA100_0>=109 && LA100_0<=117)||LA100_0==119||LA100_0==152||LA100_0==154) ) {
+                alt100=1;
+            }
+            switch (alt100) {
+                case 1 :
+                    // InternalChartDSL.g:11484: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"
+    // InternalChartDSL.g:11492: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 {
+            // InternalChartDSL.g:11496:1: ( rule__XMemberFeatureCall__Group_1_1_3__2__Impl )
+            // InternalChartDSL.g:11497: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"
+    // InternalChartDSL.g:11503: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 {
+            // InternalChartDSL.g:11507:1: ( ( ')' ) )
+            // InternalChartDSL.g:11508:1: ( ')' )
+            {
+            // InternalChartDSL.g:11508:1: ( ')' )
+            // InternalChartDSL.g:11509:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2()); 
+            }
+            match(input,97,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"
+    // InternalChartDSL.g:11519: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 {
+            // InternalChartDSL.g:11523:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1 )
+            // InternalChartDSL.g:11524:2: rule__XMemberFeatureCall__Group_1_1_3_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1__1
+            {
+            pushFollow(FOLLOW_59);
+            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"
+    // InternalChartDSL.g:11531: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 {
+            // InternalChartDSL.g:11535:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) ) )
+            // InternalChartDSL.g:11536:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
+            {
+            // InternalChartDSL.g:11536:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 ) )
+            // InternalChartDSL.g:11537:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_1_0()); 
+            }
+            // InternalChartDSL.g:11538:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_0 )
+            // InternalChartDSL.g:11538: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"
+    // InternalChartDSL.g:11546: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 {
+            // InternalChartDSL.g:11550:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1__1__Impl )
+            // InternalChartDSL.g:11551: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"
+    // InternalChartDSL.g:11557: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 {
+            // InternalChartDSL.g:11561:1: ( ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* ) )
+            // InternalChartDSL.g:11562:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
+            {
+            // InternalChartDSL.g:11562:1: ( ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )* )
+            // InternalChartDSL.g:11563: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()); 
+            }
+            // InternalChartDSL.g:11564:2: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0 )*
+            loop101:
+            do {
+                int alt101=2;
+                int LA101_0 = input.LA(1);
+
+                if ( (LA101_0==98) ) {
+                    alt101=1;
+                }
+
+
+                switch (alt101) {
+            	case 1 :
+            	    // InternalChartDSL.g:11564:3: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_60);
+            	    rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop101;
+                }
+            } 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"
+    // InternalChartDSL.g:11573: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 {
+            // InternalChartDSL.g:11577:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1 )
+            // InternalChartDSL.g:11578:2: rule__XMemberFeatureCall__Group_1_1_3_1_1_1__0__Impl rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:11585: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 {
+            // InternalChartDSL.g:11589:1: ( ( ',' ) )
+            // InternalChartDSL.g:11590:1: ( ',' )
+            {
+            // InternalChartDSL.g:11590:1: ( ',' )
+            // InternalChartDSL.g:11591:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0()); 
+            }
+            match(input,98,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"
+    // InternalChartDSL.g:11600: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 {
+            // InternalChartDSL.g:11604:1: ( rule__XMemberFeatureCall__Group_1_1_3_1_1_1__1__Impl )
+            // InternalChartDSL.g:11605: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"
+    // InternalChartDSL.g:11611: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 {
+            // InternalChartDSL.g:11615:1: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) ) )
+            // InternalChartDSL.g:11616:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
+            {
+            // InternalChartDSL.g:11616:1: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 ) )
+            // InternalChartDSL.g:11617: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()); 
+            }
+            // InternalChartDSL.g:11618:2: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_1_1_1 )
+            // InternalChartDSL.g:11618: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"
+    // InternalChartDSL.g:11627: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 {
+            // InternalChartDSL.g:11631:1: ( rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1 )
+            // InternalChartDSL.g:11632:2: rule__XSetLiteral__Group__0__Impl rule__XSetLiteral__Group__1
+            {
+            pushFollow(FOLLOW_64);
+            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"
+    // InternalChartDSL.g:11639:1: rule__XSetLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XSetLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:11643:1: ( ( () ) )
+            // InternalChartDSL.g:11644:1: ( () )
+            {
+            // InternalChartDSL.g:11644:1: ( () )
+            // InternalChartDSL.g:11645:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0()); 
+            }
+            // InternalChartDSL.g:11646:2: ()
+            // InternalChartDSL.g:11646: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"
+    // InternalChartDSL.g:11654: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 {
+            // InternalChartDSL.g:11658:1: ( rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2 )
+            // InternalChartDSL.g:11659:2: rule__XSetLiteral__Group__1__Impl rule__XSetLiteral__Group__2
+            {
+            pushFollow(FOLLOW_8);
+            rule__XSetLiteral__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSetLiteral__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSetLiteral__Group__1"
+
+
+    // $ANTLR start "rule__XSetLiteral__Group__1__Impl"
+    // InternalChartDSL.g:11666:1: rule__XSetLiteral__Group__1__Impl : ( '#' ) ;
+    public final void rule__XSetLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:11670:1: ( ( '#' ) )
+            // InternalChartDSL.g:11671:1: ( '#' )
+            {
+            // InternalChartDSL.g:11671:1: ( '#' )
+            // InternalChartDSL.g:11672:2: '#'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1()); 
+            }
+            match(input,100,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"
+    // InternalChartDSL.g:11681: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 {
+            // InternalChartDSL.g:11685:1: ( rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3 )
+            // InternalChartDSL.g:11686:2: rule__XSetLiteral__Group__2__Impl rule__XSetLiteral__Group__3
+            {
+            pushFollow(FOLLOW_101);
+            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"
+    // InternalChartDSL.g:11693:1: rule__XSetLiteral__Group__2__Impl : ( '{' ) ;
+    public final void rule__XSetLiteral__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:11697:1: ( ( '{' ) )
+            // InternalChartDSL.g:11698:1: ( '{' )
+            {
+            // InternalChartDSL.g:11698:1: ( '{' )
+            // InternalChartDSL.g:11699:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2()); 
+            }
+            match(input,72,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"
+    // InternalChartDSL.g:11708: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 {
+            // InternalChartDSL.g:11712:1: ( rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4 )
+            // InternalChartDSL.g:11713:2: rule__XSetLiteral__Group__3__Impl rule__XSetLiteral__Group__4
+            {
+            pushFollow(FOLLOW_101);
+            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"
+    // InternalChartDSL.g:11720: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 {
+            // InternalChartDSL.g:11724:1: ( ( ( rule__XSetLiteral__Group_3__0 )? ) )
+            // InternalChartDSL.g:11725:1: ( ( rule__XSetLiteral__Group_3__0 )? )
+            {
+            // InternalChartDSL.g:11725:1: ( ( rule__XSetLiteral__Group_3__0 )? )
+            // InternalChartDSL.g:11726:2: ( rule__XSetLiteral__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getGroup_3()); 
+            }
+            // InternalChartDSL.g:11727:2: ( rule__XSetLiteral__Group_3__0 )?
+            int alt102=2;
+            int LA102_0 = input.LA(1);
+
+            if ( ((LA102_0>=RULE_STRING && LA102_0<=RULE_DECIMAL)||LA102_0==27||(LA102_0>=34 && LA102_0<=35)||LA102_0==40||(LA102_0>=45 && LA102_0<=50)||LA102_0==72||LA102_0==96||(LA102_0>=100 && LA102_0<=101)||LA102_0==103||LA102_0==105||(LA102_0>=109 && LA102_0<=117)||LA102_0==119||LA102_0==154) ) {
+                alt102=1;
+            }
+            switch (alt102) {
+                case 1 :
+                    // InternalChartDSL.g:11727: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"
+    // InternalChartDSL.g:11735:1: rule__XSetLiteral__Group__4 : rule__XSetLiteral__Group__4__Impl ;
+    public final void rule__XSetLiteral__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:11739:1: ( rule__XSetLiteral__Group__4__Impl )
+            // InternalChartDSL.g:11740: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"
+    // InternalChartDSL.g:11746:1: rule__XSetLiteral__Group__4__Impl : ( '}' ) ;
+    public final void rule__XSetLiteral__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:11750:1: ( ( '}' ) )
+            // InternalChartDSL.g:11751:1: ( '}' )
+            {
+            // InternalChartDSL.g:11751:1: ( '}' )
+            // InternalChartDSL.g:11752:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getRightCurlyBracketKeyword_4()); 
+            }
+            match(input,73,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"
+    // InternalChartDSL.g:11762: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 {
+            // InternalChartDSL.g:11766:1: ( rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1 )
+            // InternalChartDSL.g:11767:2: rule__XSetLiteral__Group_3__0__Impl rule__XSetLiteral__Group_3__1
+            {
+            pushFollow(FOLLOW_59);
+            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"
+    // InternalChartDSL.g:11774: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 {
+            // InternalChartDSL.g:11778:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) ) )
+            // InternalChartDSL.g:11779:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
+            {
+            // InternalChartDSL.g:11779:1: ( ( rule__XSetLiteral__ElementsAssignment_3_0 ) )
+            // InternalChartDSL.g:11780:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_0()); 
+            }
+            // InternalChartDSL.g:11781:2: ( rule__XSetLiteral__ElementsAssignment_3_0 )
+            // InternalChartDSL.g:11781: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"
+    // InternalChartDSL.g:11789: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 {
+            // InternalChartDSL.g:11793:1: ( rule__XSetLiteral__Group_3__1__Impl )
+            // InternalChartDSL.g:11794: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"
+    // InternalChartDSL.g:11800: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 {
+            // InternalChartDSL.g:11804:1: ( ( ( rule__XSetLiteral__Group_3_1__0 )* ) )
+            // InternalChartDSL.g:11805:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
+            {
+            // InternalChartDSL.g:11805:1: ( ( rule__XSetLiteral__Group_3_1__0 )* )
+            // InternalChartDSL.g:11806:2: ( rule__XSetLiteral__Group_3_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getGroup_3_1()); 
+            }
+            // InternalChartDSL.g:11807:2: ( rule__XSetLiteral__Group_3_1__0 )*
+            loop103:
+            do {
+                int alt103=2;
+                int LA103_0 = input.LA(1);
+
+                if ( (LA103_0==98) ) {
+                    alt103=1;
+                }
+
+
+                switch (alt103) {
+            	case 1 :
+            	    // InternalChartDSL.g:11807:3: rule__XSetLiteral__Group_3_1__0
+            	    {
+            	    pushFollow(FOLLOW_60);
+            	    rule__XSetLiteral__Group_3_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop103;
+                }
+            } 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"
+    // InternalChartDSL.g:11816: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 {
+            // InternalChartDSL.g:11820:1: ( rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1 )
+            // InternalChartDSL.g:11821:2: rule__XSetLiteral__Group_3_1__0__Impl rule__XSetLiteral__Group_3_1__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:11828:1: rule__XSetLiteral__Group_3_1__0__Impl : ( ',' ) ;
+    public final void rule__XSetLiteral__Group_3_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:11832:1: ( ( ',' ) )
+            // InternalChartDSL.g:11833:1: ( ',' )
+            {
+            // InternalChartDSL.g:11833:1: ( ',' )
+            // InternalChartDSL.g:11834:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0()); 
+            }
+            match(input,98,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"
+    // InternalChartDSL.g:11843: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 {
+            // InternalChartDSL.g:11847:1: ( rule__XSetLiteral__Group_3_1__1__Impl )
+            // InternalChartDSL.g:11848: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"
+    // InternalChartDSL.g:11854: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 {
+            // InternalChartDSL.g:11858:1: ( ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) ) )
+            // InternalChartDSL.g:11859:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
+            {
+            // InternalChartDSL.g:11859:1: ( ( rule__XSetLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalChartDSL.g:11860:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSetLiteralAccess().getElementsAssignment_3_1_1()); 
+            }
+            // InternalChartDSL.g:11861:2: ( rule__XSetLiteral__ElementsAssignment_3_1_1 )
+            // InternalChartDSL.g:11861: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"
+    // InternalChartDSL.g:11870: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 {
+            // InternalChartDSL.g:11874:1: ( rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1 )
+            // InternalChartDSL.g:11875:2: rule__XListLiteral__Group__0__Impl rule__XListLiteral__Group__1
+            {
+            pushFollow(FOLLOW_64);
+            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"
+    // InternalChartDSL.g:11882:1: rule__XListLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XListLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:11886:1: ( ( () ) )
+            // InternalChartDSL.g:11887:1: ( () )
+            {
+            // InternalChartDSL.g:11887:1: ( () )
+            // InternalChartDSL.g:11888:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getXListLiteralAction_0()); 
+            }
+            // InternalChartDSL.g:11889:2: ()
+            // InternalChartDSL.g:11889: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"
+    // InternalChartDSL.g:11897: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 {
+            // InternalChartDSL.g:11901:1: ( rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2 )
+            // InternalChartDSL.g:11902:2: rule__XListLiteral__Group__1__Impl rule__XListLiteral__Group__2
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalChartDSL.g:11909:1: rule__XListLiteral__Group__1__Impl : ( '#' ) ;
+    public final void rule__XListLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:11913:1: ( ( '#' ) )
+            // InternalChartDSL.g:11914:1: ( '#' )
+            {
+            // InternalChartDSL.g:11914:1: ( '#' )
+            // InternalChartDSL.g:11915:2: '#'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1()); 
+            }
+            match(input,100,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"
+    // InternalChartDSL.g:11924: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 {
+            // InternalChartDSL.g:11928:1: ( rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3 )
+            // InternalChartDSL.g:11929:2: rule__XListLiteral__Group__2__Impl rule__XListLiteral__Group__3
+            {
+            pushFollow(FOLLOW_63);
+            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"
+    // InternalChartDSL.g:11936:1: rule__XListLiteral__Group__2__Impl : ( '[' ) ;
+    public final void rule__XListLiteral__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:11940:1: ( ( '[' ) )
+            // InternalChartDSL.g:11941:1: ( '[' )
+            {
+            // InternalChartDSL.g:11941:1: ( '[' )
+            // InternalChartDSL.g:11942:2: '['
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2()); 
+            }
+            match(input,101,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"
+    // InternalChartDSL.g:11951: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 {
+            // InternalChartDSL.g:11955:1: ( rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4 )
+            // InternalChartDSL.g:11956:2: rule__XListLiteral__Group__3__Impl rule__XListLiteral__Group__4
+            {
+            pushFollow(FOLLOW_63);
+            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"
+    // InternalChartDSL.g:11963: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 {
+            // InternalChartDSL.g:11967:1: ( ( ( rule__XListLiteral__Group_3__0 )? ) )
+            // InternalChartDSL.g:11968:1: ( ( rule__XListLiteral__Group_3__0 )? )
+            {
+            // InternalChartDSL.g:11968:1: ( ( rule__XListLiteral__Group_3__0 )? )
+            // InternalChartDSL.g:11969:2: ( rule__XListLiteral__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getGroup_3()); 
+            }
+            // InternalChartDSL.g:11970:2: ( rule__XListLiteral__Group_3__0 )?
+            int alt104=2;
+            int LA104_0 = input.LA(1);
+
+            if ( ((LA104_0>=RULE_STRING && LA104_0<=RULE_DECIMAL)||LA104_0==27||(LA104_0>=34 && LA104_0<=35)||LA104_0==40||(LA104_0>=45 && LA104_0<=50)||LA104_0==72||LA104_0==96||(LA104_0>=100 && LA104_0<=101)||LA104_0==103||LA104_0==105||(LA104_0>=109 && LA104_0<=117)||LA104_0==119||LA104_0==154) ) {
+                alt104=1;
+            }
+            switch (alt104) {
+                case 1 :
+                    // InternalChartDSL.g:11970: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"
+    // InternalChartDSL.g:11978:1: rule__XListLiteral__Group__4 : rule__XListLiteral__Group__4__Impl ;
+    public final void rule__XListLiteral__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:11982:1: ( rule__XListLiteral__Group__4__Impl )
+            // InternalChartDSL.g:11983: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"
+    // InternalChartDSL.g:11989:1: rule__XListLiteral__Group__4__Impl : ( ']' ) ;
+    public final void rule__XListLiteral__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:11993:1: ( ( ']' ) )
+            // InternalChartDSL.g:11994:1: ( ']' )
+            {
+            // InternalChartDSL.g:11994:1: ( ']' )
+            // InternalChartDSL.g:11995:2: ']'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getRightSquareBracketKeyword_4()); 
+            }
+            match(input,99,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"
+    // InternalChartDSL.g:12005: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 {
+            // InternalChartDSL.g:12009:1: ( rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1 )
+            // InternalChartDSL.g:12010:2: rule__XListLiteral__Group_3__0__Impl rule__XListLiteral__Group_3__1
+            {
+            pushFollow(FOLLOW_59);
+            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"
+    // InternalChartDSL.g:12017: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 {
+            // InternalChartDSL.g:12021:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_0 ) ) )
+            // InternalChartDSL.g:12022:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
+            {
+            // InternalChartDSL.g:12022:1: ( ( rule__XListLiteral__ElementsAssignment_3_0 ) )
+            // InternalChartDSL.g:12023:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_0()); 
+            }
+            // InternalChartDSL.g:12024:2: ( rule__XListLiteral__ElementsAssignment_3_0 )
+            // InternalChartDSL.g:12024: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"
+    // InternalChartDSL.g:12032: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 {
+            // InternalChartDSL.g:12036:1: ( rule__XListLiteral__Group_3__1__Impl )
+            // InternalChartDSL.g:12037: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"
+    // InternalChartDSL.g:12043: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 {
+            // InternalChartDSL.g:12047:1: ( ( ( rule__XListLiteral__Group_3_1__0 )* ) )
+            // InternalChartDSL.g:12048:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
+            {
+            // InternalChartDSL.g:12048:1: ( ( rule__XListLiteral__Group_3_1__0 )* )
+            // InternalChartDSL.g:12049:2: ( rule__XListLiteral__Group_3_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getGroup_3_1()); 
+            }
+            // InternalChartDSL.g:12050:2: ( rule__XListLiteral__Group_3_1__0 )*
+            loop105:
+            do {
+                int alt105=2;
+                int LA105_0 = input.LA(1);
+
+                if ( (LA105_0==98) ) {
+                    alt105=1;
+                }
+
+
+                switch (alt105) {
+            	case 1 :
+            	    // InternalChartDSL.g:12050:3: rule__XListLiteral__Group_3_1__0
+            	    {
+            	    pushFollow(FOLLOW_60);
+            	    rule__XListLiteral__Group_3_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop105;
+                }
+            } 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"
+    // InternalChartDSL.g:12059: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 {
+            // InternalChartDSL.g:12063:1: ( rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1 )
+            // InternalChartDSL.g:12064:2: rule__XListLiteral__Group_3_1__0__Impl rule__XListLiteral__Group_3_1__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:12071:1: rule__XListLiteral__Group_3_1__0__Impl : ( ',' ) ;
+    public final void rule__XListLiteral__Group_3_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:12075:1: ( ( ',' ) )
+            // InternalChartDSL.g:12076:1: ( ',' )
+            {
+            // InternalChartDSL.g:12076:1: ( ',' )
+            // InternalChartDSL.g:12077:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0()); 
+            }
+            match(input,98,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"
+    // InternalChartDSL.g:12086: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 {
+            // InternalChartDSL.g:12090:1: ( rule__XListLiteral__Group_3_1__1__Impl )
+            // InternalChartDSL.g:12091: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"
+    // InternalChartDSL.g:12097: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 {
+            // InternalChartDSL.g:12101:1: ( ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) ) )
+            // InternalChartDSL.g:12102:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
+            {
+            // InternalChartDSL.g:12102:1: ( ( rule__XListLiteral__ElementsAssignment_3_1_1 ) )
+            // InternalChartDSL.g:12103:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXListLiteralAccess().getElementsAssignment_3_1_1()); 
+            }
+            // InternalChartDSL.g:12104:2: ( rule__XListLiteral__ElementsAssignment_3_1_1 )
+            // InternalChartDSL.g:12104: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"
+    // InternalChartDSL.g:12113: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 {
+            // InternalChartDSL.g:12117:1: ( rule__XClosure__Group__0__Impl rule__XClosure__Group__1 )
+            // InternalChartDSL.g:12118:2: rule__XClosure__Group__0__Impl rule__XClosure__Group__1
+            {
+            pushFollow(FOLLOW_102);
+            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"
+    // InternalChartDSL.g:12125: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 {
+            // InternalChartDSL.g:12129:1: ( ( ( rule__XClosure__Group_0__0 ) ) )
+            // InternalChartDSL.g:12130:1: ( ( rule__XClosure__Group_0__0 ) )
+            {
+            // InternalChartDSL.g:12130:1: ( ( rule__XClosure__Group_0__0 ) )
+            // InternalChartDSL.g:12131:2: ( rule__XClosure__Group_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_0()); 
+            }
+            // InternalChartDSL.g:12132:2: ( rule__XClosure__Group_0__0 )
+            // InternalChartDSL.g:12132: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"
+    // InternalChartDSL.g:12140: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 {
+            // InternalChartDSL.g:12144:1: ( rule__XClosure__Group__1__Impl rule__XClosure__Group__2 )
+            // InternalChartDSL.g:12145:2: rule__XClosure__Group__1__Impl rule__XClosure__Group__2
+            {
+            pushFollow(FOLLOW_102);
+            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"
+    // InternalChartDSL.g:12152: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 {
+            // InternalChartDSL.g:12156:1: ( ( ( rule__XClosure__Group_1__0 )? ) )
+            // InternalChartDSL.g:12157:1: ( ( rule__XClosure__Group_1__0 )? )
+            {
+            // InternalChartDSL.g:12157:1: ( ( rule__XClosure__Group_1__0 )? )
+            // InternalChartDSL.g:12158:2: ( rule__XClosure__Group_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_1()); 
+            }
+            // InternalChartDSL.g:12159:2: ( rule__XClosure__Group_1__0 )?
+            int alt106=2;
+            alt106 = dfa106.predict(input);
+            switch (alt106) {
+                case 1 :
+                    // InternalChartDSL.g:12159: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"
+    // InternalChartDSL.g:12167: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 {
+            // InternalChartDSL.g:12171:1: ( rule__XClosure__Group__2__Impl rule__XClosure__Group__3 )
+            // InternalChartDSL.g:12172:2: rule__XClosure__Group__2__Impl rule__XClosure__Group__3
+            {
+            pushFollow(FOLLOW_103);
+            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"
+    // InternalChartDSL.g:12179:1: rule__XClosure__Group__2__Impl : ( ( rule__XClosure__ExpressionAssignment_2 ) ) ;
+    public final void rule__XClosure__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:12183:1: ( ( ( rule__XClosure__ExpressionAssignment_2 ) ) )
+            // InternalChartDSL.g:12184:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
+            {
+            // InternalChartDSL.g:12184:1: ( ( rule__XClosure__ExpressionAssignment_2 ) )
+            // InternalChartDSL.g:12185:2: ( rule__XClosure__ExpressionAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getExpressionAssignment_2()); 
+            }
+            // InternalChartDSL.g:12186:2: ( rule__XClosure__ExpressionAssignment_2 )
+            // InternalChartDSL.g:12186: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"
+    // InternalChartDSL.g:12194:1: rule__XClosure__Group__3 : rule__XClosure__Group__3__Impl ;
+    public final void rule__XClosure__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:12198:1: ( rule__XClosure__Group__3__Impl )
+            // InternalChartDSL.g:12199: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"
+    // InternalChartDSL.g:12205:1: rule__XClosure__Group__3__Impl : ( ']' ) ;
+    public final void rule__XClosure__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:12209:1: ( ( ']' ) )
+            // InternalChartDSL.g:12210:1: ( ']' )
+            {
+            // InternalChartDSL.g:12210:1: ( ']' )
+            // InternalChartDSL.g:12211:2: ']'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getRightSquareBracketKeyword_3()); 
+            }
+            match(input,99,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"
+    // InternalChartDSL.g:12221: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 {
+            // InternalChartDSL.g:12225:1: ( rule__XClosure__Group_0__0__Impl )
+            // InternalChartDSL.g:12226: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"
+    // InternalChartDSL.g:12232: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 {
+            // InternalChartDSL.g:12236:1: ( ( ( rule__XClosure__Group_0_0__0 ) ) )
+            // InternalChartDSL.g:12237:1: ( ( rule__XClosure__Group_0_0__0 ) )
+            {
+            // InternalChartDSL.g:12237:1: ( ( rule__XClosure__Group_0_0__0 ) )
+            // InternalChartDSL.g:12238:2: ( rule__XClosure__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_0_0()); 
+            }
+            // InternalChartDSL.g:12239:2: ( rule__XClosure__Group_0_0__0 )
+            // InternalChartDSL.g:12239: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"
+    // InternalChartDSL.g:12248: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 {
+            // InternalChartDSL.g:12252:1: ( rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1 )
+            // InternalChartDSL.g:12253:2: rule__XClosure__Group_0_0__0__Impl rule__XClosure__Group_0_0__1
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalChartDSL.g:12260:1: rule__XClosure__Group_0_0__0__Impl : ( () ) ;
+    public final void rule__XClosure__Group_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:12264:1: ( ( () ) )
+            // InternalChartDSL.g:12265:1: ( () )
+            {
+            // InternalChartDSL.g:12265:1: ( () )
+            // InternalChartDSL.g:12266:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getXClosureAction_0_0_0()); 
+            }
+            // InternalChartDSL.g:12267:2: ()
+            // InternalChartDSL.g:12267: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"
+    // InternalChartDSL.g:12275: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 {
+            // InternalChartDSL.g:12279:1: ( rule__XClosure__Group_0_0__1__Impl )
+            // InternalChartDSL.g:12280: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"
+    // InternalChartDSL.g:12286:1: rule__XClosure__Group_0_0__1__Impl : ( '[' ) ;
+    public final void rule__XClosure__Group_0_0__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:12290:1: ( ( '[' ) )
+            // InternalChartDSL.g:12291:1: ( '[' )
+            {
+            // InternalChartDSL.g:12291:1: ( '[' )
+            // InternalChartDSL.g:12292:2: '['
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1()); 
+            }
+            match(input,101,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"
+    // InternalChartDSL.g:12302: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 {
+            // InternalChartDSL.g:12306:1: ( rule__XClosure__Group_1__0__Impl )
+            // InternalChartDSL.g:12307: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"
+    // InternalChartDSL.g:12313: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 {
+            // InternalChartDSL.g:12317:1: ( ( ( rule__XClosure__Group_1_0__0 ) ) )
+            // InternalChartDSL.g:12318:1: ( ( rule__XClosure__Group_1_0__0 ) )
+            {
+            // InternalChartDSL.g:12318:1: ( ( rule__XClosure__Group_1_0__0 ) )
+            // InternalChartDSL.g:12319:2: ( rule__XClosure__Group_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_1_0()); 
+            }
+            // InternalChartDSL.g:12320:2: ( rule__XClosure__Group_1_0__0 )
+            // InternalChartDSL.g:12320: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"
+    // InternalChartDSL.g:12329: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 {
+            // InternalChartDSL.g:12333:1: ( rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1 )
+            // InternalChartDSL.g:12334:2: rule__XClosure__Group_1_0__0__Impl rule__XClosure__Group_1_0__1
+            {
+            pushFollow(FOLLOW_104);
+            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"
+    // InternalChartDSL.g:12341: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 {
+            // InternalChartDSL.g:12345:1: ( ( ( rule__XClosure__Group_1_0_0__0 )? ) )
+            // InternalChartDSL.g:12346:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
+            {
+            // InternalChartDSL.g:12346:1: ( ( rule__XClosure__Group_1_0_0__0 )? )
+            // InternalChartDSL.g:12347:2: ( rule__XClosure__Group_1_0_0__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_1_0_0()); 
+            }
+            // InternalChartDSL.g:12348:2: ( rule__XClosure__Group_1_0_0__0 )?
+            int alt107=2;
+            int LA107_0 = input.LA(1);
+
+            if ( (LA107_0==RULE_ID||LA107_0==31||LA107_0==96) ) {
+                alt107=1;
+            }
+            switch (alt107) {
+                case 1 :
+                    // InternalChartDSL.g:12348: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"
+    // InternalChartDSL.g:12356: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 {
+            // InternalChartDSL.g:12360:1: ( rule__XClosure__Group_1_0__1__Impl )
+            // InternalChartDSL.g:12361: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"
+    // InternalChartDSL.g:12367: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 {
+            // InternalChartDSL.g:12371:1: ( ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) ) )
+            // InternalChartDSL.g:12372:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
+            {
+            // InternalChartDSL.g:12372:1: ( ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 ) )
+            // InternalChartDSL.g:12373:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getExplicitSyntaxAssignment_1_0_1()); 
+            }
+            // InternalChartDSL.g:12374:2: ( rule__XClosure__ExplicitSyntaxAssignment_1_0_1 )
+            // InternalChartDSL.g:12374: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"
+    // InternalChartDSL.g:12383: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 {
+            // InternalChartDSL.g:12387:1: ( rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1 )
+            // InternalChartDSL.g:12388:2: rule__XClosure__Group_1_0_0__0__Impl rule__XClosure__Group_1_0_0__1
+            {
+            pushFollow(FOLLOW_59);
+            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"
+    // InternalChartDSL.g:12395: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 {
+            // InternalChartDSL.g:12399:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) ) )
+            // InternalChartDSL.g:12400:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
+            {
+            // InternalChartDSL.g:12400:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 ) )
+            // InternalChartDSL.g:12401:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_0()); 
+            }
+            // InternalChartDSL.g:12402:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_0 )
+            // InternalChartDSL.g:12402: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"
+    // InternalChartDSL.g:12410: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 {
+            // InternalChartDSL.g:12414:1: ( rule__XClosure__Group_1_0_0__1__Impl )
+            // InternalChartDSL.g:12415: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"
+    // InternalChartDSL.g:12421: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 {
+            // InternalChartDSL.g:12425:1: ( ( ( rule__XClosure__Group_1_0_0_1__0 )* ) )
+            // InternalChartDSL.g:12426:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
+            {
+            // InternalChartDSL.g:12426:1: ( ( rule__XClosure__Group_1_0_0_1__0 )* )
+            // InternalChartDSL.g:12427:2: ( rule__XClosure__Group_1_0_0_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getGroup_1_0_0_1()); 
+            }
+            // InternalChartDSL.g:12428:2: ( rule__XClosure__Group_1_0_0_1__0 )*
+            loop108:
+            do {
+                int alt108=2;
+                int LA108_0 = input.LA(1);
+
+                if ( (LA108_0==98) ) {
+                    alt108=1;
+                }
+
+
+                switch (alt108) {
+            	case 1 :
+            	    // InternalChartDSL.g:12428:3: rule__XClosure__Group_1_0_0_1__0
+            	    {
+            	    pushFollow(FOLLOW_60);
+            	    rule__XClosure__Group_1_0_0_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop108;
+                }
+            } 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"
+    // InternalChartDSL.g:12437: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 {
+            // InternalChartDSL.g:12441:1: ( rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1 )
+            // InternalChartDSL.g:12442:2: rule__XClosure__Group_1_0_0_1__0__Impl rule__XClosure__Group_1_0_0_1__1
+            {
+            pushFollow(FOLLOW_78);
+            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"
+    // InternalChartDSL.g:12449: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 {
+            // InternalChartDSL.g:12453:1: ( ( ',' ) )
+            // InternalChartDSL.g:12454:1: ( ',' )
+            {
+            // InternalChartDSL.g:12454:1: ( ',' )
+            // InternalChartDSL.g:12455:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0()); 
+            }
+            match(input,98,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"
+    // InternalChartDSL.g:12464: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 {
+            // InternalChartDSL.g:12468:1: ( rule__XClosure__Group_1_0_0_1__1__Impl )
+            // InternalChartDSL.g:12469: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"
+    // InternalChartDSL.g:12475: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 {
+            // InternalChartDSL.g:12479:1: ( ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) ) )
+            // InternalChartDSL.g:12480:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
+            {
+            // InternalChartDSL.g:12480:1: ( ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 ) )
+            // InternalChartDSL.g:12481:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getDeclaredFormalParametersAssignment_1_0_0_1_1()); 
+            }
+            // InternalChartDSL.g:12482:2: ( rule__XClosure__DeclaredFormalParametersAssignment_1_0_0_1_1 )
+            // InternalChartDSL.g:12482: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"
+    // InternalChartDSL.g:12491: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 {
+            // InternalChartDSL.g:12495:1: ( rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1 )
+            // InternalChartDSL.g:12496:2: rule__XExpressionInClosure__Group__0__Impl rule__XExpressionInClosure__Group__1
+            {
+            pushFollow(FOLLOW_102);
+            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"
+    // InternalChartDSL.g:12503:1: rule__XExpressionInClosure__Group__0__Impl : ( () ) ;
+    public final void rule__XExpressionInClosure__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:12507:1: ( ( () ) )
+            // InternalChartDSL.g:12508:1: ( () )
+            {
+            // InternalChartDSL.g:12508:1: ( () )
+            // InternalChartDSL.g:12509:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0()); 
+            }
+            // InternalChartDSL.g:12510:2: ()
+            // InternalChartDSL.g:12510: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"
+    // InternalChartDSL.g:12518:1: rule__XExpressionInClosure__Group__1 : rule__XExpressionInClosure__Group__1__Impl ;
+    public final void rule__XExpressionInClosure__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:12522:1: ( rule__XExpressionInClosure__Group__1__Impl )
+            // InternalChartDSL.g:12523: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"
+    // InternalChartDSL.g:12529: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 {
+            // InternalChartDSL.g:12533:1: ( ( ( rule__XExpressionInClosure__Group_1__0 )* ) )
+            // InternalChartDSL.g:12534:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
+            {
+            // InternalChartDSL.g:12534:1: ( ( rule__XExpressionInClosure__Group_1__0 )* )
+            // InternalChartDSL.g:12535:2: ( rule__XExpressionInClosure__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getGroup_1()); 
+            }
+            // InternalChartDSL.g:12536:2: ( rule__XExpressionInClosure__Group_1__0 )*
+            loop109:
+            do {
+                int alt109=2;
+                int LA109_0 = input.LA(1);
+
+                if ( ((LA109_0>=RULE_STRING && LA109_0<=RULE_DECIMAL)||LA109_0==27||(LA109_0>=34 && LA109_0<=35)||LA109_0==40||(LA109_0>=44 && LA109_0<=50)||LA109_0==72||LA109_0==96||(LA109_0>=100 && LA109_0<=101)||LA109_0==103||LA109_0==105||(LA109_0>=109 && LA109_0<=117)||LA109_0==119||(LA109_0>=153 && LA109_0<=154)) ) {
+                    alt109=1;
+                }
+
+
+                switch (alt109) {
+            	case 1 :
+            	    // InternalChartDSL.g:12536:3: rule__XExpressionInClosure__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_105);
+            	    rule__XExpressionInClosure__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop109;
+                }
+            } 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"
+    // InternalChartDSL.g:12545: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 {
+            // InternalChartDSL.g:12549:1: ( rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1 )
+            // InternalChartDSL.g:12550:2: rule__XExpressionInClosure__Group_1__0__Impl rule__XExpressionInClosure__Group_1__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalChartDSL.g:12557: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 {
+            // InternalChartDSL.g:12561:1: ( ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) ) )
+            // InternalChartDSL.g:12562:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
+            {
+            // InternalChartDSL.g:12562:1: ( ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 ) )
+            // InternalChartDSL.g:12563:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getExpressionsAssignment_1_0()); 
+            }
+            // InternalChartDSL.g:12564:2: ( rule__XExpressionInClosure__ExpressionsAssignment_1_0 )
+            // InternalChartDSL.g:12564: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"
+    // InternalChartDSL.g:12572: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 {
+            // InternalChartDSL.g:12576:1: ( rule__XExpressionInClosure__Group_1__1__Impl )
+            // InternalChartDSL.g:12577: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"
+    // InternalChartDSL.g:12583:1: rule__XExpressionInClosure__Group_1__1__Impl : ( ( ';' )? ) ;
+    public final void rule__XExpressionInClosure__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:12587:1: ( ( ( ';' )? ) )
+            // InternalChartDSL.g:12588:1: ( ( ';' )? )
+            {
+            // InternalChartDSL.g:12588:1: ( ( ';' )? )
+            // InternalChartDSL.g:12589:2: ( ';' )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1()); 
+            }
+            // InternalChartDSL.g:12590:2: ( ';' )?
+            int alt110=2;
+            int LA110_0 = input.LA(1);
+
+            if ( (LA110_0==94) ) {
+                alt110=1;
+            }
+            switch (alt110) {
+                case 1 :
+                    // InternalChartDSL.g:12590:3: ';'
+                    {
+                    match(input,94,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"
+    // InternalChartDSL.g:12599: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 {
+            // InternalChartDSL.g:12603:1: ( rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1 )
+            // InternalChartDSL.g:12604:2: rule__XShortClosure__Group__0__Impl rule__XShortClosure__Group__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:12611: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 {
+            // InternalChartDSL.g:12615:1: ( ( ( rule__XShortClosure__Group_0__0 ) ) )
+            // InternalChartDSL.g:12616:1: ( ( rule__XShortClosure__Group_0__0 ) )
+            {
+            // InternalChartDSL.g:12616:1: ( ( rule__XShortClosure__Group_0__0 ) )
+            // InternalChartDSL.g:12617:2: ( rule__XShortClosure__Group_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup_0()); 
+            }
+            // InternalChartDSL.g:12618:2: ( rule__XShortClosure__Group_0__0 )
+            // InternalChartDSL.g:12618: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"
+    // InternalChartDSL.g:12626:1: rule__XShortClosure__Group__1 : rule__XShortClosure__Group__1__Impl ;
+    public final void rule__XShortClosure__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:12630:1: ( rule__XShortClosure__Group__1__Impl )
+            // InternalChartDSL.g:12631: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"
+    // InternalChartDSL.g:12637:1: rule__XShortClosure__Group__1__Impl : ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) ;
+    public final void rule__XShortClosure__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:12641:1: ( ( ( rule__XShortClosure__ExpressionAssignment_1 ) ) )
+            // InternalChartDSL.g:12642:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
+            {
+            // InternalChartDSL.g:12642:1: ( ( rule__XShortClosure__ExpressionAssignment_1 ) )
+            // InternalChartDSL.g:12643:2: ( rule__XShortClosure__ExpressionAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getExpressionAssignment_1()); 
+            }
+            // InternalChartDSL.g:12644:2: ( rule__XShortClosure__ExpressionAssignment_1 )
+            // InternalChartDSL.g:12644: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"
+    // InternalChartDSL.g:12653: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 {
+            // InternalChartDSL.g:12657:1: ( rule__XShortClosure__Group_0__0__Impl )
+            // InternalChartDSL.g:12658: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"
+    // InternalChartDSL.g:12664: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 {
+            // InternalChartDSL.g:12668:1: ( ( ( rule__XShortClosure__Group_0_0__0 ) ) )
+            // InternalChartDSL.g:12669:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
+            {
+            // InternalChartDSL.g:12669:1: ( ( rule__XShortClosure__Group_0_0__0 ) )
+            // InternalChartDSL.g:12670:2: ( rule__XShortClosure__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup_0_0()); 
+            }
+            // InternalChartDSL.g:12671:2: ( rule__XShortClosure__Group_0_0__0 )
+            // InternalChartDSL.g:12671: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"
+    // InternalChartDSL.g:12680: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 {
+            // InternalChartDSL.g:12684:1: ( rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1 )
+            // InternalChartDSL.g:12685:2: rule__XShortClosure__Group_0_0__0__Impl rule__XShortClosure__Group_0_0__1
+            {
+            pushFollow(FOLLOW_104);
+            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"
+    // InternalChartDSL.g:12692:1: rule__XShortClosure__Group_0_0__0__Impl : ( () ) ;
+    public final void rule__XShortClosure__Group_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:12696:1: ( ( () ) )
+            // InternalChartDSL.g:12697:1: ( () )
+            {
+            // InternalChartDSL.g:12697:1: ( () )
+            // InternalChartDSL.g:12698:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0()); 
+            }
+            // InternalChartDSL.g:12699:2: ()
+            // InternalChartDSL.g:12699: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"
+    // InternalChartDSL.g:12707: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 {
+            // InternalChartDSL.g:12711:1: ( rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2 )
+            // InternalChartDSL.g:12712:2: rule__XShortClosure__Group_0_0__1__Impl rule__XShortClosure__Group_0_0__2
+            {
+            pushFollow(FOLLOW_104);
+            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"
+    // InternalChartDSL.g:12719: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 {
+            // InternalChartDSL.g:12723:1: ( ( ( rule__XShortClosure__Group_0_0_1__0 )? ) )
+            // InternalChartDSL.g:12724:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
+            {
+            // InternalChartDSL.g:12724:1: ( ( rule__XShortClosure__Group_0_0_1__0 )? )
+            // InternalChartDSL.g:12725:2: ( rule__XShortClosure__Group_0_0_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup_0_0_1()); 
+            }
+            // InternalChartDSL.g:12726:2: ( rule__XShortClosure__Group_0_0_1__0 )?
+            int alt111=2;
+            int LA111_0 = input.LA(1);
+
+            if ( (LA111_0==RULE_ID||LA111_0==31||LA111_0==96) ) {
+                alt111=1;
+            }
+            switch (alt111) {
+                case 1 :
+                    // InternalChartDSL.g:12726: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"
+    // InternalChartDSL.g:12734: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 {
+            // InternalChartDSL.g:12738:1: ( rule__XShortClosure__Group_0_0__2__Impl )
+            // InternalChartDSL.g:12739: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"
+    // InternalChartDSL.g:12745: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 {
+            // InternalChartDSL.g:12749:1: ( ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) ) )
+            // InternalChartDSL.g:12750:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
+            {
+            // InternalChartDSL.g:12750:1: ( ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 ) )
+            // InternalChartDSL.g:12751:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxAssignment_0_0_2()); 
+            }
+            // InternalChartDSL.g:12752:2: ( rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 )
+            // InternalChartDSL.g:12752: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"
+    // InternalChartDSL.g:12761: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 {
+            // InternalChartDSL.g:12765:1: ( rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1 )
+            // InternalChartDSL.g:12766:2: rule__XShortClosure__Group_0_0_1__0__Impl rule__XShortClosure__Group_0_0_1__1
+            {
+            pushFollow(FOLLOW_59);
+            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"
+    // InternalChartDSL.g:12773: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 {
+            // InternalChartDSL.g:12777:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) ) )
+            // InternalChartDSL.g:12778:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
+            {
+            // InternalChartDSL.g:12778:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 ) )
+            // InternalChartDSL.g:12779:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_0()); 
+            }
+            // InternalChartDSL.g:12780:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_0 )
+            // InternalChartDSL.g:12780: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"
+    // InternalChartDSL.g:12788: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 {
+            // InternalChartDSL.g:12792:1: ( rule__XShortClosure__Group_0_0_1__1__Impl )
+            // InternalChartDSL.g:12793: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"
+    // InternalChartDSL.g:12799: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 {
+            // InternalChartDSL.g:12803:1: ( ( ( rule__XShortClosure__Group_0_0_1_1__0 )* ) )
+            // InternalChartDSL.g:12804:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
+            {
+            // InternalChartDSL.g:12804:1: ( ( rule__XShortClosure__Group_0_0_1_1__0 )* )
+            // InternalChartDSL.g:12805:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getGroup_0_0_1_1()); 
+            }
+            // InternalChartDSL.g:12806:2: ( rule__XShortClosure__Group_0_0_1_1__0 )*
+            loop112:
+            do {
+                int alt112=2;
+                int LA112_0 = input.LA(1);
+
+                if ( (LA112_0==98) ) {
+                    alt112=1;
+                }
+
+
+                switch (alt112) {
+            	case 1 :
+            	    // InternalChartDSL.g:12806:3: rule__XShortClosure__Group_0_0_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_60);
+            	    rule__XShortClosure__Group_0_0_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop112;
+                }
+            } 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"
+    // InternalChartDSL.g:12815: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 {
+            // InternalChartDSL.g:12819:1: ( rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1 )
+            // InternalChartDSL.g:12820:2: rule__XShortClosure__Group_0_0_1_1__0__Impl rule__XShortClosure__Group_0_0_1_1__1
+            {
+            pushFollow(FOLLOW_78);
+            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"
+    // InternalChartDSL.g:12827: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 {
+            // InternalChartDSL.g:12831:1: ( ( ',' ) )
+            // InternalChartDSL.g:12832:1: ( ',' )
+            {
+            // InternalChartDSL.g:12832:1: ( ',' )
+            // InternalChartDSL.g:12833:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0()); 
+            }
+            match(input,98,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"
+    // InternalChartDSL.g:12842: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 {
+            // InternalChartDSL.g:12846:1: ( rule__XShortClosure__Group_0_0_1_1__1__Impl )
+            // InternalChartDSL.g:12847: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"
+    // InternalChartDSL.g:12853: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 {
+            // InternalChartDSL.g:12857:1: ( ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) ) )
+            // InternalChartDSL.g:12858:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
+            {
+            // InternalChartDSL.g:12858:1: ( ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 ) )
+            // InternalChartDSL.g:12859:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersAssignment_0_0_1_1_1()); 
+            }
+            // InternalChartDSL.g:12860:2: ( rule__XShortClosure__DeclaredFormalParametersAssignment_0_0_1_1_1 )
+            // InternalChartDSL.g:12860: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"
+    // InternalChartDSL.g:12869: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 {
+            // InternalChartDSL.g:12873:1: ( rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1 )
+            // InternalChartDSL.g:12874:2: rule__XParenthesizedExpression__Group__0__Impl rule__XParenthesizedExpression__Group__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:12881:1: rule__XParenthesizedExpression__Group__0__Impl : ( '(' ) ;
+    public final void rule__XParenthesizedExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:12885:1: ( ( '(' ) )
+            // InternalChartDSL.g:12886:1: ( '(' )
+            {
+            // InternalChartDSL.g:12886:1: ( '(' )
+            // InternalChartDSL.g:12887:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXParenthesizedExpressionAccess().getLeftParenthesisKeyword_0()); 
+            }
+            match(input,96,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"
+    // InternalChartDSL.g:12896: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 {
+            // InternalChartDSL.g:12900:1: ( rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2 )
+            // InternalChartDSL.g:12901:2: rule__XParenthesizedExpression__Group__1__Impl rule__XParenthesizedExpression__Group__2
+            {
+            pushFollow(FOLLOW_106);
+            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"
+    // InternalChartDSL.g:12908:1: rule__XParenthesizedExpression__Group__1__Impl : ( ruleXExpression ) ;
+    public final void rule__XParenthesizedExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:12912:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:12913:1: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:12913:1: ( ruleXExpression )
+            // InternalChartDSL.g:12914: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"
+    // InternalChartDSL.g:12923:1: rule__XParenthesizedExpression__Group__2 : rule__XParenthesizedExpression__Group__2__Impl ;
+    public final void rule__XParenthesizedExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:12927:1: ( rule__XParenthesizedExpression__Group__2__Impl )
+            // InternalChartDSL.g:12928: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"
+    // InternalChartDSL.g:12934:1: rule__XParenthesizedExpression__Group__2__Impl : ( ')' ) ;
+    public final void rule__XParenthesizedExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:12938:1: ( ( ')' ) )
+            // InternalChartDSL.g:12939:1: ( ')' )
+            {
+            // InternalChartDSL.g:12939:1: ( ')' )
+            // InternalChartDSL.g:12940:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXParenthesizedExpressionAccess().getRightParenthesisKeyword_2()); 
+            }
+            match(input,97,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"
+    // InternalChartDSL.g:12950: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 {
+            // InternalChartDSL.g:12954:1: ( rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1 )
+            // InternalChartDSL.g:12955:2: rule__XIfExpression__Group__0__Impl rule__XIfExpression__Group__1
+            {
+            pushFollow(FOLLOW_107);
+            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"
+    // InternalChartDSL.g:12962:1: rule__XIfExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XIfExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:12966:1: ( ( () ) )
+            // InternalChartDSL.g:12967:1: ( () )
+            {
+            // InternalChartDSL.g:12967:1: ( () )
+            // InternalChartDSL.g:12968:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0()); 
+            }
+            // InternalChartDSL.g:12969:2: ()
+            // InternalChartDSL.g:12969: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"
+    // InternalChartDSL.g:12977: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 {
+            // InternalChartDSL.g:12981:1: ( rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2 )
+            // InternalChartDSL.g:12982:2: rule__XIfExpression__Group__1__Impl rule__XIfExpression__Group__2
+            {
+            pushFollow(FOLLOW_57);
+            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"
+    // InternalChartDSL.g:12989:1: rule__XIfExpression__Group__1__Impl : ( 'if' ) ;
+    public final void rule__XIfExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:12993:1: ( ( 'if' ) )
+            // InternalChartDSL.g:12994:1: ( 'if' )
+            {
+            // InternalChartDSL.g:12994:1: ( 'if' )
+            // InternalChartDSL.g:12995:2: 'if'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getIfKeyword_1()); 
+            }
+            match(input,103,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"
+    // InternalChartDSL.g:13004: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 {
+            // InternalChartDSL.g:13008:1: ( rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3 )
+            // InternalChartDSL.g:13009:2: rule__XIfExpression__Group__2__Impl rule__XIfExpression__Group__3
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:13016:1: rule__XIfExpression__Group__2__Impl : ( '(' ) ;
+    public final void rule__XIfExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13020:1: ( ( '(' ) )
+            // InternalChartDSL.g:13021:1: ( '(' )
+            {
+            // InternalChartDSL.g:13021:1: ( '(' )
+            // InternalChartDSL.g:13022:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2()); 
+            }
+            match(input,96,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"
+    // InternalChartDSL.g:13031: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 {
+            // InternalChartDSL.g:13035:1: ( rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4 )
+            // InternalChartDSL.g:13036:2: rule__XIfExpression__Group__3__Impl rule__XIfExpression__Group__4
+            {
+            pushFollow(FOLLOW_106);
+            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"
+    // InternalChartDSL.g:13043:1: rule__XIfExpression__Group__3__Impl : ( ( rule__XIfExpression__IfAssignment_3 ) ) ;
+    public final void rule__XIfExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13047:1: ( ( ( rule__XIfExpression__IfAssignment_3 ) ) )
+            // InternalChartDSL.g:13048:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
+            {
+            // InternalChartDSL.g:13048:1: ( ( rule__XIfExpression__IfAssignment_3 ) )
+            // InternalChartDSL.g:13049:2: ( rule__XIfExpression__IfAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getIfAssignment_3()); 
+            }
+            // InternalChartDSL.g:13050:2: ( rule__XIfExpression__IfAssignment_3 )
+            // InternalChartDSL.g:13050: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"
+    // InternalChartDSL.g:13058: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 {
+            // InternalChartDSL.g:13062:1: ( rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5 )
+            // InternalChartDSL.g:13063:2: rule__XIfExpression__Group__4__Impl rule__XIfExpression__Group__5
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:13070:1: rule__XIfExpression__Group__4__Impl : ( ')' ) ;
+    public final void rule__XIfExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13074:1: ( ( ')' ) )
+            // InternalChartDSL.g:13075:1: ( ')' )
+            {
+            // InternalChartDSL.g:13075:1: ( ')' )
+            // InternalChartDSL.g:13076:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4()); 
+            }
+            match(input,97,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"
+    // InternalChartDSL.g:13085: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 {
+            // InternalChartDSL.g:13089:1: ( rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6 )
+            // InternalChartDSL.g:13090:2: rule__XIfExpression__Group__5__Impl rule__XIfExpression__Group__6
+            {
+            pushFollow(FOLLOW_108);
+            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"
+    // InternalChartDSL.g:13097:1: rule__XIfExpression__Group__5__Impl : ( ( rule__XIfExpression__ThenAssignment_5 ) ) ;
+    public final void rule__XIfExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13101:1: ( ( ( rule__XIfExpression__ThenAssignment_5 ) ) )
+            // InternalChartDSL.g:13102:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
+            {
+            // InternalChartDSL.g:13102:1: ( ( rule__XIfExpression__ThenAssignment_5 ) )
+            // InternalChartDSL.g:13103:2: ( rule__XIfExpression__ThenAssignment_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getThenAssignment_5()); 
+            }
+            // InternalChartDSL.g:13104:2: ( rule__XIfExpression__ThenAssignment_5 )
+            // InternalChartDSL.g:13104: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"
+    // InternalChartDSL.g:13112:1: rule__XIfExpression__Group__6 : rule__XIfExpression__Group__6__Impl ;
+    public final void rule__XIfExpression__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13116:1: ( rule__XIfExpression__Group__6__Impl )
+            // InternalChartDSL.g:13117: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"
+    // InternalChartDSL.g:13123: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 {
+            // InternalChartDSL.g:13127:1: ( ( ( rule__XIfExpression__Group_6__0 )? ) )
+            // InternalChartDSL.g:13128:1: ( ( rule__XIfExpression__Group_6__0 )? )
+            {
+            // InternalChartDSL.g:13128:1: ( ( rule__XIfExpression__Group_6__0 )? )
+            // InternalChartDSL.g:13129:2: ( rule__XIfExpression__Group_6__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getGroup_6()); 
+            }
+            // InternalChartDSL.g:13130:2: ( rule__XIfExpression__Group_6__0 )?
+            int alt113=2;
+            int LA113_0 = input.LA(1);
+
+            if ( (LA113_0==104) ) {
+                int LA113_1 = input.LA(2);
+
+                if ( (synpred175_InternalChartDSL()) ) {
+                    alt113=1;
+                }
+            }
+            switch (alt113) {
+                case 1 :
+                    // InternalChartDSL.g:13130: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"
+    // InternalChartDSL.g:13139: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 {
+            // InternalChartDSL.g:13143:1: ( rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1 )
+            // InternalChartDSL.g:13144:2: rule__XIfExpression__Group_6__0__Impl rule__XIfExpression__Group_6__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:13151:1: rule__XIfExpression__Group_6__0__Impl : ( ( 'else' ) ) ;
+    public final void rule__XIfExpression__Group_6__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13155:1: ( ( ( 'else' ) ) )
+            // InternalChartDSL.g:13156:1: ( ( 'else' ) )
+            {
+            // InternalChartDSL.g:13156:1: ( ( 'else' ) )
+            // InternalChartDSL.g:13157:2: ( 'else' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0()); 
+            }
+            // InternalChartDSL.g:13158:2: ( 'else' )
+            // InternalChartDSL.g:13158:3: 'else'
+            {
+            match(input,104,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"
+    // InternalChartDSL.g:13166: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 {
+            // InternalChartDSL.g:13170:1: ( rule__XIfExpression__Group_6__1__Impl )
+            // InternalChartDSL.g:13171: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"
+    // InternalChartDSL.g:13177: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 {
+            // InternalChartDSL.g:13181:1: ( ( ( rule__XIfExpression__ElseAssignment_6_1 ) ) )
+            // InternalChartDSL.g:13182:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
+            {
+            // InternalChartDSL.g:13182:1: ( ( rule__XIfExpression__ElseAssignment_6_1 ) )
+            // InternalChartDSL.g:13183:2: ( rule__XIfExpression__ElseAssignment_6_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXIfExpressionAccess().getElseAssignment_6_1()); 
+            }
+            // InternalChartDSL.g:13184:2: ( rule__XIfExpression__ElseAssignment_6_1 )
+            // InternalChartDSL.g:13184: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"
+    // InternalChartDSL.g:13193: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 {
+            // InternalChartDSL.g:13197:1: ( rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1 )
+            // InternalChartDSL.g:13198:2: rule__XSwitchExpression__Group__0__Impl rule__XSwitchExpression__Group__1
+            {
+            pushFollow(FOLLOW_109);
+            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"
+    // InternalChartDSL.g:13205:1: rule__XSwitchExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XSwitchExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13209:1: ( ( () ) )
+            // InternalChartDSL.g:13210:1: ( () )
+            {
+            // InternalChartDSL.g:13210:1: ( () )
+            // InternalChartDSL.g:13211:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0()); 
+            }
+            // InternalChartDSL.g:13212:2: ()
+            // InternalChartDSL.g:13212: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"
+    // InternalChartDSL.g:13220: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 {
+            // InternalChartDSL.g:13224:1: ( rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2 )
+            // InternalChartDSL.g:13225:2: rule__XSwitchExpression__Group__1__Impl rule__XSwitchExpression__Group__2
+            {
+            pushFollow(FOLLOW_110);
+            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"
+    // InternalChartDSL.g:13232:1: rule__XSwitchExpression__Group__1__Impl : ( 'switch' ) ;
+    public final void rule__XSwitchExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13236:1: ( ( 'switch' ) )
+            // InternalChartDSL.g:13237:1: ( 'switch' )
+            {
+            // InternalChartDSL.g:13237:1: ( 'switch' )
+            // InternalChartDSL.g:13238:2: 'switch'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1()); 
+            }
+            match(input,105,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"
+    // InternalChartDSL.g:13247: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 {
+            // InternalChartDSL.g:13251:1: ( rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3 )
+            // InternalChartDSL.g:13252:2: rule__XSwitchExpression__Group__2__Impl rule__XSwitchExpression__Group__3
+            {
+            pushFollow(FOLLOW_8);
+            rule__XSwitchExpression__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XSwitchExpression__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XSwitchExpression__Group__2"
+
+
+    // $ANTLR start "rule__XSwitchExpression__Group__2__Impl"
+    // InternalChartDSL.g:13259:1: rule__XSwitchExpression__Group__2__Impl : ( ( rule__XSwitchExpression__Alternatives_2 ) ) ;
+    public final void rule__XSwitchExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13263:1: ( ( ( rule__XSwitchExpression__Alternatives_2 ) ) )
+            // InternalChartDSL.g:13264:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
+            {
+            // InternalChartDSL.g:13264:1: ( ( rule__XSwitchExpression__Alternatives_2 ) )
+            // InternalChartDSL.g:13265:2: ( rule__XSwitchExpression__Alternatives_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getAlternatives_2()); 
+            }
+            // InternalChartDSL.g:13266:2: ( rule__XSwitchExpression__Alternatives_2 )
+            // InternalChartDSL.g:13266: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"
+    // InternalChartDSL.g:13274: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 {
+            // InternalChartDSL.g:13278:1: ( rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4 )
+            // InternalChartDSL.g:13279:2: rule__XSwitchExpression__Group__3__Impl rule__XSwitchExpression__Group__4
+            {
+            pushFollow(FOLLOW_111);
+            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"
+    // InternalChartDSL.g:13286:1: rule__XSwitchExpression__Group__3__Impl : ( '{' ) ;
+    public final void rule__XSwitchExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13290:1: ( ( '{' ) )
+            // InternalChartDSL.g:13291:1: ( '{' )
+            {
+            // InternalChartDSL.g:13291:1: ( '{' )
+            // InternalChartDSL.g:13292:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3()); 
+            }
+            match(input,72,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"
+    // InternalChartDSL.g:13301: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 {
+            // InternalChartDSL.g:13305:1: ( rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5 )
+            // InternalChartDSL.g:13306:2: rule__XSwitchExpression__Group__4__Impl rule__XSwitchExpression__Group__5
+            {
+            pushFollow(FOLLOW_111);
+            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"
+    // InternalChartDSL.g:13313:1: rule__XSwitchExpression__Group__4__Impl : ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) ;
+    public final void rule__XSwitchExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13317:1: ( ( ( rule__XSwitchExpression__CasesAssignment_4 )* ) )
+            // InternalChartDSL.g:13318:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
+            {
+            // InternalChartDSL.g:13318:1: ( ( rule__XSwitchExpression__CasesAssignment_4 )* )
+            // InternalChartDSL.g:13319:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getCasesAssignment_4()); 
+            }
+            // InternalChartDSL.g:13320:2: ( rule__XSwitchExpression__CasesAssignment_4 )*
+            loop114:
+            do {
+                int alt114=2;
+                int LA114_0 = input.LA(1);
+
+                if ( (LA114_0==RULE_ID||LA114_0==31||LA114_0==96||LA114_0==98||LA114_0==106||LA114_0==108) ) {
+                    alt114=1;
+                }
+
+
+                switch (alt114) {
+            	case 1 :
+            	    // InternalChartDSL.g:13320:3: rule__XSwitchExpression__CasesAssignment_4
+            	    {
+            	    pushFollow(FOLLOW_112);
+            	    rule__XSwitchExpression__CasesAssignment_4();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop114;
+                }
+            } 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"
+    // InternalChartDSL.g:13328: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 {
+            // InternalChartDSL.g:13332:1: ( rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6 )
+            // InternalChartDSL.g:13333:2: rule__XSwitchExpression__Group__5__Impl rule__XSwitchExpression__Group__6
+            {
+            pushFollow(FOLLOW_111);
+            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"
+    // InternalChartDSL.g:13340: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 {
+            // InternalChartDSL.g:13344:1: ( ( ( rule__XSwitchExpression__Group_5__0 )? ) )
+            // InternalChartDSL.g:13345:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
+            {
+            // InternalChartDSL.g:13345:1: ( ( rule__XSwitchExpression__Group_5__0 )? )
+            // InternalChartDSL.g:13346:2: ( rule__XSwitchExpression__Group_5__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup_5()); 
+            }
+            // InternalChartDSL.g:13347:2: ( rule__XSwitchExpression__Group_5__0 )?
+            int alt115=2;
+            int LA115_0 = input.LA(1);
+
+            if ( (LA115_0==107) ) {
+                alt115=1;
+            }
+            switch (alt115) {
+                case 1 :
+                    // InternalChartDSL.g:13347: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"
+    // InternalChartDSL.g:13355:1: rule__XSwitchExpression__Group__6 : rule__XSwitchExpression__Group__6__Impl ;
+    public final void rule__XSwitchExpression__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13359:1: ( rule__XSwitchExpression__Group__6__Impl )
+            // InternalChartDSL.g:13360: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"
+    // InternalChartDSL.g:13366:1: rule__XSwitchExpression__Group__6__Impl : ( '}' ) ;
+    public final void rule__XSwitchExpression__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13370:1: ( ( '}' ) )
+            // InternalChartDSL.g:13371:1: ( '}' )
+            {
+            // InternalChartDSL.g:13371:1: ( '}' )
+            // InternalChartDSL.g:13372:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getRightCurlyBracketKeyword_6()); 
+            }
+            match(input,73,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"
+    // InternalChartDSL.g:13382: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 {
+            // InternalChartDSL.g:13386:1: ( rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1 )
+            // InternalChartDSL.g:13387:2: rule__XSwitchExpression__Group_2_0__0__Impl rule__XSwitchExpression__Group_2_0__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:13394: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 {
+            // InternalChartDSL.g:13398:1: ( ( ( rule__XSwitchExpression__Group_2_0_0__0 ) ) )
+            // InternalChartDSL.g:13399:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
+            {
+            // InternalChartDSL.g:13399:1: ( ( rule__XSwitchExpression__Group_2_0_0__0 ) )
+            // InternalChartDSL.g:13400:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0()); 
+            }
+            // InternalChartDSL.g:13401:2: ( rule__XSwitchExpression__Group_2_0_0__0 )
+            // InternalChartDSL.g:13401: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"
+    // InternalChartDSL.g:13409: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 {
+            // InternalChartDSL.g:13413:1: ( rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2 )
+            // InternalChartDSL.g:13414:2: rule__XSwitchExpression__Group_2_0__1__Impl rule__XSwitchExpression__Group_2_0__2
+            {
+            pushFollow(FOLLOW_106);
+            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"
+    // InternalChartDSL.g:13421: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 {
+            // InternalChartDSL.g:13425:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) ) )
+            // InternalChartDSL.g:13426:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
+            {
+            // InternalChartDSL.g:13426:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_0_1 ) )
+            // InternalChartDSL.g:13427:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_0_1()); 
+            }
+            // InternalChartDSL.g:13428:2: ( rule__XSwitchExpression__SwitchAssignment_2_0_1 )
+            // InternalChartDSL.g:13428: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"
+    // InternalChartDSL.g:13436: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 {
+            // InternalChartDSL.g:13440:1: ( rule__XSwitchExpression__Group_2_0__2__Impl )
+            // InternalChartDSL.g:13441: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"
+    // InternalChartDSL.g:13447:1: rule__XSwitchExpression__Group_2_0__2__Impl : ( ')' ) ;
+    public final void rule__XSwitchExpression__Group_2_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13451:1: ( ( ')' ) )
+            // InternalChartDSL.g:13452:1: ( ')' )
+            {
+            // InternalChartDSL.g:13452:1: ( ')' )
+            // InternalChartDSL.g:13453:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2()); 
+            }
+            match(input,97,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"
+    // InternalChartDSL.g:13463: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 {
+            // InternalChartDSL.g:13467:1: ( rule__XSwitchExpression__Group_2_0_0__0__Impl )
+            // InternalChartDSL.g:13468: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"
+    // InternalChartDSL.g:13474: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 {
+            // InternalChartDSL.g:13478:1: ( ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) ) )
+            // InternalChartDSL.g:13479:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
+            {
+            // InternalChartDSL.g:13479:1: ( ( rule__XSwitchExpression__Group_2_0_0_0__0 ) )
+            // InternalChartDSL.g:13480:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0_0_0()); 
+            }
+            // InternalChartDSL.g:13481:2: ( rule__XSwitchExpression__Group_2_0_0_0__0 )
+            // InternalChartDSL.g:13481: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"
+    // InternalChartDSL.g:13490: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 {
+            // InternalChartDSL.g:13494:1: ( rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1 )
+            // InternalChartDSL.g:13495:2: rule__XSwitchExpression__Group_2_0_0_0__0__Impl rule__XSwitchExpression__Group_2_0_0_0__1
+            {
+            pushFollow(FOLLOW_78);
+            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"
+    // InternalChartDSL.g:13502: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 {
+            // InternalChartDSL.g:13506:1: ( ( '(' ) )
+            // InternalChartDSL.g:13507:1: ( '(' )
+            {
+            // InternalChartDSL.g:13507:1: ( '(' )
+            // InternalChartDSL.g:13508:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0()); 
+            }
+            match(input,96,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"
+    // InternalChartDSL.g:13517: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 {
+            // InternalChartDSL.g:13521:1: ( rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2 )
+            // InternalChartDSL.g:13522:2: rule__XSwitchExpression__Group_2_0_0_0__1__Impl rule__XSwitchExpression__Group_2_0_0_0__2
+            {
+            pushFollow(FOLLOW_113);
+            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"
+    // InternalChartDSL.g:13529: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 {
+            // InternalChartDSL.g:13533:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) ) )
+            // InternalChartDSL.g:13534:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
+            {
+            // InternalChartDSL.g:13534:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 ) )
+            // InternalChartDSL.g:13535:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_0_0_0_1()); 
+            }
+            // InternalChartDSL.g:13536:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_0_0_0_1 )
+            // InternalChartDSL.g:13536: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"
+    // InternalChartDSL.g:13544: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 {
+            // InternalChartDSL.g:13548:1: ( rule__XSwitchExpression__Group_2_0_0_0__2__Impl )
+            // InternalChartDSL.g:13549: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"
+    // InternalChartDSL.g:13555: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 {
+            // InternalChartDSL.g:13559:1: ( ( ':' ) )
+            // InternalChartDSL.g:13560:1: ( ':' )
+            {
+            // InternalChartDSL.g:13560:1: ( ':' )
+            // InternalChartDSL.g:13561:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2()); 
+            }
+            match(input,106,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"
+    // InternalChartDSL.g:13571: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 {
+            // InternalChartDSL.g:13575:1: ( rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1 )
+            // InternalChartDSL.g:13576:2: rule__XSwitchExpression__Group_2_1__0__Impl rule__XSwitchExpression__Group_2_1__1
+            {
+            pushFollow(FOLLOW_110);
+            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"
+    // InternalChartDSL.g:13583: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 {
+            // InternalChartDSL.g:13587:1: ( ( ( rule__XSwitchExpression__Group_2_1_0__0 )? ) )
+            // InternalChartDSL.g:13588:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
+            {
+            // InternalChartDSL.g:13588:1: ( ( rule__XSwitchExpression__Group_2_1_0__0 )? )
+            // InternalChartDSL.g:13589:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0()); 
+            }
+            // InternalChartDSL.g:13590:2: ( rule__XSwitchExpression__Group_2_1_0__0 )?
+            int alt116=2;
+            alt116 = dfa116.predict(input);
+            switch (alt116) {
+                case 1 :
+                    // InternalChartDSL.g:13590: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"
+    // InternalChartDSL.g:13598: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 {
+            // InternalChartDSL.g:13602:1: ( rule__XSwitchExpression__Group_2_1__1__Impl )
+            // InternalChartDSL.g:13603: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"
+    // InternalChartDSL.g:13609: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 {
+            // InternalChartDSL.g:13613:1: ( ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) ) )
+            // InternalChartDSL.g:13614:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
+            {
+            // InternalChartDSL.g:13614:1: ( ( rule__XSwitchExpression__SwitchAssignment_2_1_1 ) )
+            // InternalChartDSL.g:13615:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getSwitchAssignment_2_1_1()); 
+            }
+            // InternalChartDSL.g:13616:2: ( rule__XSwitchExpression__SwitchAssignment_2_1_1 )
+            // InternalChartDSL.g:13616: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"
+    // InternalChartDSL.g:13625: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 {
+            // InternalChartDSL.g:13629:1: ( rule__XSwitchExpression__Group_2_1_0__0__Impl )
+            // InternalChartDSL.g:13630: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"
+    // InternalChartDSL.g:13636: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 {
+            // InternalChartDSL.g:13640:1: ( ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) ) )
+            // InternalChartDSL.g:13641:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
+            {
+            // InternalChartDSL.g:13641:1: ( ( rule__XSwitchExpression__Group_2_1_0_0__0 ) )
+            // InternalChartDSL.g:13642:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_1_0_0()); 
+            }
+            // InternalChartDSL.g:13643:2: ( rule__XSwitchExpression__Group_2_1_0_0__0 )
+            // InternalChartDSL.g:13643: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"
+    // InternalChartDSL.g:13652: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 {
+            // InternalChartDSL.g:13656:1: ( rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1 )
+            // InternalChartDSL.g:13657:2: rule__XSwitchExpression__Group_2_1_0_0__0__Impl rule__XSwitchExpression__Group_2_1_0_0__1
+            {
+            pushFollow(FOLLOW_113);
+            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"
+    // InternalChartDSL.g:13664: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 {
+            // InternalChartDSL.g:13668:1: ( ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) ) )
+            // InternalChartDSL.g:13669:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
+            {
+            // InternalChartDSL.g:13669:1: ( ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 ) )
+            // InternalChartDSL.g:13670:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamAssignment_2_1_0_0_0()); 
+            }
+            // InternalChartDSL.g:13671:2: ( rule__XSwitchExpression__DeclaredParamAssignment_2_1_0_0_0 )
+            // InternalChartDSL.g:13671: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"
+    // InternalChartDSL.g:13679: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 {
+            // InternalChartDSL.g:13683:1: ( rule__XSwitchExpression__Group_2_1_0_0__1__Impl )
+            // InternalChartDSL.g:13684: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"
+    // InternalChartDSL.g:13690: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 {
+            // InternalChartDSL.g:13694:1: ( ( ':' ) )
+            // InternalChartDSL.g:13695:1: ( ':' )
+            {
+            // InternalChartDSL.g:13695:1: ( ':' )
+            // InternalChartDSL.g:13696:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1()); 
+            }
+            match(input,106,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"
+    // InternalChartDSL.g:13706: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 {
+            // InternalChartDSL.g:13710:1: ( rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1 )
+            // InternalChartDSL.g:13711:2: rule__XSwitchExpression__Group_5__0__Impl rule__XSwitchExpression__Group_5__1
+            {
+            pushFollow(FOLLOW_113);
+            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"
+    // InternalChartDSL.g:13718:1: rule__XSwitchExpression__Group_5__0__Impl : ( 'default' ) ;
+    public final void rule__XSwitchExpression__Group_5__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13722:1: ( ( 'default' ) )
+            // InternalChartDSL.g:13723:1: ( 'default' )
+            {
+            // InternalChartDSL.g:13723:1: ( 'default' )
+            // InternalChartDSL.g:13724:2: 'default'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0()); 
+            }
+            match(input,107,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"
+    // InternalChartDSL.g:13733: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 {
+            // InternalChartDSL.g:13737:1: ( rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2 )
+            // InternalChartDSL.g:13738:2: rule__XSwitchExpression__Group_5__1__Impl rule__XSwitchExpression__Group_5__2
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:13745:1: rule__XSwitchExpression__Group_5__1__Impl : ( ':' ) ;
+    public final void rule__XSwitchExpression__Group_5__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13749:1: ( ( ':' ) )
+            // InternalChartDSL.g:13750:1: ( ':' )
+            {
+            // InternalChartDSL.g:13750:1: ( ':' )
+            // InternalChartDSL.g:13751:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1()); 
+            }
+            match(input,106,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"
+    // InternalChartDSL.g:13760: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 {
+            // InternalChartDSL.g:13764:1: ( rule__XSwitchExpression__Group_5__2__Impl )
+            // InternalChartDSL.g:13765: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"
+    // InternalChartDSL.g:13771: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 {
+            // InternalChartDSL.g:13775:1: ( ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) ) )
+            // InternalChartDSL.g:13776:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
+            {
+            // InternalChartDSL.g:13776:1: ( ( rule__XSwitchExpression__DefaultAssignment_5_2 ) )
+            // InternalChartDSL.g:13777:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSwitchExpressionAccess().getDefaultAssignment_5_2()); 
+            }
+            // InternalChartDSL.g:13778:2: ( rule__XSwitchExpression__DefaultAssignment_5_2 )
+            // InternalChartDSL.g:13778: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"
+    // InternalChartDSL.g:13787: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 {
+            // InternalChartDSL.g:13791:1: ( rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1 )
+            // InternalChartDSL.g:13792:2: rule__XCasePart__Group__0__Impl rule__XCasePart__Group__1
+            {
+            pushFollow(FOLLOW_114);
+            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"
+    // InternalChartDSL.g:13799:1: rule__XCasePart__Group__0__Impl : ( () ) ;
+    public final void rule__XCasePart__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13803:1: ( ( () ) )
+            // InternalChartDSL.g:13804:1: ( () )
+            {
+            // InternalChartDSL.g:13804:1: ( () )
+            // InternalChartDSL.g:13805:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getXCasePartAction_0()); 
+            }
+            // InternalChartDSL.g:13806:2: ()
+            // InternalChartDSL.g:13806: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"
+    // InternalChartDSL.g:13814: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 {
+            // InternalChartDSL.g:13818:1: ( rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2 )
+            // InternalChartDSL.g:13819:2: rule__XCasePart__Group__1__Impl rule__XCasePart__Group__2
+            {
+            pushFollow(FOLLOW_114);
+            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"
+    // InternalChartDSL.g:13826:1: rule__XCasePart__Group__1__Impl : ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) ;
+    public final void rule__XCasePart__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13830:1: ( ( ( rule__XCasePart__TypeGuardAssignment_1 )? ) )
+            // InternalChartDSL.g:13831:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
+            {
+            // InternalChartDSL.g:13831:1: ( ( rule__XCasePart__TypeGuardAssignment_1 )? )
+            // InternalChartDSL.g:13832:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getTypeGuardAssignment_1()); 
+            }
+            // InternalChartDSL.g:13833:2: ( rule__XCasePart__TypeGuardAssignment_1 )?
+            int alt117=2;
+            int LA117_0 = input.LA(1);
+
+            if ( (LA117_0==RULE_ID||LA117_0==31||LA117_0==96) ) {
+                alt117=1;
+            }
+            switch (alt117) {
+                case 1 :
+                    // InternalChartDSL.g:13833: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"
+    // InternalChartDSL.g:13841: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 {
+            // InternalChartDSL.g:13845:1: ( rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3 )
+            // InternalChartDSL.g:13846:2: rule__XCasePart__Group__2__Impl rule__XCasePart__Group__3
+            {
+            pushFollow(FOLLOW_114);
+            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"
+    // InternalChartDSL.g:13853: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 {
+            // InternalChartDSL.g:13857:1: ( ( ( rule__XCasePart__Group_2__0 )? ) )
+            // InternalChartDSL.g:13858:1: ( ( rule__XCasePart__Group_2__0 )? )
+            {
+            // InternalChartDSL.g:13858:1: ( ( rule__XCasePart__Group_2__0 )? )
+            // InternalChartDSL.g:13859:2: ( rule__XCasePart__Group_2__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getGroup_2()); 
+            }
+            // InternalChartDSL.g:13860:2: ( rule__XCasePart__Group_2__0 )?
+            int alt118=2;
+            int LA118_0 = input.LA(1);
+
+            if ( (LA118_0==108) ) {
+                alt118=1;
+            }
+            switch (alt118) {
+                case 1 :
+                    // InternalChartDSL.g:13860: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"
+    // InternalChartDSL.g:13868:1: rule__XCasePart__Group__3 : rule__XCasePart__Group__3__Impl ;
+    public final void rule__XCasePart__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13872:1: ( rule__XCasePart__Group__3__Impl )
+            // InternalChartDSL.g:13873: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"
+    // InternalChartDSL.g:13879:1: rule__XCasePart__Group__3__Impl : ( ( rule__XCasePart__Alternatives_3 ) ) ;
+    public final void rule__XCasePart__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13883:1: ( ( ( rule__XCasePart__Alternatives_3 ) ) )
+            // InternalChartDSL.g:13884:1: ( ( rule__XCasePart__Alternatives_3 ) )
+            {
+            // InternalChartDSL.g:13884:1: ( ( rule__XCasePart__Alternatives_3 ) )
+            // InternalChartDSL.g:13885:2: ( rule__XCasePart__Alternatives_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getAlternatives_3()); 
+            }
+            // InternalChartDSL.g:13886:2: ( rule__XCasePart__Alternatives_3 )
+            // InternalChartDSL.g:13886: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"
+    // InternalChartDSL.g:13895: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 {
+            // InternalChartDSL.g:13899:1: ( rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1 )
+            // InternalChartDSL.g:13900:2: rule__XCasePart__Group_2__0__Impl rule__XCasePart__Group_2__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:13907:1: rule__XCasePart__Group_2__0__Impl : ( 'case' ) ;
+    public final void rule__XCasePart__Group_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13911:1: ( ( 'case' ) )
+            // InternalChartDSL.g:13912:1: ( 'case' )
+            {
+            // InternalChartDSL.g:13912:1: ( 'case' )
+            // InternalChartDSL.g:13913:2: 'case'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getCaseKeyword_2_0()); 
+            }
+            match(input,108,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"
+    // InternalChartDSL.g:13922: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 {
+            // InternalChartDSL.g:13926:1: ( rule__XCasePart__Group_2__1__Impl )
+            // InternalChartDSL.g:13927: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"
+    // InternalChartDSL.g:13933: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 {
+            // InternalChartDSL.g:13937:1: ( ( ( rule__XCasePart__CaseAssignment_2_1 ) ) )
+            // InternalChartDSL.g:13938:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
+            {
+            // InternalChartDSL.g:13938:1: ( ( rule__XCasePart__CaseAssignment_2_1 ) )
+            // InternalChartDSL.g:13939:2: ( rule__XCasePart__CaseAssignment_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getCaseAssignment_2_1()); 
+            }
+            // InternalChartDSL.g:13940:2: ( rule__XCasePart__CaseAssignment_2_1 )
+            // InternalChartDSL.g:13940: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"
+    // InternalChartDSL.g:13949: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 {
+            // InternalChartDSL.g:13953:1: ( rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1 )
+            // InternalChartDSL.g:13954:2: rule__XCasePart__Group_3_0__0__Impl rule__XCasePart__Group_3_0__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:13961:1: rule__XCasePart__Group_3_0__0__Impl : ( ':' ) ;
+    public final void rule__XCasePart__Group_3_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:13965:1: ( ( ':' ) )
+            // InternalChartDSL.g:13966:1: ( ':' )
+            {
+            // InternalChartDSL.g:13966:1: ( ':' )
+            // InternalChartDSL.g:13967:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0()); 
+            }
+            match(input,106,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"
+    // InternalChartDSL.g:13976: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 {
+            // InternalChartDSL.g:13980:1: ( rule__XCasePart__Group_3_0__1__Impl )
+            // InternalChartDSL.g:13981: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"
+    // InternalChartDSL.g:13987: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 {
+            // InternalChartDSL.g:13991:1: ( ( ( rule__XCasePart__ThenAssignment_3_0_1 ) ) )
+            // InternalChartDSL.g:13992:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
+            {
+            // InternalChartDSL.g:13992:1: ( ( rule__XCasePart__ThenAssignment_3_0_1 ) )
+            // InternalChartDSL.g:13993:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getThenAssignment_3_0_1()); 
+            }
+            // InternalChartDSL.g:13994:2: ( rule__XCasePart__ThenAssignment_3_0_1 )
+            // InternalChartDSL.g:13994: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"
+    // InternalChartDSL.g:14003: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 {
+            // InternalChartDSL.g:14007:1: ( rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1 )
+            // InternalChartDSL.g:14008:2: rule__XForLoopExpression__Group__0__Impl rule__XForLoopExpression__Group__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:14015: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 {
+            // InternalChartDSL.g:14019:1: ( ( ( rule__XForLoopExpression__Group_0__0 ) ) )
+            // InternalChartDSL.g:14020:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
+            {
+            // InternalChartDSL.g:14020:1: ( ( rule__XForLoopExpression__Group_0__0 ) )
+            // InternalChartDSL.g:14021:2: ( rule__XForLoopExpression__Group_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getGroup_0()); 
+            }
+            // InternalChartDSL.g:14022:2: ( rule__XForLoopExpression__Group_0__0 )
+            // InternalChartDSL.g:14022: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"
+    // InternalChartDSL.g:14030: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 {
+            // InternalChartDSL.g:14034:1: ( rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2 )
+            // InternalChartDSL.g:14035:2: rule__XForLoopExpression__Group__1__Impl rule__XForLoopExpression__Group__2
+            {
+            pushFollow(FOLLOW_106);
+            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"
+    // InternalChartDSL.g:14042:1: rule__XForLoopExpression__Group__1__Impl : ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) ;
+    public final void rule__XForLoopExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14046:1: ( ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) ) )
+            // InternalChartDSL.g:14047:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
+            {
+            // InternalChartDSL.g:14047:1: ( ( rule__XForLoopExpression__ForExpressionAssignment_1 ) )
+            // InternalChartDSL.g:14048:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getForExpressionAssignment_1()); 
+            }
+            // InternalChartDSL.g:14049:2: ( rule__XForLoopExpression__ForExpressionAssignment_1 )
+            // InternalChartDSL.g:14049: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"
+    // InternalChartDSL.g:14057: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 {
+            // InternalChartDSL.g:14061:1: ( rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3 )
+            // InternalChartDSL.g:14062:2: rule__XForLoopExpression__Group__2__Impl rule__XForLoopExpression__Group__3
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:14069:1: rule__XForLoopExpression__Group__2__Impl : ( ')' ) ;
+    public final void rule__XForLoopExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14073:1: ( ( ')' ) )
+            // InternalChartDSL.g:14074:1: ( ')' )
+            {
+            // InternalChartDSL.g:14074:1: ( ')' )
+            // InternalChartDSL.g:14075:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2()); 
+            }
+            match(input,97,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"
+    // InternalChartDSL.g:14084:1: rule__XForLoopExpression__Group__3 : rule__XForLoopExpression__Group__3__Impl ;
+    public final void rule__XForLoopExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14088:1: ( rule__XForLoopExpression__Group__3__Impl )
+            // InternalChartDSL.g:14089: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"
+    // InternalChartDSL.g:14095:1: rule__XForLoopExpression__Group__3__Impl : ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) ;
+    public final void rule__XForLoopExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14099:1: ( ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) ) )
+            // InternalChartDSL.g:14100:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
+            {
+            // InternalChartDSL.g:14100:1: ( ( rule__XForLoopExpression__EachExpressionAssignment_3 ) )
+            // InternalChartDSL.g:14101:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getEachExpressionAssignment_3()); 
+            }
+            // InternalChartDSL.g:14102:2: ( rule__XForLoopExpression__EachExpressionAssignment_3 )
+            // InternalChartDSL.g:14102: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"
+    // InternalChartDSL.g:14111: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 {
+            // InternalChartDSL.g:14115:1: ( rule__XForLoopExpression__Group_0__0__Impl )
+            // InternalChartDSL.g:14116: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"
+    // InternalChartDSL.g:14122: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 {
+            // InternalChartDSL.g:14126:1: ( ( ( rule__XForLoopExpression__Group_0_0__0 ) ) )
+            // InternalChartDSL.g:14127:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
+            {
+            // InternalChartDSL.g:14127:1: ( ( rule__XForLoopExpression__Group_0_0__0 ) )
+            // InternalChartDSL.g:14128:2: ( rule__XForLoopExpression__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getGroup_0_0()); 
+            }
+            // InternalChartDSL.g:14129:2: ( rule__XForLoopExpression__Group_0_0__0 )
+            // InternalChartDSL.g:14129: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"
+    // InternalChartDSL.g:14138: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 {
+            // InternalChartDSL.g:14142:1: ( rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1 )
+            // InternalChartDSL.g:14143:2: rule__XForLoopExpression__Group_0_0__0__Impl rule__XForLoopExpression__Group_0_0__1
+            {
+            pushFollow(FOLLOW_115);
+            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"
+    // InternalChartDSL.g:14150:1: rule__XForLoopExpression__Group_0_0__0__Impl : ( () ) ;
+    public final void rule__XForLoopExpression__Group_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14154:1: ( ( () ) )
+            // InternalChartDSL.g:14155:1: ( () )
+            {
+            // InternalChartDSL.g:14155:1: ( () )
+            // InternalChartDSL.g:14156:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0()); 
+            }
+            // InternalChartDSL.g:14157:2: ()
+            // InternalChartDSL.g:14157: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"
+    // InternalChartDSL.g:14165: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 {
+            // InternalChartDSL.g:14169:1: ( rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2 )
+            // InternalChartDSL.g:14170:2: rule__XForLoopExpression__Group_0_0__1__Impl rule__XForLoopExpression__Group_0_0__2
+            {
+            pushFollow(FOLLOW_57);
+            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"
+    // InternalChartDSL.g:14177: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 {
+            // InternalChartDSL.g:14181:1: ( ( 'for' ) )
+            // InternalChartDSL.g:14182:1: ( 'for' )
+            {
+            // InternalChartDSL.g:14182:1: ( 'for' )
+            // InternalChartDSL.g:14183:2: 'for'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1()); 
+            }
+            match(input,109,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"
+    // InternalChartDSL.g:14192: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 {
+            // InternalChartDSL.g:14196:1: ( rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3 )
+            // InternalChartDSL.g:14197:2: rule__XForLoopExpression__Group_0_0__2__Impl rule__XForLoopExpression__Group_0_0__3
+            {
+            pushFollow(FOLLOW_78);
+            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"
+    // InternalChartDSL.g:14204:1: rule__XForLoopExpression__Group_0_0__2__Impl : ( '(' ) ;
+    public final void rule__XForLoopExpression__Group_0_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14208:1: ( ( '(' ) )
+            // InternalChartDSL.g:14209:1: ( '(' )
+            {
+            // InternalChartDSL.g:14209:1: ( '(' )
+            // InternalChartDSL.g:14210:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
+            }
+            match(input,96,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"
+    // InternalChartDSL.g:14219: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 {
+            // InternalChartDSL.g:14223:1: ( rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4 )
+            // InternalChartDSL.g:14224:2: rule__XForLoopExpression__Group_0_0__3__Impl rule__XForLoopExpression__Group_0_0__4
+            {
+            pushFollow(FOLLOW_113);
+            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"
+    // InternalChartDSL.g:14231: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 {
+            // InternalChartDSL.g:14235:1: ( ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) ) )
+            // InternalChartDSL.g:14236:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
+            {
+            // InternalChartDSL.g:14236:1: ( ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 ) )
+            // InternalChartDSL.g:14237:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamAssignment_0_0_3()); 
+            }
+            // InternalChartDSL.g:14238:2: ( rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 )
+            // InternalChartDSL.g:14238: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"
+    // InternalChartDSL.g:14246: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 {
+            // InternalChartDSL.g:14250:1: ( rule__XForLoopExpression__Group_0_0__4__Impl )
+            // InternalChartDSL.g:14251: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"
+    // InternalChartDSL.g:14257:1: rule__XForLoopExpression__Group_0_0__4__Impl : ( ':' ) ;
+    public final void rule__XForLoopExpression__Group_0_0__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14261:1: ( ( ':' ) )
+            // InternalChartDSL.g:14262:1: ( ':' )
+            {
+            // InternalChartDSL.g:14262:1: ( ':' )
+            // InternalChartDSL.g:14263:2: ':'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4()); 
+            }
+            match(input,106,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"
+    // InternalChartDSL.g:14273: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 {
+            // InternalChartDSL.g:14277:1: ( rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1 )
+            // InternalChartDSL.g:14278:2: rule__XBasicForLoopExpression__Group__0__Impl rule__XBasicForLoopExpression__Group__1
+            {
+            pushFollow(FOLLOW_115);
+            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"
+    // InternalChartDSL.g:14285:1: rule__XBasicForLoopExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XBasicForLoopExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14289:1: ( ( () ) )
+            // InternalChartDSL.g:14290:1: ( () )
+            {
+            // InternalChartDSL.g:14290:1: ( () )
+            // InternalChartDSL.g:14291:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0()); 
+            }
+            // InternalChartDSL.g:14292:2: ()
+            // InternalChartDSL.g:14292: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"
+    // InternalChartDSL.g:14300: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 {
+            // InternalChartDSL.g:14304:1: ( rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2 )
+            // InternalChartDSL.g:14305:2: rule__XBasicForLoopExpression__Group__1__Impl rule__XBasicForLoopExpression__Group__2
+            {
+            pushFollow(FOLLOW_57);
+            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"
+    // InternalChartDSL.g:14312:1: rule__XBasicForLoopExpression__Group__1__Impl : ( 'for' ) ;
+    public final void rule__XBasicForLoopExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14316:1: ( ( 'for' ) )
+            // InternalChartDSL.g:14317:1: ( 'for' )
+            {
+            // InternalChartDSL.g:14317:1: ( 'for' )
+            // InternalChartDSL.g:14318:2: 'for'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1()); 
+            }
+            match(input,109,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"
+    // InternalChartDSL.g:14327: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 {
+            // InternalChartDSL.g:14331:1: ( rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3 )
+            // InternalChartDSL.g:14332:2: rule__XBasicForLoopExpression__Group__2__Impl rule__XBasicForLoopExpression__Group__3
+            {
+            pushFollow(FOLLOW_116);
+            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"
+    // InternalChartDSL.g:14339:1: rule__XBasicForLoopExpression__Group__2__Impl : ( '(' ) ;
+    public final void rule__XBasicForLoopExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14343:1: ( ( '(' ) )
+            // InternalChartDSL.g:14344:1: ( '(' )
+            {
+            // InternalChartDSL.g:14344:1: ( '(' )
+            // InternalChartDSL.g:14345:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2()); 
+            }
+            match(input,96,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"
+    // InternalChartDSL.g:14354: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 {
+            // InternalChartDSL.g:14358:1: ( rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4 )
+            // InternalChartDSL.g:14359:2: rule__XBasicForLoopExpression__Group__3__Impl rule__XBasicForLoopExpression__Group__4
+            {
+            pushFollow(FOLLOW_116);
+            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"
+    // InternalChartDSL.g:14366: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 {
+            // InternalChartDSL.g:14370:1: ( ( ( rule__XBasicForLoopExpression__Group_3__0 )? ) )
+            // InternalChartDSL.g:14371:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
+            {
+            // InternalChartDSL.g:14371:1: ( ( rule__XBasicForLoopExpression__Group_3__0 )? )
+            // InternalChartDSL.g:14372:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3()); 
+            }
+            // InternalChartDSL.g:14373:2: ( rule__XBasicForLoopExpression__Group_3__0 )?
+            int alt119=2;
+            int LA119_0 = input.LA(1);
+
+            if ( ((LA119_0>=RULE_STRING && LA119_0<=RULE_DECIMAL)||LA119_0==27||(LA119_0>=34 && LA119_0<=35)||LA119_0==40||(LA119_0>=44 && LA119_0<=50)||LA119_0==72||LA119_0==96||(LA119_0>=100 && LA119_0<=101)||LA119_0==103||LA119_0==105||(LA119_0>=109 && LA119_0<=117)||LA119_0==119||(LA119_0>=153 && LA119_0<=154)) ) {
+                alt119=1;
+            }
+            switch (alt119) {
+                case 1 :
+                    // InternalChartDSL.g:14373: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"
+    // InternalChartDSL.g:14381: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 {
+            // InternalChartDSL.g:14385:1: ( rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5 )
+            // InternalChartDSL.g:14386:2: rule__XBasicForLoopExpression__Group__4__Impl rule__XBasicForLoopExpression__Group__5
+            {
+            pushFollow(FOLLOW_117);
+            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"
+    // InternalChartDSL.g:14393:1: rule__XBasicForLoopExpression__Group__4__Impl : ( ';' ) ;
+    public final void rule__XBasicForLoopExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14397:1: ( ( ';' ) )
+            // InternalChartDSL.g:14398:1: ( ';' )
+            {
+            // InternalChartDSL.g:14398:1: ( ';' )
+            // InternalChartDSL.g:14399:2: ';'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4()); 
+            }
+            match(input,94,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"
+    // InternalChartDSL.g:14408: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 {
+            // InternalChartDSL.g:14412:1: ( rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6 )
+            // InternalChartDSL.g:14413:2: rule__XBasicForLoopExpression__Group__5__Impl rule__XBasicForLoopExpression__Group__6
+            {
+            pushFollow(FOLLOW_117);
+            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"
+    // InternalChartDSL.g:14420:1: rule__XBasicForLoopExpression__Group__5__Impl : ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) ;
+    public final void rule__XBasicForLoopExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14424:1: ( ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? ) )
+            // InternalChartDSL.g:14425:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
+            {
+            // InternalChartDSL.g:14425:1: ( ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )? )
+            // InternalChartDSL.g:14426:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionAssignment_5()); 
+            }
+            // InternalChartDSL.g:14427:2: ( rule__XBasicForLoopExpression__ExpressionAssignment_5 )?
+            int alt120=2;
+            int LA120_0 = input.LA(1);
+
+            if ( ((LA120_0>=RULE_STRING && LA120_0<=RULE_DECIMAL)||LA120_0==27||(LA120_0>=34 && LA120_0<=35)||LA120_0==40||(LA120_0>=45 && LA120_0<=50)||LA120_0==72||LA120_0==96||(LA120_0>=100 && LA120_0<=101)||LA120_0==103||LA120_0==105||(LA120_0>=109 && LA120_0<=117)||LA120_0==119||LA120_0==154) ) {
+                alt120=1;
+            }
+            switch (alt120) {
+                case 1 :
+                    // InternalChartDSL.g:14427: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"
+    // InternalChartDSL.g:14435: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 {
+            // InternalChartDSL.g:14439:1: ( rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7 )
+            // InternalChartDSL.g:14440:2: rule__XBasicForLoopExpression__Group__6__Impl rule__XBasicForLoopExpression__Group__7
+            {
+            pushFollow(FOLLOW_58);
+            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"
+    // InternalChartDSL.g:14447:1: rule__XBasicForLoopExpression__Group__6__Impl : ( ';' ) ;
+    public final void rule__XBasicForLoopExpression__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14451:1: ( ( ';' ) )
+            // InternalChartDSL.g:14452:1: ( ';' )
+            {
+            // InternalChartDSL.g:14452:1: ( ';' )
+            // InternalChartDSL.g:14453:2: ';'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6()); 
+            }
+            match(input,94,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"
+    // InternalChartDSL.g:14462: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 {
+            // InternalChartDSL.g:14466:1: ( rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8 )
+            // InternalChartDSL.g:14467:2: rule__XBasicForLoopExpression__Group__7__Impl rule__XBasicForLoopExpression__Group__8
+            {
+            pushFollow(FOLLOW_58);
+            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"
+    // InternalChartDSL.g:14474: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 {
+            // InternalChartDSL.g:14478:1: ( ( ( rule__XBasicForLoopExpression__Group_7__0 )? ) )
+            // InternalChartDSL.g:14479:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
+            {
+            // InternalChartDSL.g:14479:1: ( ( rule__XBasicForLoopExpression__Group_7__0 )? )
+            // InternalChartDSL.g:14480:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7()); 
+            }
+            // InternalChartDSL.g:14481:2: ( rule__XBasicForLoopExpression__Group_7__0 )?
+            int alt121=2;
+            int LA121_0 = input.LA(1);
+
+            if ( ((LA121_0>=RULE_STRING && LA121_0<=RULE_DECIMAL)||LA121_0==27||(LA121_0>=34 && LA121_0<=35)||LA121_0==40||(LA121_0>=45 && LA121_0<=50)||LA121_0==72||LA121_0==96||(LA121_0>=100 && LA121_0<=101)||LA121_0==103||LA121_0==105||(LA121_0>=109 && LA121_0<=117)||LA121_0==119||LA121_0==154) ) {
+                alt121=1;
+            }
+            switch (alt121) {
+                case 1 :
+                    // InternalChartDSL.g:14481: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"
+    // InternalChartDSL.g:14489: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 {
+            // InternalChartDSL.g:14493:1: ( rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9 )
+            // InternalChartDSL.g:14494:2: rule__XBasicForLoopExpression__Group__8__Impl rule__XBasicForLoopExpression__Group__9
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:14501:1: rule__XBasicForLoopExpression__Group__8__Impl : ( ')' ) ;
+    public final void rule__XBasicForLoopExpression__Group__8__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14505:1: ( ( ')' ) )
+            // InternalChartDSL.g:14506:1: ( ')' )
+            {
+            // InternalChartDSL.g:14506:1: ( ')' )
+            // InternalChartDSL.g:14507:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8()); 
+            }
+            match(input,97,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"
+    // InternalChartDSL.g:14516:1: rule__XBasicForLoopExpression__Group__9 : rule__XBasicForLoopExpression__Group__9__Impl ;
+    public final void rule__XBasicForLoopExpression__Group__9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14520:1: ( rule__XBasicForLoopExpression__Group__9__Impl )
+            // InternalChartDSL.g:14521: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"
+    // InternalChartDSL.g:14527:1: rule__XBasicForLoopExpression__Group__9__Impl : ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) ;
+    public final void rule__XBasicForLoopExpression__Group__9__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14531:1: ( ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) ) )
+            // InternalChartDSL.g:14532:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
+            {
+            // InternalChartDSL.g:14532:1: ( ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 ) )
+            // InternalChartDSL.g:14533:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getEachExpressionAssignment_9()); 
+            }
+            // InternalChartDSL.g:14534:2: ( rule__XBasicForLoopExpression__EachExpressionAssignment_9 )
+            // InternalChartDSL.g:14534: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"
+    // InternalChartDSL.g:14543: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 {
+            // InternalChartDSL.g:14547:1: ( rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1 )
+            // InternalChartDSL.g:14548:2: rule__XBasicForLoopExpression__Group_3__0__Impl rule__XBasicForLoopExpression__Group_3__1
+            {
+            pushFollow(FOLLOW_59);
+            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"
+    // InternalChartDSL.g:14555: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 {
+            // InternalChartDSL.g:14559:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) ) )
+            // InternalChartDSL.g:14560:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
+            {
+            // InternalChartDSL.g:14560:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 ) )
+            // InternalChartDSL.g:14561:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_0()); 
+            }
+            // InternalChartDSL.g:14562:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 )
+            // InternalChartDSL.g:14562: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"
+    // InternalChartDSL.g:14570: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 {
+            // InternalChartDSL.g:14574:1: ( rule__XBasicForLoopExpression__Group_3__1__Impl )
+            // InternalChartDSL.g:14575: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"
+    // InternalChartDSL.g:14581: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 {
+            // InternalChartDSL.g:14585:1: ( ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* ) )
+            // InternalChartDSL.g:14586:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
+            {
+            // InternalChartDSL.g:14586:1: ( ( rule__XBasicForLoopExpression__Group_3_1__0 )* )
+            // InternalChartDSL.g:14587:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_3_1()); 
+            }
+            // InternalChartDSL.g:14588:2: ( rule__XBasicForLoopExpression__Group_3_1__0 )*
+            loop122:
+            do {
+                int alt122=2;
+                int LA122_0 = input.LA(1);
+
+                if ( (LA122_0==98) ) {
+                    alt122=1;
+                }
+
+
+                switch (alt122) {
+            	case 1 :
+            	    // InternalChartDSL.g:14588:3: rule__XBasicForLoopExpression__Group_3_1__0
+            	    {
+            	    pushFollow(FOLLOW_60);
+            	    rule__XBasicForLoopExpression__Group_3_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop122;
+                }
+            } 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"
+    // InternalChartDSL.g:14597: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 {
+            // InternalChartDSL.g:14601:1: ( rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1 )
+            // InternalChartDSL.g:14602:2: rule__XBasicForLoopExpression__Group_3_1__0__Impl rule__XBasicForLoopExpression__Group_3_1__1
+            {
+            pushFollow(FOLLOW_118);
+            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"
+    // InternalChartDSL.g:14609:1: rule__XBasicForLoopExpression__Group_3_1__0__Impl : ( ',' ) ;
+    public final void rule__XBasicForLoopExpression__Group_3_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14613:1: ( ( ',' ) )
+            // InternalChartDSL.g:14614:1: ( ',' )
+            {
+            // InternalChartDSL.g:14614:1: ( ',' )
+            // InternalChartDSL.g:14615:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0()); 
+            }
+            match(input,98,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"
+    // InternalChartDSL.g:14624: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 {
+            // InternalChartDSL.g:14628:1: ( rule__XBasicForLoopExpression__Group_3_1__1__Impl )
+            // InternalChartDSL.g:14629: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"
+    // InternalChartDSL.g:14635: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 {
+            // InternalChartDSL.g:14639:1: ( ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) ) )
+            // InternalChartDSL.g:14640:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
+            {
+            // InternalChartDSL.g:14640:1: ( ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 ) )
+            // InternalChartDSL.g:14641:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsAssignment_3_1_1()); 
+            }
+            // InternalChartDSL.g:14642:2: ( rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 )
+            // InternalChartDSL.g:14642: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"
+    // InternalChartDSL.g:14651: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 {
+            // InternalChartDSL.g:14655:1: ( rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1 )
+            // InternalChartDSL.g:14656:2: rule__XBasicForLoopExpression__Group_7__0__Impl rule__XBasicForLoopExpression__Group_7__1
+            {
+            pushFollow(FOLLOW_59);
+            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"
+    // InternalChartDSL.g:14663: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 {
+            // InternalChartDSL.g:14667:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) ) )
+            // InternalChartDSL.g:14668:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
+            {
+            // InternalChartDSL.g:14668:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 ) )
+            // InternalChartDSL.g:14669:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_0()); 
+            }
+            // InternalChartDSL.g:14670:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 )
+            // InternalChartDSL.g:14670: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"
+    // InternalChartDSL.g:14678: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 {
+            // InternalChartDSL.g:14682:1: ( rule__XBasicForLoopExpression__Group_7__1__Impl )
+            // InternalChartDSL.g:14683: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"
+    // InternalChartDSL.g:14689: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 {
+            // InternalChartDSL.g:14693:1: ( ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* ) )
+            // InternalChartDSL.g:14694:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
+            {
+            // InternalChartDSL.g:14694:1: ( ( rule__XBasicForLoopExpression__Group_7_1__0 )* )
+            // InternalChartDSL.g:14695:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getGroup_7_1()); 
+            }
+            // InternalChartDSL.g:14696:2: ( rule__XBasicForLoopExpression__Group_7_1__0 )*
+            loop123:
+            do {
+                int alt123=2;
+                int LA123_0 = input.LA(1);
+
+                if ( (LA123_0==98) ) {
+                    alt123=1;
+                }
+
+
+                switch (alt123) {
+            	case 1 :
+            	    // InternalChartDSL.g:14696:3: rule__XBasicForLoopExpression__Group_7_1__0
+            	    {
+            	    pushFollow(FOLLOW_60);
+            	    rule__XBasicForLoopExpression__Group_7_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop123;
+                }
+            } 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"
+    // InternalChartDSL.g:14705: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 {
+            // InternalChartDSL.g:14709:1: ( rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1 )
+            // InternalChartDSL.g:14710:2: rule__XBasicForLoopExpression__Group_7_1__0__Impl rule__XBasicForLoopExpression__Group_7_1__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:14717:1: rule__XBasicForLoopExpression__Group_7_1__0__Impl : ( ',' ) ;
+    public final void rule__XBasicForLoopExpression__Group_7_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14721:1: ( ( ',' ) )
+            // InternalChartDSL.g:14722:1: ( ',' )
+            {
+            // InternalChartDSL.g:14722:1: ( ',' )
+            // InternalChartDSL.g:14723:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0()); 
+            }
+            match(input,98,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"
+    // InternalChartDSL.g:14732: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 {
+            // InternalChartDSL.g:14736:1: ( rule__XBasicForLoopExpression__Group_7_1__1__Impl )
+            // InternalChartDSL.g:14737: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"
+    // InternalChartDSL.g:14743: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 {
+            // InternalChartDSL.g:14747:1: ( ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) ) )
+            // InternalChartDSL.g:14748:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
+            {
+            // InternalChartDSL.g:14748:1: ( ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 ) )
+            // InternalChartDSL.g:14749:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsAssignment_7_1_1()); 
+            }
+            // InternalChartDSL.g:14750:2: ( rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 )
+            // InternalChartDSL.g:14750: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"
+    // InternalChartDSL.g:14759: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 {
+            // InternalChartDSL.g:14763:1: ( rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1 )
+            // InternalChartDSL.g:14764:2: rule__XWhileExpression__Group__0__Impl rule__XWhileExpression__Group__1
+            {
+            pushFollow(FOLLOW_119);
+            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"
+    // InternalChartDSL.g:14771:1: rule__XWhileExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XWhileExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14775:1: ( ( () ) )
+            // InternalChartDSL.g:14776:1: ( () )
+            {
+            // InternalChartDSL.g:14776:1: ( () )
+            // InternalChartDSL.g:14777:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0()); 
+            }
+            // InternalChartDSL.g:14778:2: ()
+            // InternalChartDSL.g:14778: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"
+    // InternalChartDSL.g:14786: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 {
+            // InternalChartDSL.g:14790:1: ( rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2 )
+            // InternalChartDSL.g:14791:2: rule__XWhileExpression__Group__1__Impl rule__XWhileExpression__Group__2
+            {
+            pushFollow(FOLLOW_57);
+            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"
+    // InternalChartDSL.g:14798:1: rule__XWhileExpression__Group__1__Impl : ( 'while' ) ;
+    public final void rule__XWhileExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14802:1: ( ( 'while' ) )
+            // InternalChartDSL.g:14803:1: ( 'while' )
+            {
+            // InternalChartDSL.g:14803:1: ( 'while' )
+            // InternalChartDSL.g:14804:2: 'while'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1()); 
+            }
+            match(input,110,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"
+    // InternalChartDSL.g:14813: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 {
+            // InternalChartDSL.g:14817:1: ( rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3 )
+            // InternalChartDSL.g:14818:2: rule__XWhileExpression__Group__2__Impl rule__XWhileExpression__Group__3
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:14825:1: rule__XWhileExpression__Group__2__Impl : ( '(' ) ;
+    public final void rule__XWhileExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14829:1: ( ( '(' ) )
+            // InternalChartDSL.g:14830:1: ( '(' )
+            {
+            // InternalChartDSL.g:14830:1: ( '(' )
+            // InternalChartDSL.g:14831:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2()); 
+            }
+            match(input,96,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"
+    // InternalChartDSL.g:14840: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 {
+            // InternalChartDSL.g:14844:1: ( rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4 )
+            // InternalChartDSL.g:14845:2: rule__XWhileExpression__Group__3__Impl rule__XWhileExpression__Group__4
+            {
+            pushFollow(FOLLOW_106);
+            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"
+    // InternalChartDSL.g:14852:1: rule__XWhileExpression__Group__3__Impl : ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) ;
+    public final void rule__XWhileExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14856:1: ( ( ( rule__XWhileExpression__PredicateAssignment_3 ) ) )
+            // InternalChartDSL.g:14857:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
+            {
+            // InternalChartDSL.g:14857:1: ( ( rule__XWhileExpression__PredicateAssignment_3 ) )
+            // InternalChartDSL.g:14858:2: ( rule__XWhileExpression__PredicateAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getPredicateAssignment_3()); 
+            }
+            // InternalChartDSL.g:14859:2: ( rule__XWhileExpression__PredicateAssignment_3 )
+            // InternalChartDSL.g:14859: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"
+    // InternalChartDSL.g:14867: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 {
+            // InternalChartDSL.g:14871:1: ( rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5 )
+            // InternalChartDSL.g:14872:2: rule__XWhileExpression__Group__4__Impl rule__XWhileExpression__Group__5
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:14879:1: rule__XWhileExpression__Group__4__Impl : ( ')' ) ;
+    public final void rule__XWhileExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14883:1: ( ( ')' ) )
+            // InternalChartDSL.g:14884:1: ( ')' )
+            {
+            // InternalChartDSL.g:14884:1: ( ')' )
+            // InternalChartDSL.g:14885:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4()); 
+            }
+            match(input,97,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"
+    // InternalChartDSL.g:14894:1: rule__XWhileExpression__Group__5 : rule__XWhileExpression__Group__5__Impl ;
+    public final void rule__XWhileExpression__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14898:1: ( rule__XWhileExpression__Group__5__Impl )
+            // InternalChartDSL.g:14899: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"
+    // InternalChartDSL.g:14905:1: rule__XWhileExpression__Group__5__Impl : ( ( rule__XWhileExpression__BodyAssignment_5 ) ) ;
+    public final void rule__XWhileExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14909:1: ( ( ( rule__XWhileExpression__BodyAssignment_5 ) ) )
+            // InternalChartDSL.g:14910:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
+            {
+            // InternalChartDSL.g:14910:1: ( ( rule__XWhileExpression__BodyAssignment_5 ) )
+            // InternalChartDSL.g:14911:2: ( rule__XWhileExpression__BodyAssignment_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXWhileExpressionAccess().getBodyAssignment_5()); 
+            }
+            // InternalChartDSL.g:14912:2: ( rule__XWhileExpression__BodyAssignment_5 )
+            // InternalChartDSL.g:14912: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"
+    // InternalChartDSL.g:14921: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 {
+            // InternalChartDSL.g:14925:1: ( rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1 )
+            // InternalChartDSL.g:14926:2: rule__XDoWhileExpression__Group__0__Impl rule__XDoWhileExpression__Group__1
+            {
+            pushFollow(FOLLOW_120);
+            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"
+    // InternalChartDSL.g:14933:1: rule__XDoWhileExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XDoWhileExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14937:1: ( ( () ) )
+            // InternalChartDSL.g:14938:1: ( () )
+            {
+            // InternalChartDSL.g:14938:1: ( () )
+            // InternalChartDSL.g:14939:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0()); 
+            }
+            // InternalChartDSL.g:14940:2: ()
+            // InternalChartDSL.g:14940: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"
+    // InternalChartDSL.g:14948: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 {
+            // InternalChartDSL.g:14952:1: ( rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2 )
+            // InternalChartDSL.g:14953:2: rule__XDoWhileExpression__Group__1__Impl rule__XDoWhileExpression__Group__2
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:14960:1: rule__XDoWhileExpression__Group__1__Impl : ( 'do' ) ;
+    public final void rule__XDoWhileExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14964:1: ( ( 'do' ) )
+            // InternalChartDSL.g:14965:1: ( 'do' )
+            {
+            // InternalChartDSL.g:14965:1: ( 'do' )
+            // InternalChartDSL.g:14966:2: 'do'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1()); 
+            }
+            match(input,111,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"
+    // InternalChartDSL.g:14975: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 {
+            // InternalChartDSL.g:14979:1: ( rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3 )
+            // InternalChartDSL.g:14980:2: rule__XDoWhileExpression__Group__2__Impl rule__XDoWhileExpression__Group__3
+            {
+            pushFollow(FOLLOW_119);
+            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"
+    // InternalChartDSL.g:14987:1: rule__XDoWhileExpression__Group__2__Impl : ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) ;
+    public final void rule__XDoWhileExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:14991:1: ( ( ( rule__XDoWhileExpression__BodyAssignment_2 ) ) )
+            // InternalChartDSL.g:14992:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
+            {
+            // InternalChartDSL.g:14992:1: ( ( rule__XDoWhileExpression__BodyAssignment_2 ) )
+            // InternalChartDSL.g:14993:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getBodyAssignment_2()); 
+            }
+            // InternalChartDSL.g:14994:2: ( rule__XDoWhileExpression__BodyAssignment_2 )
+            // InternalChartDSL.g:14994: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"
+    // InternalChartDSL.g:15002: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 {
+            // InternalChartDSL.g:15006:1: ( rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4 )
+            // InternalChartDSL.g:15007:2: rule__XDoWhileExpression__Group__3__Impl rule__XDoWhileExpression__Group__4
+            {
+            pushFollow(FOLLOW_57);
+            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"
+    // InternalChartDSL.g:15014:1: rule__XDoWhileExpression__Group__3__Impl : ( 'while' ) ;
+    public final void rule__XDoWhileExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15018:1: ( ( 'while' ) )
+            // InternalChartDSL.g:15019:1: ( 'while' )
+            {
+            // InternalChartDSL.g:15019:1: ( 'while' )
+            // InternalChartDSL.g:15020:2: 'while'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3()); 
+            }
+            match(input,110,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"
+    // InternalChartDSL.g:15029: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 {
+            // InternalChartDSL.g:15033:1: ( rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5 )
+            // InternalChartDSL.g:15034:2: rule__XDoWhileExpression__Group__4__Impl rule__XDoWhileExpression__Group__5
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:15041:1: rule__XDoWhileExpression__Group__4__Impl : ( '(' ) ;
+    public final void rule__XDoWhileExpression__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15045:1: ( ( '(' ) )
+            // InternalChartDSL.g:15046:1: ( '(' )
+            {
+            // InternalChartDSL.g:15046:1: ( '(' )
+            // InternalChartDSL.g:15047:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4()); 
+            }
+            match(input,96,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"
+    // InternalChartDSL.g:15056: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 {
+            // InternalChartDSL.g:15060:1: ( rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6 )
+            // InternalChartDSL.g:15061:2: rule__XDoWhileExpression__Group__5__Impl rule__XDoWhileExpression__Group__6
+            {
+            pushFollow(FOLLOW_106);
+            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"
+    // InternalChartDSL.g:15068:1: rule__XDoWhileExpression__Group__5__Impl : ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) ;
+    public final void rule__XDoWhileExpression__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15072:1: ( ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) ) )
+            // InternalChartDSL.g:15073:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
+            {
+            // InternalChartDSL.g:15073:1: ( ( rule__XDoWhileExpression__PredicateAssignment_5 ) )
+            // InternalChartDSL.g:15074:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getPredicateAssignment_5()); 
+            }
+            // InternalChartDSL.g:15075:2: ( rule__XDoWhileExpression__PredicateAssignment_5 )
+            // InternalChartDSL.g:15075: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"
+    // InternalChartDSL.g:15083:1: rule__XDoWhileExpression__Group__6 : rule__XDoWhileExpression__Group__6__Impl ;
+    public final void rule__XDoWhileExpression__Group__6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15087:1: ( rule__XDoWhileExpression__Group__6__Impl )
+            // InternalChartDSL.g:15088: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"
+    // InternalChartDSL.g:15094:1: rule__XDoWhileExpression__Group__6__Impl : ( ')' ) ;
+    public final void rule__XDoWhileExpression__Group__6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15098:1: ( ( ')' ) )
+            // InternalChartDSL.g:15099:1: ( ')' )
+            {
+            // InternalChartDSL.g:15099:1: ( ')' )
+            // InternalChartDSL.g:15100:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXDoWhileExpressionAccess().getRightParenthesisKeyword_6()); 
+            }
+            match(input,97,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"
+    // InternalChartDSL.g:15110: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 {
+            // InternalChartDSL.g:15114:1: ( rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1 )
+            // InternalChartDSL.g:15115:2: rule__XBlockExpression__Group__0__Impl rule__XBlockExpression__Group__1
+            {
+            pushFollow(FOLLOW_8);
+            rule__XBlockExpression__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XBlockExpression__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XBlockExpression__Group__0"
+
+
+    // $ANTLR start "rule__XBlockExpression__Group__0__Impl"
+    // InternalChartDSL.g:15122:1: rule__XBlockExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XBlockExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15126:1: ( ( () ) )
+            // InternalChartDSL.g:15127:1: ( () )
+            {
+            // InternalChartDSL.g:15127:1: ( () )
+            // InternalChartDSL.g:15128:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0()); 
+            }
+            // InternalChartDSL.g:15129:2: ()
+            // InternalChartDSL.g:15129: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"
+    // InternalChartDSL.g:15137: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 {
+            // InternalChartDSL.g:15141:1: ( rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2 )
+            // InternalChartDSL.g:15142:2: rule__XBlockExpression__Group__1__Impl rule__XBlockExpression__Group__2
+            {
+            pushFollow(FOLLOW_121);
+            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"
+    // InternalChartDSL.g:15149:1: rule__XBlockExpression__Group__1__Impl : ( '{' ) ;
+    public final void rule__XBlockExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15153:1: ( ( '{' ) )
+            // InternalChartDSL.g:15154:1: ( '{' )
+            {
+            // InternalChartDSL.g:15154:1: ( '{' )
+            // InternalChartDSL.g:15155:2: '{'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1()); 
+            }
+            match(input,72,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"
+    // InternalChartDSL.g:15164: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 {
+            // InternalChartDSL.g:15168:1: ( rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3 )
+            // InternalChartDSL.g:15169:2: rule__XBlockExpression__Group__2__Impl rule__XBlockExpression__Group__3
+            {
+            pushFollow(FOLLOW_121);
+            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"
+    // InternalChartDSL.g:15176: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 {
+            // InternalChartDSL.g:15180:1: ( ( ( rule__XBlockExpression__Group_2__0 )* ) )
+            // InternalChartDSL.g:15181:1: ( ( rule__XBlockExpression__Group_2__0 )* )
+            {
+            // InternalChartDSL.g:15181:1: ( ( rule__XBlockExpression__Group_2__0 )* )
+            // InternalChartDSL.g:15182:2: ( rule__XBlockExpression__Group_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getGroup_2()); 
+            }
+            // InternalChartDSL.g:15183:2: ( rule__XBlockExpression__Group_2__0 )*
+            loop124:
+            do {
+                int alt124=2;
+                int LA124_0 = input.LA(1);
+
+                if ( ((LA124_0>=RULE_STRING && LA124_0<=RULE_DECIMAL)||LA124_0==27||(LA124_0>=34 && LA124_0<=35)||LA124_0==40||(LA124_0>=44 && LA124_0<=50)||LA124_0==72||LA124_0==96||(LA124_0>=100 && LA124_0<=101)||LA124_0==103||LA124_0==105||(LA124_0>=109 && LA124_0<=117)||LA124_0==119||(LA124_0>=153 && LA124_0<=154)) ) {
+                    alt124=1;
+                }
+
+
+                switch (alt124) {
+            	case 1 :
+            	    // InternalChartDSL.g:15183:3: rule__XBlockExpression__Group_2__0
+            	    {
+            	    pushFollow(FOLLOW_105);
+            	    rule__XBlockExpression__Group_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop124;
+                }
+            } 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"
+    // InternalChartDSL.g:15191:1: rule__XBlockExpression__Group__3 : rule__XBlockExpression__Group__3__Impl ;
+    public final void rule__XBlockExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15195:1: ( rule__XBlockExpression__Group__3__Impl )
+            // InternalChartDSL.g:15196: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"
+    // InternalChartDSL.g:15202:1: rule__XBlockExpression__Group__3__Impl : ( '}' ) ;
+    public final void rule__XBlockExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15206:1: ( ( '}' ) )
+            // InternalChartDSL.g:15207:1: ( '}' )
+            {
+            // InternalChartDSL.g:15207:1: ( '}' )
+            // InternalChartDSL.g:15208:2: '}'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getRightCurlyBracketKeyword_3()); 
+            }
+            match(input,73,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"
+    // InternalChartDSL.g:15218: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 {
+            // InternalChartDSL.g:15222:1: ( rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1 )
+            // InternalChartDSL.g:15223:2: rule__XBlockExpression__Group_2__0__Impl rule__XBlockExpression__Group_2__1
+            {
+            pushFollow(FOLLOW_53);
+            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"
+    // InternalChartDSL.g:15230: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 {
+            // InternalChartDSL.g:15234:1: ( ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) ) )
+            // InternalChartDSL.g:15235:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
+            {
+            // InternalChartDSL.g:15235:1: ( ( rule__XBlockExpression__ExpressionsAssignment_2_0 ) )
+            // InternalChartDSL.g:15236:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getExpressionsAssignment_2_0()); 
+            }
+            // InternalChartDSL.g:15237:2: ( rule__XBlockExpression__ExpressionsAssignment_2_0 )
+            // InternalChartDSL.g:15237: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"
+    // InternalChartDSL.g:15245: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 {
+            // InternalChartDSL.g:15249:1: ( rule__XBlockExpression__Group_2__1__Impl )
+            // InternalChartDSL.g:15250: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"
+    // InternalChartDSL.g:15256:1: rule__XBlockExpression__Group_2__1__Impl : ( ( ';' )? ) ;
+    public final void rule__XBlockExpression__Group_2__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15260:1: ( ( ( ';' )? ) )
+            // InternalChartDSL.g:15261:1: ( ( ';' )? )
+            {
+            // InternalChartDSL.g:15261:1: ( ( ';' )? )
+            // InternalChartDSL.g:15262:2: ( ';' )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1()); 
+            }
+            // InternalChartDSL.g:15263:2: ( ';' )?
+            int alt125=2;
+            int LA125_0 = input.LA(1);
+
+            if ( (LA125_0==94) ) {
+                alt125=1;
+            }
+            switch (alt125) {
+                case 1 :
+                    // InternalChartDSL.g:15263:3: ';'
+                    {
+                    match(input,94,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"
+    // InternalChartDSL.g:15272: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 {
+            // InternalChartDSL.g:15276:1: ( rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1 )
+            // InternalChartDSL.g:15277:2: rule__XVariableDeclaration__Group__0__Impl rule__XVariableDeclaration__Group__1
+            {
+            pushFollow(FOLLOW_122);
+            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"
+    // InternalChartDSL.g:15284:1: rule__XVariableDeclaration__Group__0__Impl : ( () ) ;
+    public final void rule__XVariableDeclaration__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15288:1: ( ( () ) )
+            // InternalChartDSL.g:15289:1: ( () )
+            {
+            // InternalChartDSL.g:15289:1: ( () )
+            // InternalChartDSL.g:15290:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0()); 
+            }
+            // InternalChartDSL.g:15291:2: ()
+            // InternalChartDSL.g:15291: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"
+    // InternalChartDSL.g:15299: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 {
+            // InternalChartDSL.g:15303:1: ( rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2 )
+            // InternalChartDSL.g:15304:2: rule__XVariableDeclaration__Group__1__Impl rule__XVariableDeclaration__Group__2
+            {
+            pushFollow(FOLLOW_78);
+            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"
+    // InternalChartDSL.g:15311:1: rule__XVariableDeclaration__Group__1__Impl : ( ( rule__XVariableDeclaration__Alternatives_1 ) ) ;
+    public final void rule__XVariableDeclaration__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15315:1: ( ( ( rule__XVariableDeclaration__Alternatives_1 ) ) )
+            // InternalChartDSL.g:15316:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
+            {
+            // InternalChartDSL.g:15316:1: ( ( rule__XVariableDeclaration__Alternatives_1 ) )
+            // InternalChartDSL.g:15317:2: ( rule__XVariableDeclaration__Alternatives_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getAlternatives_1()); 
+            }
+            // InternalChartDSL.g:15318:2: ( rule__XVariableDeclaration__Alternatives_1 )
+            // InternalChartDSL.g:15318: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"
+    // InternalChartDSL.g:15326: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 {
+            // InternalChartDSL.g:15330:1: ( rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3 )
+            // InternalChartDSL.g:15331:2: rule__XVariableDeclaration__Group__2__Impl rule__XVariableDeclaration__Group__3
+            {
+            pushFollow(FOLLOW_62);
+            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"
+    // InternalChartDSL.g:15338:1: rule__XVariableDeclaration__Group__2__Impl : ( ( rule__XVariableDeclaration__Alternatives_2 ) ) ;
+    public final void rule__XVariableDeclaration__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15342:1: ( ( ( rule__XVariableDeclaration__Alternatives_2 ) ) )
+            // InternalChartDSL.g:15343:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
+            {
+            // InternalChartDSL.g:15343:1: ( ( rule__XVariableDeclaration__Alternatives_2 ) )
+            // InternalChartDSL.g:15344:2: ( rule__XVariableDeclaration__Alternatives_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getAlternatives_2()); 
+            }
+            // InternalChartDSL.g:15345:2: ( rule__XVariableDeclaration__Alternatives_2 )
+            // InternalChartDSL.g:15345: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"
+    // InternalChartDSL.g:15353:1: rule__XVariableDeclaration__Group__3 : rule__XVariableDeclaration__Group__3__Impl ;
+    public final void rule__XVariableDeclaration__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15357:1: ( rule__XVariableDeclaration__Group__3__Impl )
+            // InternalChartDSL.g:15358: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"
+    // InternalChartDSL.g:15364: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 {
+            // InternalChartDSL.g:15368:1: ( ( ( rule__XVariableDeclaration__Group_3__0 )? ) )
+            // InternalChartDSL.g:15369:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
+            {
+            // InternalChartDSL.g:15369:1: ( ( rule__XVariableDeclaration__Group_3__0 )? )
+            // InternalChartDSL.g:15370:2: ( rule__XVariableDeclaration__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getGroup_3()); 
+            }
+            // InternalChartDSL.g:15371:2: ( rule__XVariableDeclaration__Group_3__0 )?
+            int alt126=2;
+            int LA126_0 = input.LA(1);
+
+            if ( (LA126_0==13) ) {
+                alt126=1;
+            }
+            switch (alt126) {
+                case 1 :
+                    // InternalChartDSL.g:15371: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"
+    // InternalChartDSL.g:15380: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 {
+            // InternalChartDSL.g:15384:1: ( rule__XVariableDeclaration__Group_2_0__0__Impl )
+            // InternalChartDSL.g:15385: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"
+    // InternalChartDSL.g:15391: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 {
+            // InternalChartDSL.g:15395:1: ( ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) ) )
+            // InternalChartDSL.g:15396:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
+            {
+            // InternalChartDSL.g:15396:1: ( ( rule__XVariableDeclaration__Group_2_0_0__0 ) )
+            // InternalChartDSL.g:15397:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0_0()); 
+            }
+            // InternalChartDSL.g:15398:2: ( rule__XVariableDeclaration__Group_2_0_0__0 )
+            // InternalChartDSL.g:15398: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"
+    // InternalChartDSL.g:15407: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 {
+            // InternalChartDSL.g:15411:1: ( rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1 )
+            // InternalChartDSL.g:15412:2: rule__XVariableDeclaration__Group_2_0_0__0__Impl rule__XVariableDeclaration__Group_2_0_0__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__XVariableDeclaration__Group_2_0_0__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XVariableDeclaration__Group_2_0_0__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XVariableDeclaration__Group_2_0_0__0"
+
+
+    // $ANTLR start "rule__XVariableDeclaration__Group_2_0_0__0__Impl"
+    // InternalChartDSL.g:15419: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 {
+            // InternalChartDSL.g:15423:1: ( ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) ) )
+            // InternalChartDSL.g:15424:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
+            {
+            // InternalChartDSL.g:15424:1: ( ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 ) )
+            // InternalChartDSL.g:15425:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getTypeAssignment_2_0_0_0()); 
+            }
+            // InternalChartDSL.g:15426:2: ( rule__XVariableDeclaration__TypeAssignment_2_0_0_0 )
+            // InternalChartDSL.g:15426: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"
+    // InternalChartDSL.g:15434: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 {
+            // InternalChartDSL.g:15438:1: ( rule__XVariableDeclaration__Group_2_0_0__1__Impl )
+            // InternalChartDSL.g:15439: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"
+    // InternalChartDSL.g:15445: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 {
+            // InternalChartDSL.g:15449:1: ( ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) ) )
+            // InternalChartDSL.g:15450:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
+            {
+            // InternalChartDSL.g:15450:1: ( ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 ) )
+            // InternalChartDSL.g:15451:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getNameAssignment_2_0_0_1()); 
+            }
+            // InternalChartDSL.g:15452:2: ( rule__XVariableDeclaration__NameAssignment_2_0_0_1 )
+            // InternalChartDSL.g:15452: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"
+    // InternalChartDSL.g:15461: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 {
+            // InternalChartDSL.g:15465:1: ( rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1 )
+            // InternalChartDSL.g:15466:2: rule__XVariableDeclaration__Group_3__0__Impl rule__XVariableDeclaration__Group_3__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:15473:1: rule__XVariableDeclaration__Group_3__0__Impl : ( '=' ) ;
+    public final void rule__XVariableDeclaration__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15477:1: ( ( '=' ) )
+            // InternalChartDSL.g:15478:1: ( '=' )
+            {
+            // InternalChartDSL.g:15478:1: ( '=' )
+            // InternalChartDSL.g:15479: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"
+    // InternalChartDSL.g:15488: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 {
+            // InternalChartDSL.g:15492:1: ( rule__XVariableDeclaration__Group_3__1__Impl )
+            // InternalChartDSL.g:15493: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"
+    // InternalChartDSL.g:15499: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 {
+            // InternalChartDSL.g:15503:1: ( ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) ) )
+            // InternalChartDSL.g:15504:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
+            {
+            // InternalChartDSL.g:15504:1: ( ( rule__XVariableDeclaration__RightAssignment_3_1 ) )
+            // InternalChartDSL.g:15505:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getRightAssignment_3_1()); 
+            }
+            // InternalChartDSL.g:15506:2: ( rule__XVariableDeclaration__RightAssignment_3_1 )
+            // InternalChartDSL.g:15506: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"
+    // InternalChartDSL.g:15515: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 {
+            // InternalChartDSL.g:15519:1: ( rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1 )
+            // InternalChartDSL.g:15520:2: rule__JvmFormalParameter__Group__0__Impl rule__JvmFormalParameter__Group__1
+            {
+            pushFollow(FOLLOW_78);
+            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"
+    // InternalChartDSL.g:15527:1: rule__JvmFormalParameter__Group__0__Impl : ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) ;
+    public final void rule__JvmFormalParameter__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15531:1: ( ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? ) )
+            // InternalChartDSL.g:15532:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
+            {
+            // InternalChartDSL.g:15532:1: ( ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )? )
+            // InternalChartDSL.g:15533:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterAccess().getParameterTypeAssignment_0()); 
+            }
+            // InternalChartDSL.g:15534:2: ( rule__JvmFormalParameter__ParameterTypeAssignment_0 )?
+            int alt127=2;
+            int LA127_0 = input.LA(1);
+
+            if ( (LA127_0==RULE_ID) ) {
+                int LA127_1 = input.LA(2);
+
+                if ( (LA127_1==RULE_ID||LA127_1==27||LA127_1==43||LA127_1==101) ) {
+                    alt127=1;
+                }
+            }
+            else if ( (LA127_0==31||LA127_0==96) ) {
+                alt127=1;
+            }
+            switch (alt127) {
+                case 1 :
+                    // InternalChartDSL.g:15534: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"
+    // InternalChartDSL.g:15542:1: rule__JvmFormalParameter__Group__1 : rule__JvmFormalParameter__Group__1__Impl ;
+    public final void rule__JvmFormalParameter__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15546:1: ( rule__JvmFormalParameter__Group__1__Impl )
+            // InternalChartDSL.g:15547: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"
+    // InternalChartDSL.g:15553:1: rule__JvmFormalParameter__Group__1__Impl : ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) ;
+    public final void rule__JvmFormalParameter__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15557:1: ( ( ( rule__JvmFormalParameter__NameAssignment_1 ) ) )
+            // InternalChartDSL.g:15558:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
+            {
+            // InternalChartDSL.g:15558:1: ( ( rule__JvmFormalParameter__NameAssignment_1 ) )
+            // InternalChartDSL.g:15559:2: ( rule__JvmFormalParameter__NameAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmFormalParameterAccess().getNameAssignment_1()); 
+            }
+            // InternalChartDSL.g:15560:2: ( rule__JvmFormalParameter__NameAssignment_1 )
+            // InternalChartDSL.g:15560: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"
+    // InternalChartDSL.g:15569: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 {
+            // InternalChartDSL.g:15573:1: ( rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1 )
+            // InternalChartDSL.g:15574:2: rule__FullJvmFormalParameter__Group__0__Impl rule__FullJvmFormalParameter__Group__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__FullJvmFormalParameter__Group__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__FullJvmFormalParameter__Group__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__FullJvmFormalParameter__Group__0"
+
+
+    // $ANTLR start "rule__FullJvmFormalParameter__Group__0__Impl"
+    // InternalChartDSL.g:15581:1: rule__FullJvmFormalParameter__Group__0__Impl : ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) ;
+    public final void rule__FullJvmFormalParameter__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15585:1: ( ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) ) )
+            // InternalChartDSL.g:15586:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
+            {
+            // InternalChartDSL.g:15586:1: ( ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 ) )
+            // InternalChartDSL.g:15587:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterAccess().getParameterTypeAssignment_0()); 
+            }
+            // InternalChartDSL.g:15588:2: ( rule__FullJvmFormalParameter__ParameterTypeAssignment_0 )
+            // InternalChartDSL.g:15588: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"
+    // InternalChartDSL.g:15596:1: rule__FullJvmFormalParameter__Group__1 : rule__FullJvmFormalParameter__Group__1__Impl ;
+    public final void rule__FullJvmFormalParameter__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15600:1: ( rule__FullJvmFormalParameter__Group__1__Impl )
+            // InternalChartDSL.g:15601: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"
+    // InternalChartDSL.g:15607:1: rule__FullJvmFormalParameter__Group__1__Impl : ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) ;
+    public final void rule__FullJvmFormalParameter__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15611:1: ( ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) ) )
+            // InternalChartDSL.g:15612:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
+            {
+            // InternalChartDSL.g:15612:1: ( ( rule__FullJvmFormalParameter__NameAssignment_1 ) )
+            // InternalChartDSL.g:15613:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getFullJvmFormalParameterAccess().getNameAssignment_1()); 
+            }
+            // InternalChartDSL.g:15614:2: ( rule__FullJvmFormalParameter__NameAssignment_1 )
+            // InternalChartDSL.g:15614: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"
+    // InternalChartDSL.g:15623: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 {
+            // InternalChartDSL.g:15627:1: ( rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1 )
+            // InternalChartDSL.g:15628:2: rule__XFeatureCall__Group__0__Impl rule__XFeatureCall__Group__1
+            {
+            pushFollow(FOLLOW_96);
+            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"
+    // InternalChartDSL.g:15635:1: rule__XFeatureCall__Group__0__Impl : ( () ) ;
+    public final void rule__XFeatureCall__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15639:1: ( ( () ) )
+            // InternalChartDSL.g:15640:1: ( () )
+            {
+            // InternalChartDSL.g:15640:1: ( () )
+            // InternalChartDSL.g:15641:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0()); 
+            }
+            // InternalChartDSL.g:15642:2: ()
+            // InternalChartDSL.g:15642: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"
+    // InternalChartDSL.g:15650: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 {
+            // InternalChartDSL.g:15654:1: ( rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2 )
+            // InternalChartDSL.g:15655:2: rule__XFeatureCall__Group__1__Impl rule__XFeatureCall__Group__2
+            {
+            pushFollow(FOLLOW_96);
+            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"
+    // InternalChartDSL.g:15662: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 {
+            // InternalChartDSL.g:15666:1: ( ( ( rule__XFeatureCall__Group_1__0 )? ) )
+            // InternalChartDSL.g:15667:1: ( ( rule__XFeatureCall__Group_1__0 )? )
+            {
+            // InternalChartDSL.g:15667:1: ( ( rule__XFeatureCall__Group_1__0 )? )
+            // InternalChartDSL.g:15668:2: ( rule__XFeatureCall__Group_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup_1()); 
+            }
+            // InternalChartDSL.g:15669:2: ( rule__XFeatureCall__Group_1__0 )?
+            int alt128=2;
+            int LA128_0 = input.LA(1);
+
+            if ( (LA128_0==27) ) {
+                alt128=1;
+            }
+            switch (alt128) {
+                case 1 :
+                    // InternalChartDSL.g:15669: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"
+    // InternalChartDSL.g:15677: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 {
+            // InternalChartDSL.g:15681:1: ( rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3 )
+            // InternalChartDSL.g:15682:2: rule__XFeatureCall__Group__2__Impl rule__XFeatureCall__Group__3
+            {
+            pushFollow(FOLLOW_97);
+            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"
+    // InternalChartDSL.g:15689:1: rule__XFeatureCall__Group__2__Impl : ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) ;
+    public final void rule__XFeatureCall__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15693:1: ( ( ( rule__XFeatureCall__FeatureAssignment_2 ) ) )
+            // InternalChartDSL.g:15694:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
+            {
+            // InternalChartDSL.g:15694:1: ( ( rule__XFeatureCall__FeatureAssignment_2 ) )
+            // InternalChartDSL.g:15695:2: ( rule__XFeatureCall__FeatureAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureAssignment_2()); 
+            }
+            // InternalChartDSL.g:15696:2: ( rule__XFeatureCall__FeatureAssignment_2 )
+            // InternalChartDSL.g:15696: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"
+    // InternalChartDSL.g:15704: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 {
+            // InternalChartDSL.g:15708:1: ( rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4 )
+            // InternalChartDSL.g:15709:2: rule__XFeatureCall__Group__3__Impl rule__XFeatureCall__Group__4
+            {
+            pushFollow(FOLLOW_97);
+            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"
+    // InternalChartDSL.g:15716: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 {
+            // InternalChartDSL.g:15720:1: ( ( ( rule__XFeatureCall__Group_3__0 )? ) )
+            // InternalChartDSL.g:15721:1: ( ( rule__XFeatureCall__Group_3__0 )? )
+            {
+            // InternalChartDSL.g:15721:1: ( ( rule__XFeatureCall__Group_3__0 )? )
+            // InternalChartDSL.g:15722:2: ( rule__XFeatureCall__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup_3()); 
+            }
+            // InternalChartDSL.g:15723:2: ( rule__XFeatureCall__Group_3__0 )?
+            int alt129=2;
+            alt129 = dfa129.predict(input);
+            switch (alt129) {
+                case 1 :
+                    // InternalChartDSL.g:15723: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"
+    // InternalChartDSL.g:15731:1: rule__XFeatureCall__Group__4 : rule__XFeatureCall__Group__4__Impl ;
+    public final void rule__XFeatureCall__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15735:1: ( rule__XFeatureCall__Group__4__Impl )
+            // InternalChartDSL.g:15736: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"
+    // InternalChartDSL.g:15742:1: rule__XFeatureCall__Group__4__Impl : ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) ;
+    public final void rule__XFeatureCall__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15746:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? ) )
+            // InternalChartDSL.g:15747:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
+            {
+            // InternalChartDSL.g:15747:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )? )
+            // InternalChartDSL.g:15748:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_4()); 
+            }
+            // InternalChartDSL.g:15749:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )?
+            int alt130=2;
+            alt130 = dfa130.predict(input);
+            switch (alt130) {
+                case 1 :
+                    // InternalChartDSL.g:15749: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"
+    // InternalChartDSL.g:15758: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 {
+            // InternalChartDSL.g:15762:1: ( rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1 )
+            // InternalChartDSL.g:15763:2: rule__XFeatureCall__Group_1__0__Impl rule__XFeatureCall__Group_1__1
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalChartDSL.g:15770:1: rule__XFeatureCall__Group_1__0__Impl : ( '<' ) ;
+    public final void rule__XFeatureCall__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15774:1: ( ( '<' ) )
+            // InternalChartDSL.g:15775:1: ( '<' )
+            {
+            // InternalChartDSL.g:15775:1: ( '<' )
+            // InternalChartDSL.g:15776: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"
+    // InternalChartDSL.g:15785: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 {
+            // InternalChartDSL.g:15789:1: ( rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2 )
+            // InternalChartDSL.g:15790:2: rule__XFeatureCall__Group_1__1__Impl rule__XFeatureCall__Group_1__2
+            {
+            pushFollow(FOLLOW_99);
+            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"
+    // InternalChartDSL.g:15797: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 {
+            // InternalChartDSL.g:15801:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) ) )
+            // InternalChartDSL.g:15802:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
+            {
+            // InternalChartDSL.g:15802:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 ) )
+            // InternalChartDSL.g:15803:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_1()); 
+            }
+            // InternalChartDSL.g:15804:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_1 )
+            // InternalChartDSL.g:15804: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"
+    // InternalChartDSL.g:15812: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 {
+            // InternalChartDSL.g:15816:1: ( rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3 )
+            // InternalChartDSL.g:15817:2: rule__XFeatureCall__Group_1__2__Impl rule__XFeatureCall__Group_1__3
+            {
+            pushFollow(FOLLOW_99);
+            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"
+    // InternalChartDSL.g:15824: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 {
+            // InternalChartDSL.g:15828:1: ( ( ( rule__XFeatureCall__Group_1_2__0 )* ) )
+            // InternalChartDSL.g:15829:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
+            {
+            // InternalChartDSL.g:15829:1: ( ( rule__XFeatureCall__Group_1_2__0 )* )
+            // InternalChartDSL.g:15830:2: ( rule__XFeatureCall__Group_1_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup_1_2()); 
+            }
+            // InternalChartDSL.g:15831:2: ( rule__XFeatureCall__Group_1_2__0 )*
+            loop131:
+            do {
+                int alt131=2;
+                int LA131_0 = input.LA(1);
+
+                if ( (LA131_0==98) ) {
+                    alt131=1;
+                }
+
+
+                switch (alt131) {
+            	case 1 :
+            	    // InternalChartDSL.g:15831:3: rule__XFeatureCall__Group_1_2__0
+            	    {
+            	    pushFollow(FOLLOW_60);
+            	    rule__XFeatureCall__Group_1_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop131;
+                }
+            } 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"
+    // InternalChartDSL.g:15839: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 {
+            // InternalChartDSL.g:15843:1: ( rule__XFeatureCall__Group_1__3__Impl )
+            // InternalChartDSL.g:15844: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"
+    // InternalChartDSL.g:15850:1: rule__XFeatureCall__Group_1__3__Impl : ( '>' ) ;
+    public final void rule__XFeatureCall__Group_1__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15854:1: ( ( '>' ) )
+            // InternalChartDSL.g:15855:1: ( '>' )
+            {
+            // InternalChartDSL.g:15855:1: ( '>' )
+            // InternalChartDSL.g:15856: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"
+    // InternalChartDSL.g:15866: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 {
+            // InternalChartDSL.g:15870:1: ( rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1 )
+            // InternalChartDSL.g:15871:2: rule__XFeatureCall__Group_1_2__0__Impl rule__XFeatureCall__Group_1_2__1
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalChartDSL.g:15878:1: rule__XFeatureCall__Group_1_2__0__Impl : ( ',' ) ;
+    public final void rule__XFeatureCall__Group_1_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15882:1: ( ( ',' ) )
+            // InternalChartDSL.g:15883:1: ( ',' )
+            {
+            // InternalChartDSL.g:15883:1: ( ',' )
+            // InternalChartDSL.g:15884:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0()); 
+            }
+            match(input,98,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"
+    // InternalChartDSL.g:15893: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 {
+            // InternalChartDSL.g:15897:1: ( rule__XFeatureCall__Group_1_2__1__Impl )
+            // InternalChartDSL.g:15898: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"
+    // InternalChartDSL.g:15904: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 {
+            // InternalChartDSL.g:15908:1: ( ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) ) )
+            // InternalChartDSL.g:15909:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
+            {
+            // InternalChartDSL.g:15909:1: ( ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 ) )
+            // InternalChartDSL.g:15910:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getTypeArgumentsAssignment_1_2_1()); 
+            }
+            // InternalChartDSL.g:15911:2: ( rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 )
+            // InternalChartDSL.g:15911: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"
+    // InternalChartDSL.g:15920: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 {
+            // InternalChartDSL.g:15924:1: ( rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1 )
+            // InternalChartDSL.g:15925:2: rule__XFeatureCall__Group_3__0__Impl rule__XFeatureCall__Group_3__1
+            {
+            pushFollow(FOLLOW_100);
+            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"
+    // InternalChartDSL.g:15932: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 {
+            // InternalChartDSL.g:15936:1: ( ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) ) )
+            // InternalChartDSL.g:15937:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
+            {
+            // InternalChartDSL.g:15937:1: ( ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 ) )
+            // InternalChartDSL.g:15938:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallAssignment_3_0()); 
+            }
+            // InternalChartDSL.g:15939:2: ( rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 )
+            // InternalChartDSL.g:15939: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"
+    // InternalChartDSL.g:15947: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 {
+            // InternalChartDSL.g:15951:1: ( rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2 )
+            // InternalChartDSL.g:15952:2: rule__XFeatureCall__Group_3__1__Impl rule__XFeatureCall__Group_3__2
+            {
+            pushFollow(FOLLOW_100);
+            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"
+    // InternalChartDSL.g:15959: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 {
+            // InternalChartDSL.g:15963:1: ( ( ( rule__XFeatureCall__Alternatives_3_1 )? ) )
+            // InternalChartDSL.g:15964:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
+            {
+            // InternalChartDSL.g:15964:1: ( ( rule__XFeatureCall__Alternatives_3_1 )? )
+            // InternalChartDSL.g:15965:2: ( rule__XFeatureCall__Alternatives_3_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getAlternatives_3_1()); 
+            }
+            // InternalChartDSL.g:15966:2: ( rule__XFeatureCall__Alternatives_3_1 )?
+            int alt132=2;
+            int LA132_0 = input.LA(1);
+
+            if ( ((LA132_0>=RULE_STRING && LA132_0<=RULE_DECIMAL)||LA132_0==27||LA132_0==31||(LA132_0>=34 && LA132_0<=35)||LA132_0==40||(LA132_0>=45 && LA132_0<=50)||LA132_0==72||LA132_0==96||(LA132_0>=100 && LA132_0<=101)||LA132_0==103||LA132_0==105||(LA132_0>=109 && LA132_0<=117)||LA132_0==119||LA132_0==152||LA132_0==154) ) {
+                alt132=1;
+            }
+            switch (alt132) {
+                case 1 :
+                    // InternalChartDSL.g:15966: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"
+    // InternalChartDSL.g:15974: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 {
+            // InternalChartDSL.g:15978:1: ( rule__XFeatureCall__Group_3__2__Impl )
+            // InternalChartDSL.g:15979: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"
+    // InternalChartDSL.g:15985:1: rule__XFeatureCall__Group_3__2__Impl : ( ')' ) ;
+    public final void rule__XFeatureCall__Group_3__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:15989:1: ( ( ')' ) )
+            // InternalChartDSL.g:15990:1: ( ')' )
+            {
+            // InternalChartDSL.g:15990:1: ( ')' )
+            // InternalChartDSL.g:15991:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2()); 
+            }
+            match(input,97,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"
+    // InternalChartDSL.g:16001: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 {
+            // InternalChartDSL.g:16005:1: ( rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1 )
+            // InternalChartDSL.g:16006:2: rule__XFeatureCall__Group_3_1_1__0__Impl rule__XFeatureCall__Group_3_1_1__1
+            {
+            pushFollow(FOLLOW_59);
+            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"
+    // InternalChartDSL.g:16013: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 {
+            // InternalChartDSL.g:16017:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) ) )
+            // InternalChartDSL.g:16018:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
+            {
+            // InternalChartDSL.g:16018:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 ) )
+            // InternalChartDSL.g:16019:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_0()); 
+            }
+            // InternalChartDSL.g:16020:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_0 )
+            // InternalChartDSL.g:16020: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"
+    // InternalChartDSL.g:16028: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 {
+            // InternalChartDSL.g:16032:1: ( rule__XFeatureCall__Group_3_1_1__1__Impl )
+            // InternalChartDSL.g:16033: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"
+    // InternalChartDSL.g:16039: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 {
+            // InternalChartDSL.g:16043:1: ( ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* ) )
+            // InternalChartDSL.g:16044:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
+            {
+            // InternalChartDSL.g:16044:1: ( ( rule__XFeatureCall__Group_3_1_1_1__0 )* )
+            // InternalChartDSL.g:16045:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getGroup_3_1_1_1()); 
+            }
+            // InternalChartDSL.g:16046:2: ( rule__XFeatureCall__Group_3_1_1_1__0 )*
+            loop133:
+            do {
+                int alt133=2;
+                int LA133_0 = input.LA(1);
+
+                if ( (LA133_0==98) ) {
+                    alt133=1;
+                }
+
+
+                switch (alt133) {
+            	case 1 :
+            	    // InternalChartDSL.g:16046:3: rule__XFeatureCall__Group_3_1_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_60);
+            	    rule__XFeatureCall__Group_3_1_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop133;
+                }
+            } 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"
+    // InternalChartDSL.g:16055: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 {
+            // InternalChartDSL.g:16059:1: ( rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1 )
+            // InternalChartDSL.g:16060:2: rule__XFeatureCall__Group_3_1_1_1__0__Impl rule__XFeatureCall__Group_3_1_1_1__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:16067: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 {
+            // InternalChartDSL.g:16071:1: ( ( ',' ) )
+            // InternalChartDSL.g:16072:1: ( ',' )
+            {
+            // InternalChartDSL.g:16072:1: ( ',' )
+            // InternalChartDSL.g:16073:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0()); 
+            }
+            match(input,98,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"
+    // InternalChartDSL.g:16082: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 {
+            // InternalChartDSL.g:16086:1: ( rule__XFeatureCall__Group_3_1_1_1__1__Impl )
+            // InternalChartDSL.g:16087: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"
+    // InternalChartDSL.g:16093: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 {
+            // InternalChartDSL.g:16097:1: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) ) )
+            // InternalChartDSL.g:16098:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
+            {
+            // InternalChartDSL.g:16098:1: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 ) )
+            // InternalChartDSL.g:16099:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_1_1_1()); 
+            }
+            // InternalChartDSL.g:16100:2: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_1_1_1 )
+            // InternalChartDSL.g:16100: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"
+    // InternalChartDSL.g:16109: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 {
+            // InternalChartDSL.g:16113:1: ( rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1 )
+            // InternalChartDSL.g:16114:2: rule__XConstructorCall__Group__0__Impl rule__XConstructorCall__Group__1
+            {
+            pushFollow(FOLLOW_123);
+            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"
+    // InternalChartDSL.g:16121:1: rule__XConstructorCall__Group__0__Impl : ( () ) ;
+    public final void rule__XConstructorCall__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16125:1: ( ( () ) )
+            // InternalChartDSL.g:16126:1: ( () )
+            {
+            // InternalChartDSL.g:16126:1: ( () )
+            // InternalChartDSL.g:16127:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0()); 
+            }
+            // InternalChartDSL.g:16128:2: ()
+            // InternalChartDSL.g:16128: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"
+    // InternalChartDSL.g:16136: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 {
+            // InternalChartDSL.g:16140:1: ( rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2 )
+            // InternalChartDSL.g:16141:2: rule__XConstructorCall__Group__1__Impl rule__XConstructorCall__Group__2
+            {
+            pushFollow(FOLLOW_7);
+            rule__XConstructorCall__Group__1__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XConstructorCall__Group__2();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XConstructorCall__Group__1"
+
+
+    // $ANTLR start "rule__XConstructorCall__Group__1__Impl"
+    // InternalChartDSL.g:16148:1: rule__XConstructorCall__Group__1__Impl : ( 'new' ) ;
+    public final void rule__XConstructorCall__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16152:1: ( ( 'new' ) )
+            // InternalChartDSL.g:16153:1: ( 'new' )
+            {
+            // InternalChartDSL.g:16153:1: ( 'new' )
+            // InternalChartDSL.g:16154:2: 'new'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getNewKeyword_1()); 
+            }
+            match(input,112,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"
+    // InternalChartDSL.g:16163: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 {
+            // InternalChartDSL.g:16167:1: ( rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3 )
+            // InternalChartDSL.g:16168:2: rule__XConstructorCall__Group__2__Impl rule__XConstructorCall__Group__3
+            {
+            pushFollow(FOLLOW_124);
+            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"
+    // InternalChartDSL.g:16175:1: rule__XConstructorCall__Group__2__Impl : ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) ;
+    public final void rule__XConstructorCall__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16179:1: ( ( ( rule__XConstructorCall__ConstructorAssignment_2 ) ) )
+            // InternalChartDSL.g:16180:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
+            {
+            // InternalChartDSL.g:16180:1: ( ( rule__XConstructorCall__ConstructorAssignment_2 ) )
+            // InternalChartDSL.g:16181:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getConstructorAssignment_2()); 
+            }
+            // InternalChartDSL.g:16182:2: ( rule__XConstructorCall__ConstructorAssignment_2 )
+            // InternalChartDSL.g:16182: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"
+    // InternalChartDSL.g:16190: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 {
+            // InternalChartDSL.g:16194:1: ( rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4 )
+            // InternalChartDSL.g:16195:2: rule__XConstructorCall__Group__3__Impl rule__XConstructorCall__Group__4
+            {
+            pushFollow(FOLLOW_124);
+            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"
+    // InternalChartDSL.g:16202: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 {
+            // InternalChartDSL.g:16206:1: ( ( ( rule__XConstructorCall__Group_3__0 )? ) )
+            // InternalChartDSL.g:16207:1: ( ( rule__XConstructorCall__Group_3__0 )? )
+            {
+            // InternalChartDSL.g:16207:1: ( ( rule__XConstructorCall__Group_3__0 )? )
+            // InternalChartDSL.g:16208:2: ( rule__XConstructorCall__Group_3__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup_3()); 
+            }
+            // InternalChartDSL.g:16209:2: ( rule__XConstructorCall__Group_3__0 )?
+            int alt134=2;
+            alt134 = dfa134.predict(input);
+            switch (alt134) {
+                case 1 :
+                    // InternalChartDSL.g:16209: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"
+    // InternalChartDSL.g:16217: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 {
+            // InternalChartDSL.g:16221:1: ( rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5 )
+            // InternalChartDSL.g:16222:2: rule__XConstructorCall__Group__4__Impl rule__XConstructorCall__Group__5
+            {
+            pushFollow(FOLLOW_124);
+            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"
+    // InternalChartDSL.g:16229: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 {
+            // InternalChartDSL.g:16233:1: ( ( ( rule__XConstructorCall__Group_4__0 )? ) )
+            // InternalChartDSL.g:16234:1: ( ( rule__XConstructorCall__Group_4__0 )? )
+            {
+            // InternalChartDSL.g:16234:1: ( ( rule__XConstructorCall__Group_4__0 )? )
+            // InternalChartDSL.g:16235:2: ( rule__XConstructorCall__Group_4__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup_4()); 
+            }
+            // InternalChartDSL.g:16236:2: ( rule__XConstructorCall__Group_4__0 )?
+            int alt135=2;
+            alt135 = dfa135.predict(input);
+            switch (alt135) {
+                case 1 :
+                    // InternalChartDSL.g:16236: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"
+    // InternalChartDSL.g:16244:1: rule__XConstructorCall__Group__5 : rule__XConstructorCall__Group__5__Impl ;
+    public final void rule__XConstructorCall__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16248:1: ( rule__XConstructorCall__Group__5__Impl )
+            // InternalChartDSL.g:16249: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"
+    // InternalChartDSL.g:16255:1: rule__XConstructorCall__Group__5__Impl : ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) ;
+    public final void rule__XConstructorCall__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16259:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? ) )
+            // InternalChartDSL.g:16260:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
+            {
+            // InternalChartDSL.g:16260:1: ( ( rule__XConstructorCall__ArgumentsAssignment_5 )? )
+            // InternalChartDSL.g:16261:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_5()); 
+            }
+            // InternalChartDSL.g:16262:2: ( rule__XConstructorCall__ArgumentsAssignment_5 )?
+            int alt136=2;
+            alt136 = dfa136.predict(input);
+            switch (alt136) {
+                case 1 :
+                    // InternalChartDSL.g:16262: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"
+    // InternalChartDSL.g:16271: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 {
+            // InternalChartDSL.g:16275:1: ( rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1 )
+            // InternalChartDSL.g:16276:2: rule__XConstructorCall__Group_3__0__Impl rule__XConstructorCall__Group_3__1
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalChartDSL.g:16283:1: rule__XConstructorCall__Group_3__0__Impl : ( ( '<' ) ) ;
+    public final void rule__XConstructorCall__Group_3__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16287:1: ( ( ( '<' ) ) )
+            // InternalChartDSL.g:16288:1: ( ( '<' ) )
+            {
+            // InternalChartDSL.g:16288:1: ( ( '<' ) )
+            // InternalChartDSL.g:16289:2: ( '<' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0()); 
+            }
+            // InternalChartDSL.g:16290:2: ( '<' )
+            // InternalChartDSL.g:16290: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"
+    // InternalChartDSL.g:16298: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 {
+            // InternalChartDSL.g:16302:1: ( rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2 )
+            // InternalChartDSL.g:16303:2: rule__XConstructorCall__Group_3__1__Impl rule__XConstructorCall__Group_3__2
+            {
+            pushFollow(FOLLOW_99);
+            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"
+    // InternalChartDSL.g:16310: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 {
+            // InternalChartDSL.g:16314:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) ) )
+            // InternalChartDSL.g:16315:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
+            {
+            // InternalChartDSL.g:16315:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 ) )
+            // InternalChartDSL.g:16316:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_1()); 
+            }
+            // InternalChartDSL.g:16317:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_1 )
+            // InternalChartDSL.g:16317: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"
+    // InternalChartDSL.g:16325: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 {
+            // InternalChartDSL.g:16329:1: ( rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3 )
+            // InternalChartDSL.g:16330:2: rule__XConstructorCall__Group_3__2__Impl rule__XConstructorCall__Group_3__3
+            {
+            pushFollow(FOLLOW_99);
+            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"
+    // InternalChartDSL.g:16337: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 {
+            // InternalChartDSL.g:16341:1: ( ( ( rule__XConstructorCall__Group_3_2__0 )* ) )
+            // InternalChartDSL.g:16342:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
+            {
+            // InternalChartDSL.g:16342:1: ( ( rule__XConstructorCall__Group_3_2__0 )* )
+            // InternalChartDSL.g:16343:2: ( rule__XConstructorCall__Group_3_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup_3_2()); 
+            }
+            // InternalChartDSL.g:16344:2: ( rule__XConstructorCall__Group_3_2__0 )*
+            loop137:
+            do {
+                int alt137=2;
+                int LA137_0 = input.LA(1);
+
+                if ( (LA137_0==98) ) {
+                    alt137=1;
+                }
+
+
+                switch (alt137) {
+            	case 1 :
+            	    // InternalChartDSL.g:16344:3: rule__XConstructorCall__Group_3_2__0
+            	    {
+            	    pushFollow(FOLLOW_60);
+            	    rule__XConstructorCall__Group_3_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop137;
+                }
+            } 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"
+    // InternalChartDSL.g:16352: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 {
+            // InternalChartDSL.g:16356:1: ( rule__XConstructorCall__Group_3__3__Impl )
+            // InternalChartDSL.g:16357: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"
+    // InternalChartDSL.g:16363:1: rule__XConstructorCall__Group_3__3__Impl : ( '>' ) ;
+    public final void rule__XConstructorCall__Group_3__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16367:1: ( ( '>' ) )
+            // InternalChartDSL.g:16368:1: ( '>' )
+            {
+            // InternalChartDSL.g:16368:1: ( '>' )
+            // InternalChartDSL.g:16369: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"
+    // InternalChartDSL.g:16379: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 {
+            // InternalChartDSL.g:16383:1: ( rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1 )
+            // InternalChartDSL.g:16384:2: rule__XConstructorCall__Group_3_2__0__Impl rule__XConstructorCall__Group_3_2__1
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalChartDSL.g:16391:1: rule__XConstructorCall__Group_3_2__0__Impl : ( ',' ) ;
+    public final void rule__XConstructorCall__Group_3_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16395:1: ( ( ',' ) )
+            // InternalChartDSL.g:16396:1: ( ',' )
+            {
+            // InternalChartDSL.g:16396:1: ( ',' )
+            // InternalChartDSL.g:16397:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0()); 
+            }
+            match(input,98,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"
+    // InternalChartDSL.g:16406: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 {
+            // InternalChartDSL.g:16410:1: ( rule__XConstructorCall__Group_3_2__1__Impl )
+            // InternalChartDSL.g:16411: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"
+    // InternalChartDSL.g:16417: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 {
+            // InternalChartDSL.g:16421:1: ( ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) ) )
+            // InternalChartDSL.g:16422:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
+            {
+            // InternalChartDSL.g:16422:1: ( ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 ) )
+            // InternalChartDSL.g:16423:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getTypeArgumentsAssignment_3_2_1()); 
+            }
+            // InternalChartDSL.g:16424:2: ( rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 )
+            // InternalChartDSL.g:16424: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"
+    // InternalChartDSL.g:16433: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 {
+            // InternalChartDSL.g:16437:1: ( rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1 )
+            // InternalChartDSL.g:16438:2: rule__XConstructorCall__Group_4__0__Impl rule__XConstructorCall__Group_4__1
+            {
+            pushFollow(FOLLOW_100);
+            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"
+    // InternalChartDSL.g:16445: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 {
+            // InternalChartDSL.g:16449:1: ( ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) ) )
+            // InternalChartDSL.g:16450:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
+            {
+            // InternalChartDSL.g:16450:1: ( ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 ) )
+            // InternalChartDSL.g:16451:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallAssignment_4_0()); 
+            }
+            // InternalChartDSL.g:16452:2: ( rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 )
+            // InternalChartDSL.g:16452: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"
+    // InternalChartDSL.g:16460: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 {
+            // InternalChartDSL.g:16464:1: ( rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2 )
+            // InternalChartDSL.g:16465:2: rule__XConstructorCall__Group_4__1__Impl rule__XConstructorCall__Group_4__2
+            {
+            pushFollow(FOLLOW_100);
+            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"
+    // InternalChartDSL.g:16472: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 {
+            // InternalChartDSL.g:16476:1: ( ( ( rule__XConstructorCall__Alternatives_4_1 )? ) )
+            // InternalChartDSL.g:16477:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
+            {
+            // InternalChartDSL.g:16477:1: ( ( rule__XConstructorCall__Alternatives_4_1 )? )
+            // InternalChartDSL.g:16478:2: ( rule__XConstructorCall__Alternatives_4_1 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getAlternatives_4_1()); 
+            }
+            // InternalChartDSL.g:16479:2: ( rule__XConstructorCall__Alternatives_4_1 )?
+            int alt138=2;
+            int LA138_0 = input.LA(1);
+
+            if ( ((LA138_0>=RULE_STRING && LA138_0<=RULE_DECIMAL)||LA138_0==27||LA138_0==31||(LA138_0>=34 && LA138_0<=35)||LA138_0==40||(LA138_0>=45 && LA138_0<=50)||LA138_0==72||LA138_0==96||(LA138_0>=100 && LA138_0<=101)||LA138_0==103||LA138_0==105||(LA138_0>=109 && LA138_0<=117)||LA138_0==119||LA138_0==152||LA138_0==154) ) {
+                alt138=1;
+            }
+            switch (alt138) {
+                case 1 :
+                    // InternalChartDSL.g:16479: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"
+    // InternalChartDSL.g:16487: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 {
+            // InternalChartDSL.g:16491:1: ( rule__XConstructorCall__Group_4__2__Impl )
+            // InternalChartDSL.g:16492: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"
+    // InternalChartDSL.g:16498:1: rule__XConstructorCall__Group_4__2__Impl : ( ')' ) ;
+    public final void rule__XConstructorCall__Group_4__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16502:1: ( ( ')' ) )
+            // InternalChartDSL.g:16503:1: ( ')' )
+            {
+            // InternalChartDSL.g:16503:1: ( ')' )
+            // InternalChartDSL.g:16504:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2()); 
+            }
+            match(input,97,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"
+    // InternalChartDSL.g:16514: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 {
+            // InternalChartDSL.g:16518:1: ( rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1 )
+            // InternalChartDSL.g:16519:2: rule__XConstructorCall__Group_4_1_1__0__Impl rule__XConstructorCall__Group_4_1_1__1
+            {
+            pushFollow(FOLLOW_59);
+            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"
+    // InternalChartDSL.g:16526: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 {
+            // InternalChartDSL.g:16530:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) ) )
+            // InternalChartDSL.g:16531:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
+            {
+            // InternalChartDSL.g:16531:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 ) )
+            // InternalChartDSL.g:16532:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_0()); 
+            }
+            // InternalChartDSL.g:16533:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_0 )
+            // InternalChartDSL.g:16533: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"
+    // InternalChartDSL.g:16541: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 {
+            // InternalChartDSL.g:16545:1: ( rule__XConstructorCall__Group_4_1_1__1__Impl )
+            // InternalChartDSL.g:16546: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"
+    // InternalChartDSL.g:16552: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 {
+            // InternalChartDSL.g:16556:1: ( ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* ) )
+            // InternalChartDSL.g:16557:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
+            {
+            // InternalChartDSL.g:16557:1: ( ( rule__XConstructorCall__Group_4_1_1_1__0 )* )
+            // InternalChartDSL.g:16558:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getGroup_4_1_1_1()); 
+            }
+            // InternalChartDSL.g:16559:2: ( rule__XConstructorCall__Group_4_1_1_1__0 )*
+            loop139:
+            do {
+                int alt139=2;
+                int LA139_0 = input.LA(1);
+
+                if ( (LA139_0==98) ) {
+                    alt139=1;
+                }
+
+
+                switch (alt139) {
+            	case 1 :
+            	    // InternalChartDSL.g:16559:3: rule__XConstructorCall__Group_4_1_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_60);
+            	    rule__XConstructorCall__Group_4_1_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop139;
+                }
+            } 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"
+    // InternalChartDSL.g:16568: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 {
+            // InternalChartDSL.g:16572:1: ( rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1 )
+            // InternalChartDSL.g:16573:2: rule__XConstructorCall__Group_4_1_1_1__0__Impl rule__XConstructorCall__Group_4_1_1_1__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:16580: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 {
+            // InternalChartDSL.g:16584:1: ( ( ',' ) )
+            // InternalChartDSL.g:16585:1: ( ',' )
+            {
+            // InternalChartDSL.g:16585:1: ( ',' )
+            // InternalChartDSL.g:16586:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0()); 
+            }
+            match(input,98,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"
+    // InternalChartDSL.g:16595: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 {
+            // InternalChartDSL.g:16599:1: ( rule__XConstructorCall__Group_4_1_1_1__1__Impl )
+            // InternalChartDSL.g:16600: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"
+    // InternalChartDSL.g:16606: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 {
+            // InternalChartDSL.g:16610:1: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) ) )
+            // InternalChartDSL.g:16611:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
+            {
+            // InternalChartDSL.g:16611:1: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 ) )
+            // InternalChartDSL.g:16612:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_1_1_1()); 
+            }
+            // InternalChartDSL.g:16613:2: ( rule__XConstructorCall__ArgumentsAssignment_4_1_1_1_1 )
+            // InternalChartDSL.g:16613: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"
+    // InternalChartDSL.g:16622: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 {
+            // InternalChartDSL.g:16626:1: ( rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1 )
+            // InternalChartDSL.g:16627:2: rule__XBooleanLiteral__Group__0__Impl rule__XBooleanLiteral__Group__1
+            {
+            pushFollow(FOLLOW_125);
+            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"
+    // InternalChartDSL.g:16634:1: rule__XBooleanLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XBooleanLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16638:1: ( ( () ) )
+            // InternalChartDSL.g:16639:1: ( () )
+            {
+            // InternalChartDSL.g:16639:1: ( () )
+            // InternalChartDSL.g:16640:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0()); 
+            }
+            // InternalChartDSL.g:16641:2: ()
+            // InternalChartDSL.g:16641: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"
+    // InternalChartDSL.g:16649:1: rule__XBooleanLiteral__Group__1 : rule__XBooleanLiteral__Group__1__Impl ;
+    public final void rule__XBooleanLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16653:1: ( rule__XBooleanLiteral__Group__1__Impl )
+            // InternalChartDSL.g:16654: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"
+    // InternalChartDSL.g:16660:1: rule__XBooleanLiteral__Group__1__Impl : ( ( rule__XBooleanLiteral__Alternatives_1 ) ) ;
+    public final void rule__XBooleanLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16664:1: ( ( ( rule__XBooleanLiteral__Alternatives_1 ) ) )
+            // InternalChartDSL.g:16665:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
+            {
+            // InternalChartDSL.g:16665:1: ( ( rule__XBooleanLiteral__Alternatives_1 ) )
+            // InternalChartDSL.g:16666:2: ( rule__XBooleanLiteral__Alternatives_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getAlternatives_1()); 
+            }
+            // InternalChartDSL.g:16667:2: ( rule__XBooleanLiteral__Alternatives_1 )
+            // InternalChartDSL.g:16667: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"
+    // InternalChartDSL.g:16676: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 {
+            // InternalChartDSL.g:16680:1: ( rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1 )
+            // InternalChartDSL.g:16681:2: rule__XNullLiteral__Group__0__Impl rule__XNullLiteral__Group__1
+            {
+            pushFollow(FOLLOW_126);
+            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"
+    // InternalChartDSL.g:16688:1: rule__XNullLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XNullLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16692:1: ( ( () ) )
+            // InternalChartDSL.g:16693:1: ( () )
+            {
+            // InternalChartDSL.g:16693:1: ( () )
+            // InternalChartDSL.g:16694:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0()); 
+            }
+            // InternalChartDSL.g:16695:2: ()
+            // InternalChartDSL.g:16695: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"
+    // InternalChartDSL.g:16703:1: rule__XNullLiteral__Group__1 : rule__XNullLiteral__Group__1__Impl ;
+    public final void rule__XNullLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16707:1: ( rule__XNullLiteral__Group__1__Impl )
+            // InternalChartDSL.g:16708: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"
+    // InternalChartDSL.g:16714:1: rule__XNullLiteral__Group__1__Impl : ( 'null' ) ;
+    public final void rule__XNullLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16718:1: ( ( 'null' ) )
+            // InternalChartDSL.g:16719:1: ( 'null' )
+            {
+            // InternalChartDSL.g:16719:1: ( 'null' )
+            // InternalChartDSL.g:16720:2: 'null'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNullLiteralAccess().getNullKeyword_1()); 
+            }
+            match(input,113,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"
+    // InternalChartDSL.g:16730: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 {
+            // InternalChartDSL.g:16734:1: ( rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1 )
+            // InternalChartDSL.g:16735:2: rule__XNumberLiteral__Group__0__Impl rule__XNumberLiteral__Group__1
+            {
+            pushFollow(FOLLOW_29);
+            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"
+    // InternalChartDSL.g:16742:1: rule__XNumberLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XNumberLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16746:1: ( ( () ) )
+            // InternalChartDSL.g:16747:1: ( () )
+            {
+            // InternalChartDSL.g:16747:1: ( () )
+            // InternalChartDSL.g:16748:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0()); 
+            }
+            // InternalChartDSL.g:16749:2: ()
+            // InternalChartDSL.g:16749: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"
+    // InternalChartDSL.g:16757:1: rule__XNumberLiteral__Group__1 : rule__XNumberLiteral__Group__1__Impl ;
+    public final void rule__XNumberLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16761:1: ( rule__XNumberLiteral__Group__1__Impl )
+            // InternalChartDSL.g:16762: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"
+    // InternalChartDSL.g:16768:1: rule__XNumberLiteral__Group__1__Impl : ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) ;
+    public final void rule__XNumberLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16772:1: ( ( ( rule__XNumberLiteral__ValueAssignment_1 ) ) )
+            // InternalChartDSL.g:16773:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
+            {
+            // InternalChartDSL.g:16773:1: ( ( rule__XNumberLiteral__ValueAssignment_1 ) )
+            // InternalChartDSL.g:16774:2: ( rule__XNumberLiteral__ValueAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXNumberLiteralAccess().getValueAssignment_1()); 
+            }
+            // InternalChartDSL.g:16775:2: ( rule__XNumberLiteral__ValueAssignment_1 )
+            // InternalChartDSL.g:16775: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"
+    // InternalChartDSL.g:16784: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 {
+            // InternalChartDSL.g:16788:1: ( rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1 )
+            // InternalChartDSL.g:16789:2: rule__XStringLiteral__Group__0__Impl rule__XStringLiteral__Group__1
+            {
+            pushFollow(FOLLOW_16);
+            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"
+    // InternalChartDSL.g:16796:1: rule__XStringLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XStringLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16800:1: ( ( () ) )
+            // InternalChartDSL.g:16801:1: ( () )
+            {
+            // InternalChartDSL.g:16801:1: ( () )
+            // InternalChartDSL.g:16802:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0()); 
+            }
+            // InternalChartDSL.g:16803:2: ()
+            // InternalChartDSL.g:16803: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"
+    // InternalChartDSL.g:16811:1: rule__XStringLiteral__Group__1 : rule__XStringLiteral__Group__1__Impl ;
+    public final void rule__XStringLiteral__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16815:1: ( rule__XStringLiteral__Group__1__Impl )
+            // InternalChartDSL.g:16816: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"
+    // InternalChartDSL.g:16822:1: rule__XStringLiteral__Group__1__Impl : ( ( rule__XStringLiteral__ValueAssignment_1 ) ) ;
+    public final void rule__XStringLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16826:1: ( ( ( rule__XStringLiteral__ValueAssignment_1 ) ) )
+            // InternalChartDSL.g:16827:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
+            {
+            // InternalChartDSL.g:16827:1: ( ( rule__XStringLiteral__ValueAssignment_1 ) )
+            // InternalChartDSL.g:16828:2: ( rule__XStringLiteral__ValueAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXStringLiteralAccess().getValueAssignment_1()); 
+            }
+            // InternalChartDSL.g:16829:2: ( rule__XStringLiteral__ValueAssignment_1 )
+            // InternalChartDSL.g:16829: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"
+    // InternalChartDSL.g:16838: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 {
+            // InternalChartDSL.g:16842:1: ( rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1 )
+            // InternalChartDSL.g:16843:2: rule__XTypeLiteral__Group__0__Impl rule__XTypeLiteral__Group__1
+            {
+            pushFollow(FOLLOW_127);
+            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"
+    // InternalChartDSL.g:16850:1: rule__XTypeLiteral__Group__0__Impl : ( () ) ;
+    public final void rule__XTypeLiteral__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16854:1: ( ( () ) )
+            // InternalChartDSL.g:16855:1: ( () )
+            {
+            // InternalChartDSL.g:16855:1: ( () )
+            // InternalChartDSL.g:16856:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0()); 
+            }
+            // InternalChartDSL.g:16857:2: ()
+            // InternalChartDSL.g:16857: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"
+    // InternalChartDSL.g:16865: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 {
+            // InternalChartDSL.g:16869:1: ( rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2 )
+            // InternalChartDSL.g:16870:2: rule__XTypeLiteral__Group__1__Impl rule__XTypeLiteral__Group__2
+            {
+            pushFollow(FOLLOW_57);
+            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"
+    // InternalChartDSL.g:16877:1: rule__XTypeLiteral__Group__1__Impl : ( 'typeof' ) ;
+    public final void rule__XTypeLiteral__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16881:1: ( ( 'typeof' ) )
+            // InternalChartDSL.g:16882:1: ( 'typeof' )
+            {
+            // InternalChartDSL.g:16882:1: ( 'typeof' )
+            // InternalChartDSL.g:16883:2: 'typeof'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1()); 
+            }
+            match(input,114,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"
+    // InternalChartDSL.g:16892: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 {
+            // InternalChartDSL.g:16896:1: ( rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3 )
+            // InternalChartDSL.g:16897:2: rule__XTypeLiteral__Group__2__Impl rule__XTypeLiteral__Group__3
+            {
+            pushFollow(FOLLOW_7);
+            rule__XTypeLiteral__Group__2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__XTypeLiteral__Group__3();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__XTypeLiteral__Group__2"
+
+
+    // $ANTLR start "rule__XTypeLiteral__Group__2__Impl"
+    // InternalChartDSL.g:16904:1: rule__XTypeLiteral__Group__2__Impl : ( '(' ) ;
+    public final void rule__XTypeLiteral__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16908:1: ( ( '(' ) )
+            // InternalChartDSL.g:16909:1: ( '(' )
+            {
+            // InternalChartDSL.g:16909:1: ( '(' )
+            // InternalChartDSL.g:16910:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2()); 
+            }
+            match(input,96,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"
+    // InternalChartDSL.g:16919: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 {
+            // InternalChartDSL.g:16923:1: ( rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4 )
+            // InternalChartDSL.g:16924:2: rule__XTypeLiteral__Group__3__Impl rule__XTypeLiteral__Group__4
+            {
+            pushFollow(FOLLOW_128);
+            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"
+    // InternalChartDSL.g:16931:1: rule__XTypeLiteral__Group__3__Impl : ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) ;
+    public final void rule__XTypeLiteral__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16935:1: ( ( ( rule__XTypeLiteral__TypeAssignment_3 ) ) )
+            // InternalChartDSL.g:16936:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
+            {
+            // InternalChartDSL.g:16936:1: ( ( rule__XTypeLiteral__TypeAssignment_3 ) )
+            // InternalChartDSL.g:16937:2: ( rule__XTypeLiteral__TypeAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getTypeAssignment_3()); 
+            }
+            // InternalChartDSL.g:16938:2: ( rule__XTypeLiteral__TypeAssignment_3 )
+            // InternalChartDSL.g:16938: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"
+    // InternalChartDSL.g:16946: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 {
+            // InternalChartDSL.g:16950:1: ( rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5 )
+            // InternalChartDSL.g:16951:2: rule__XTypeLiteral__Group__4__Impl rule__XTypeLiteral__Group__5
+            {
+            pushFollow(FOLLOW_128);
+            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"
+    // InternalChartDSL.g:16958:1: rule__XTypeLiteral__Group__4__Impl : ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) ;
+    public final void rule__XTypeLiteral__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16962:1: ( ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* ) )
+            // InternalChartDSL.g:16963:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
+            {
+            // InternalChartDSL.g:16963:1: ( ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )* )
+            // InternalChartDSL.g:16964:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsAssignment_4()); 
+            }
+            // InternalChartDSL.g:16965:2: ( rule__XTypeLiteral__ArrayDimensionsAssignment_4 )*
+            loop140:
+            do {
+                int alt140=2;
+                int LA140_0 = input.LA(1);
+
+                if ( (LA140_0==101) ) {
+                    alt140=1;
+                }
+
+
+                switch (alt140) {
+            	case 1 :
+            	    // InternalChartDSL.g:16965:3: rule__XTypeLiteral__ArrayDimensionsAssignment_4
+            	    {
+            	    pushFollow(FOLLOW_129);
+            	    rule__XTypeLiteral__ArrayDimensionsAssignment_4();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop140;
+                }
+            } 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"
+    // InternalChartDSL.g:16973:1: rule__XTypeLiteral__Group__5 : rule__XTypeLiteral__Group__5__Impl ;
+    public final void rule__XTypeLiteral__Group__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16977:1: ( rule__XTypeLiteral__Group__5__Impl )
+            // InternalChartDSL.g:16978: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"
+    // InternalChartDSL.g:16984:1: rule__XTypeLiteral__Group__5__Impl : ( ')' ) ;
+    public final void rule__XTypeLiteral__Group__5__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:16988:1: ( ( ')' ) )
+            // InternalChartDSL.g:16989:1: ( ')' )
+            {
+            // InternalChartDSL.g:16989:1: ( ')' )
+            // InternalChartDSL.g:16990:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getRightParenthesisKeyword_5()); 
+            }
+            match(input,97,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"
+    // InternalChartDSL.g:17000: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 {
+            // InternalChartDSL.g:17004:1: ( rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1 )
+            // InternalChartDSL.g:17005:2: rule__XThrowExpression__Group__0__Impl rule__XThrowExpression__Group__1
+            {
+            pushFollow(FOLLOW_130);
+            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"
+    // InternalChartDSL.g:17012:1: rule__XThrowExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XThrowExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17016:1: ( ( () ) )
+            // InternalChartDSL.g:17017:1: ( () )
+            {
+            // InternalChartDSL.g:17017:1: ( () )
+            // InternalChartDSL.g:17018:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0()); 
+            }
+            // InternalChartDSL.g:17019:2: ()
+            // InternalChartDSL.g:17019: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"
+    // InternalChartDSL.g:17027: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 {
+            // InternalChartDSL.g:17031:1: ( rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2 )
+            // InternalChartDSL.g:17032:2: rule__XThrowExpression__Group__1__Impl rule__XThrowExpression__Group__2
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:17039:1: rule__XThrowExpression__Group__1__Impl : ( 'throw' ) ;
+    public final void rule__XThrowExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17043:1: ( ( 'throw' ) )
+            // InternalChartDSL.g:17044:1: ( 'throw' )
+            {
+            // InternalChartDSL.g:17044:1: ( 'throw' )
+            // InternalChartDSL.g:17045:2: 'throw'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1()); 
+            }
+            match(input,115,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"
+    // InternalChartDSL.g:17054:1: rule__XThrowExpression__Group__2 : rule__XThrowExpression__Group__2__Impl ;
+    public final void rule__XThrowExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17058:1: ( rule__XThrowExpression__Group__2__Impl )
+            // InternalChartDSL.g:17059: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"
+    // InternalChartDSL.g:17065:1: rule__XThrowExpression__Group__2__Impl : ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) ;
+    public final void rule__XThrowExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17069:1: ( ( ( rule__XThrowExpression__ExpressionAssignment_2 ) ) )
+            // InternalChartDSL.g:17070:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
+            {
+            // InternalChartDSL.g:17070:1: ( ( rule__XThrowExpression__ExpressionAssignment_2 ) )
+            // InternalChartDSL.g:17071:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXThrowExpressionAccess().getExpressionAssignment_2()); 
+            }
+            // InternalChartDSL.g:17072:2: ( rule__XThrowExpression__ExpressionAssignment_2 )
+            // InternalChartDSL.g:17072: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"
+    // InternalChartDSL.g:17081: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 {
+            // InternalChartDSL.g:17085:1: ( rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1 )
+            // InternalChartDSL.g:17086:2: rule__XReturnExpression__Group__0__Impl rule__XReturnExpression__Group__1
+            {
+            pushFollow(FOLLOW_131);
+            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"
+    // InternalChartDSL.g:17093:1: rule__XReturnExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XReturnExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17097:1: ( ( () ) )
+            // InternalChartDSL.g:17098:1: ( () )
+            {
+            // InternalChartDSL.g:17098:1: ( () )
+            // InternalChartDSL.g:17099:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0()); 
+            }
+            // InternalChartDSL.g:17100:2: ()
+            // InternalChartDSL.g:17100: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"
+    // InternalChartDSL.g:17108: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 {
+            // InternalChartDSL.g:17112:1: ( rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2 )
+            // InternalChartDSL.g:17113:2: rule__XReturnExpression__Group__1__Impl rule__XReturnExpression__Group__2
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:17120:1: rule__XReturnExpression__Group__1__Impl : ( 'return' ) ;
+    public final void rule__XReturnExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17124:1: ( ( 'return' ) )
+            // InternalChartDSL.g:17125:1: ( 'return' )
+            {
+            // InternalChartDSL.g:17125:1: ( 'return' )
+            // InternalChartDSL.g:17126:2: 'return'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1()); 
+            }
+            match(input,116,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"
+    // InternalChartDSL.g:17135:1: rule__XReturnExpression__Group__2 : rule__XReturnExpression__Group__2__Impl ;
+    public final void rule__XReturnExpression__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17139:1: ( rule__XReturnExpression__Group__2__Impl )
+            // InternalChartDSL.g:17140: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"
+    // InternalChartDSL.g:17146:1: rule__XReturnExpression__Group__2__Impl : ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) ;
+    public final void rule__XReturnExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17150:1: ( ( ( rule__XReturnExpression__ExpressionAssignment_2 )? ) )
+            // InternalChartDSL.g:17151:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
+            {
+            // InternalChartDSL.g:17151:1: ( ( rule__XReturnExpression__ExpressionAssignment_2 )? )
+            // InternalChartDSL.g:17152:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXReturnExpressionAccess().getExpressionAssignment_2()); 
+            }
+            // InternalChartDSL.g:17153:2: ( rule__XReturnExpression__ExpressionAssignment_2 )?
+            int alt141=2;
+            alt141 = dfa141.predict(input);
+            switch (alt141) {
+                case 1 :
+                    // InternalChartDSL.g:17153: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"
+    // InternalChartDSL.g:17162: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 {
+            // InternalChartDSL.g:17166:1: ( rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1 )
+            // InternalChartDSL.g:17167:2: rule__XTryCatchFinallyExpression__Group__0__Impl rule__XTryCatchFinallyExpression__Group__1
+            {
+            pushFollow(FOLLOW_132);
+            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"
+    // InternalChartDSL.g:17174:1: rule__XTryCatchFinallyExpression__Group__0__Impl : ( () ) ;
+    public final void rule__XTryCatchFinallyExpression__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17178:1: ( ( () ) )
+            // InternalChartDSL.g:17179:1: ( () )
+            {
+            // InternalChartDSL.g:17179:1: ( () )
+            // InternalChartDSL.g:17180:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0()); 
+            }
+            // InternalChartDSL.g:17181:2: ()
+            // InternalChartDSL.g:17181: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"
+    // InternalChartDSL.g:17189: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 {
+            // InternalChartDSL.g:17193:1: ( rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2 )
+            // InternalChartDSL.g:17194:2: rule__XTryCatchFinallyExpression__Group__1__Impl rule__XTryCatchFinallyExpression__Group__2
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:17201:1: rule__XTryCatchFinallyExpression__Group__1__Impl : ( 'try' ) ;
+    public final void rule__XTryCatchFinallyExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17205:1: ( ( 'try' ) )
+            // InternalChartDSL.g:17206:1: ( 'try' )
+            {
+            // InternalChartDSL.g:17206:1: ( 'try' )
+            // InternalChartDSL.g:17207:2: 'try'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1()); 
+            }
+            match(input,117,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"
+    // InternalChartDSL.g:17216: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 {
+            // InternalChartDSL.g:17220:1: ( rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3 )
+            // InternalChartDSL.g:17221:2: rule__XTryCatchFinallyExpression__Group__2__Impl rule__XTryCatchFinallyExpression__Group__3
+            {
+            pushFollow(FOLLOW_133);
+            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"
+    // InternalChartDSL.g:17228:1: rule__XTryCatchFinallyExpression__Group__2__Impl : ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) ;
+    public final void rule__XTryCatchFinallyExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17232:1: ( ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) ) )
+            // InternalChartDSL.g:17233:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
+            {
+            // InternalChartDSL.g:17233:1: ( ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 ) )
+            // InternalChartDSL.g:17234:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionAssignment_2()); 
+            }
+            // InternalChartDSL.g:17235:2: ( rule__XTryCatchFinallyExpression__ExpressionAssignment_2 )
+            // InternalChartDSL.g:17235: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"
+    // InternalChartDSL.g:17243:1: rule__XTryCatchFinallyExpression__Group__3 : rule__XTryCatchFinallyExpression__Group__3__Impl ;
+    public final void rule__XTryCatchFinallyExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17247:1: ( rule__XTryCatchFinallyExpression__Group__3__Impl )
+            // InternalChartDSL.g:17248: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"
+    // InternalChartDSL.g:17254:1: rule__XTryCatchFinallyExpression__Group__3__Impl : ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) ;
+    public final void rule__XTryCatchFinallyExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17258:1: ( ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) ) )
+            // InternalChartDSL.g:17259:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
+            {
+            // InternalChartDSL.g:17259:1: ( ( rule__XTryCatchFinallyExpression__Alternatives_3 ) )
+            // InternalChartDSL.g:17260:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getAlternatives_3()); 
+            }
+            // InternalChartDSL.g:17261:2: ( rule__XTryCatchFinallyExpression__Alternatives_3 )
+            // InternalChartDSL.g:17261: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"
+    // InternalChartDSL.g:17270: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 {
+            // InternalChartDSL.g:17274:1: ( rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1 )
+            // InternalChartDSL.g:17275:2: rule__XTryCatchFinallyExpression__Group_3_0__0__Impl rule__XTryCatchFinallyExpression__Group_3_0__1
+            {
+            pushFollow(FOLLOW_134);
+            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"
+    // InternalChartDSL.g:17282: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 {
+            // InternalChartDSL.g:17286:1: ( ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) ) )
+            // InternalChartDSL.g:17287:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
+            {
+            // InternalChartDSL.g:17287:1: ( ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* ) )
+            // InternalChartDSL.g:17288:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) ) ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
+            {
+            // InternalChartDSL.g:17288:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 ) )
+            // InternalChartDSL.g:17289:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
+            }
+            // InternalChartDSL.g:17290:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+            // InternalChartDSL.g:17290:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+            {
+            pushFollow(FOLLOW_135);
+            rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
+            }
+
+            }
+
+            // InternalChartDSL.g:17293:2: ( ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )* )
+            // InternalChartDSL.g:17294:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesAssignment_3_0_0()); 
+            }
+            // InternalChartDSL.g:17295:3: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )*
+            loop142:
+            do {
+                int alt142=2;
+                int LA142_0 = input.LA(1);
+
+                if ( (LA142_0==120) ) {
+                    int LA142_2 = input.LA(2);
+
+                    if ( (synpred204_InternalChartDSL()) ) {
+                        alt142=1;
+                    }
+
+
+                }
+
+
+                switch (alt142) {
+            	case 1 :
+            	    // InternalChartDSL.g:17295:4: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0
+            	    {
+            	    pushFollow(FOLLOW_135);
+            	    rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop142;
+                }
+            } 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"
+    // InternalChartDSL.g:17304: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 {
+            // InternalChartDSL.g:17308:1: ( rule__XTryCatchFinallyExpression__Group_3_0__1__Impl )
+            // InternalChartDSL.g:17309: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"
+    // InternalChartDSL.g:17315: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 {
+            // InternalChartDSL.g:17319:1: ( ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? ) )
+            // InternalChartDSL.g:17320:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
+            {
+            // InternalChartDSL.g:17320:1: ( ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )? )
+            // InternalChartDSL.g:17321:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getGroup_3_0_1()); 
+            }
+            // InternalChartDSL.g:17322:2: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )?
+            int alt143=2;
+            int LA143_0 = input.LA(1);
+
+            if ( (LA143_0==118) ) {
+                int LA143_1 = input.LA(2);
+
+                if ( (synpred205_InternalChartDSL()) ) {
+                    alt143=1;
+                }
+            }
+            switch (alt143) {
+                case 1 :
+                    // InternalChartDSL.g:17322: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"
+    // InternalChartDSL.g:17331: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 {
+            // InternalChartDSL.g:17335:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1 )
+            // InternalChartDSL.g:17336:2: rule__XTryCatchFinallyExpression__Group_3_0_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_0_1__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:17343: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 {
+            // InternalChartDSL.g:17347:1: ( ( ( 'finally' ) ) )
+            // InternalChartDSL.g:17348:1: ( ( 'finally' ) )
+            {
+            // InternalChartDSL.g:17348:1: ( ( 'finally' ) )
+            // InternalChartDSL.g:17349:2: ( 'finally' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0()); 
+            }
+            // InternalChartDSL.g:17350:2: ( 'finally' )
+            // InternalChartDSL.g:17350:3: 'finally'
+            {
+            match(input,118,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"
+    // InternalChartDSL.g:17358: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 {
+            // InternalChartDSL.g:17362:1: ( rule__XTryCatchFinallyExpression__Group_3_0_1__1__Impl )
+            // InternalChartDSL.g:17363: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"
+    // InternalChartDSL.g:17369: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 {
+            // InternalChartDSL.g:17373:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) ) )
+            // InternalChartDSL.g:17374:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
+            {
+            // InternalChartDSL.g:17374:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 ) )
+            // InternalChartDSL.g:17375:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_0_1_1()); 
+            }
+            // InternalChartDSL.g:17376:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_0_1_1 )
+            // InternalChartDSL.g:17376: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"
+    // InternalChartDSL.g:17385: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 {
+            // InternalChartDSL.g:17389:1: ( rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1 )
+            // InternalChartDSL.g:17390:2: rule__XTryCatchFinallyExpression__Group_3_1__0__Impl rule__XTryCatchFinallyExpression__Group_3_1__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:17397: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 {
+            // InternalChartDSL.g:17401:1: ( ( 'finally' ) )
+            // InternalChartDSL.g:17402:1: ( 'finally' )
+            {
+            // InternalChartDSL.g:17402:1: ( 'finally' )
+            // InternalChartDSL.g:17403:2: 'finally'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0()); 
+            }
+            match(input,118,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"
+    // InternalChartDSL.g:17412: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 {
+            // InternalChartDSL.g:17416:1: ( rule__XTryCatchFinallyExpression__Group_3_1__1__Impl )
+            // InternalChartDSL.g:17417: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"
+    // InternalChartDSL.g:17423: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 {
+            // InternalChartDSL.g:17427:1: ( ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) ) )
+            // InternalChartDSL.g:17428:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
+            {
+            // InternalChartDSL.g:17428:1: ( ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 ) )
+            // InternalChartDSL.g:17429:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyExpressionAssignment_3_1_1()); 
+            }
+            // InternalChartDSL.g:17430:2: ( rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 )
+            // InternalChartDSL.g:17430: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"
+    // InternalChartDSL.g:17439: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 {
+            // InternalChartDSL.g:17443:1: ( rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1 )
+            // InternalChartDSL.g:17444:2: rule__XSynchronizedExpression__Group__0__Impl rule__XSynchronizedExpression__Group__1
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:17451: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 {
+            // InternalChartDSL.g:17455:1: ( ( ( rule__XSynchronizedExpression__Group_0__0 ) ) )
+            // InternalChartDSL.g:17456:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
+            {
+            // InternalChartDSL.g:17456:1: ( ( rule__XSynchronizedExpression__Group_0__0 ) )
+            // InternalChartDSL.g:17457:2: ( rule__XSynchronizedExpression__Group_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0()); 
+            }
+            // InternalChartDSL.g:17458:2: ( rule__XSynchronizedExpression__Group_0__0 )
+            // InternalChartDSL.g:17458: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"
+    // InternalChartDSL.g:17466: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 {
+            // InternalChartDSL.g:17470:1: ( rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2 )
+            // InternalChartDSL.g:17471:2: rule__XSynchronizedExpression__Group__1__Impl rule__XSynchronizedExpression__Group__2
+            {
+            pushFollow(FOLLOW_106);
+            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"
+    // InternalChartDSL.g:17478:1: rule__XSynchronizedExpression__Group__1__Impl : ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) ;
+    public final void rule__XSynchronizedExpression__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17482:1: ( ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) ) )
+            // InternalChartDSL.g:17483:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
+            {
+            // InternalChartDSL.g:17483:1: ( ( rule__XSynchronizedExpression__ParamAssignment_1 ) )
+            // InternalChartDSL.g:17484:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getParamAssignment_1()); 
+            }
+            // InternalChartDSL.g:17485:2: ( rule__XSynchronizedExpression__ParamAssignment_1 )
+            // InternalChartDSL.g:17485: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"
+    // InternalChartDSL.g:17493: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 {
+            // InternalChartDSL.g:17497:1: ( rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3 )
+            // InternalChartDSL.g:17498:2: rule__XSynchronizedExpression__Group__2__Impl rule__XSynchronizedExpression__Group__3
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:17505:1: rule__XSynchronizedExpression__Group__2__Impl : ( ')' ) ;
+    public final void rule__XSynchronizedExpression__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17509:1: ( ( ')' ) )
+            // InternalChartDSL.g:17510:1: ( ')' )
+            {
+            // InternalChartDSL.g:17510:1: ( ')' )
+            // InternalChartDSL.g:17511:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2()); 
+            }
+            match(input,97,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"
+    // InternalChartDSL.g:17520:1: rule__XSynchronizedExpression__Group__3 : rule__XSynchronizedExpression__Group__3__Impl ;
+    public final void rule__XSynchronizedExpression__Group__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17524:1: ( rule__XSynchronizedExpression__Group__3__Impl )
+            // InternalChartDSL.g:17525: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"
+    // InternalChartDSL.g:17531:1: rule__XSynchronizedExpression__Group__3__Impl : ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) ;
+    public final void rule__XSynchronizedExpression__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17535:1: ( ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) ) )
+            // InternalChartDSL.g:17536:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
+            {
+            // InternalChartDSL.g:17536:1: ( ( rule__XSynchronizedExpression__ExpressionAssignment_3 ) )
+            // InternalChartDSL.g:17537:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getExpressionAssignment_3()); 
+            }
+            // InternalChartDSL.g:17538:2: ( rule__XSynchronizedExpression__ExpressionAssignment_3 )
+            // InternalChartDSL.g:17538: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"
+    // InternalChartDSL.g:17547: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 {
+            // InternalChartDSL.g:17551:1: ( rule__XSynchronizedExpression__Group_0__0__Impl )
+            // InternalChartDSL.g:17552: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"
+    // InternalChartDSL.g:17558: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 {
+            // InternalChartDSL.g:17562:1: ( ( ( rule__XSynchronizedExpression__Group_0_0__0 ) ) )
+            // InternalChartDSL.g:17563:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
+            {
+            // InternalChartDSL.g:17563:1: ( ( rule__XSynchronizedExpression__Group_0_0__0 ) )
+            // InternalChartDSL.g:17564:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getGroup_0_0()); 
+            }
+            // InternalChartDSL.g:17565:2: ( rule__XSynchronizedExpression__Group_0_0__0 )
+            // InternalChartDSL.g:17565: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"
+    // InternalChartDSL.g:17574: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 {
+            // InternalChartDSL.g:17578:1: ( rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1 )
+            // InternalChartDSL.g:17579:2: rule__XSynchronizedExpression__Group_0_0__0__Impl rule__XSynchronizedExpression__Group_0_0__1
+            {
+            pushFollow(FOLLOW_136);
+            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"
+    // InternalChartDSL.g:17586:1: rule__XSynchronizedExpression__Group_0_0__0__Impl : ( () ) ;
+    public final void rule__XSynchronizedExpression__Group_0_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17590:1: ( ( () ) )
+            // InternalChartDSL.g:17591:1: ( () )
+            {
+            // InternalChartDSL.g:17591:1: ( () )
+            // InternalChartDSL.g:17592:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0()); 
+            }
+            // InternalChartDSL.g:17593:2: ()
+            // InternalChartDSL.g:17593: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"
+    // InternalChartDSL.g:17601: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 {
+            // InternalChartDSL.g:17605:1: ( rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2 )
+            // InternalChartDSL.g:17606:2: rule__XSynchronizedExpression__Group_0_0__1__Impl rule__XSynchronizedExpression__Group_0_0__2
+            {
+            pushFollow(FOLLOW_57);
+            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"
+    // InternalChartDSL.g:17613: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 {
+            // InternalChartDSL.g:17617:1: ( ( 'synchronized' ) )
+            // InternalChartDSL.g:17618:1: ( 'synchronized' )
+            {
+            // InternalChartDSL.g:17618:1: ( 'synchronized' )
+            // InternalChartDSL.g:17619:2: 'synchronized'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1()); 
+            }
+            match(input,119,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"
+    // InternalChartDSL.g:17628: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 {
+            // InternalChartDSL.g:17632:1: ( rule__XSynchronizedExpression__Group_0_0__2__Impl )
+            // InternalChartDSL.g:17633: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"
+    // InternalChartDSL.g:17639:1: rule__XSynchronizedExpression__Group_0_0__2__Impl : ( '(' ) ;
+    public final void rule__XSynchronizedExpression__Group_0_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17643:1: ( ( '(' ) )
+            // InternalChartDSL.g:17644:1: ( '(' )
+            {
+            // InternalChartDSL.g:17644:1: ( '(' )
+            // InternalChartDSL.g:17645:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2()); 
+            }
+            match(input,96,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"
+    // InternalChartDSL.g:17655: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 {
+            // InternalChartDSL.g:17659:1: ( rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1 )
+            // InternalChartDSL.g:17660:2: rule__XCatchClause__Group__0__Impl rule__XCatchClause__Group__1
+            {
+            pushFollow(FOLLOW_57);
+            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"
+    // InternalChartDSL.g:17667:1: rule__XCatchClause__Group__0__Impl : ( ( 'catch' ) ) ;
+    public final void rule__XCatchClause__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17671:1: ( ( ( 'catch' ) ) )
+            // InternalChartDSL.g:17672:1: ( ( 'catch' ) )
+            {
+            // InternalChartDSL.g:17672:1: ( ( 'catch' ) )
+            // InternalChartDSL.g:17673:2: ( 'catch' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getCatchKeyword_0()); 
+            }
+            // InternalChartDSL.g:17674:2: ( 'catch' )
+            // InternalChartDSL.g:17674:3: 'catch'
+            {
+            match(input,120,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"
+    // InternalChartDSL.g:17682: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 {
+            // InternalChartDSL.g:17686:1: ( rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2 )
+            // InternalChartDSL.g:17687:2: rule__XCatchClause__Group__1__Impl rule__XCatchClause__Group__2
+            {
+            pushFollow(FOLLOW_78);
+            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"
+    // InternalChartDSL.g:17694:1: rule__XCatchClause__Group__1__Impl : ( '(' ) ;
+    public final void rule__XCatchClause__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17698:1: ( ( '(' ) )
+            // InternalChartDSL.g:17699:1: ( '(' )
+            {
+            // InternalChartDSL.g:17699:1: ( '(' )
+            // InternalChartDSL.g:17700:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1()); 
+            }
+            match(input,96,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"
+    // InternalChartDSL.g:17709: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 {
+            // InternalChartDSL.g:17713:1: ( rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3 )
+            // InternalChartDSL.g:17714:2: rule__XCatchClause__Group__2__Impl rule__XCatchClause__Group__3
+            {
+            pushFollow(FOLLOW_106);
+            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"
+    // InternalChartDSL.g:17721:1: rule__XCatchClause__Group__2__Impl : ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) ;
+    public final void rule__XCatchClause__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17725:1: ( ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) ) )
+            // InternalChartDSL.g:17726:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
+            {
+            // InternalChartDSL.g:17726:1: ( ( rule__XCatchClause__DeclaredParamAssignment_2 ) )
+            // InternalChartDSL.g:17727:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getDeclaredParamAssignment_2()); 
+            }
+            // InternalChartDSL.g:17728:2: ( rule__XCatchClause__DeclaredParamAssignment_2 )
+            // InternalChartDSL.g:17728: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"
+    // InternalChartDSL.g:17736: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 {
+            // InternalChartDSL.g:17740:1: ( rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4 )
+            // InternalChartDSL.g:17741:2: rule__XCatchClause__Group__3__Impl rule__XCatchClause__Group__4
+            {
+            pushFollow(FOLLOW_61);
+            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"
+    // InternalChartDSL.g:17748:1: rule__XCatchClause__Group__3__Impl : ( ')' ) ;
+    public final void rule__XCatchClause__Group__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17752:1: ( ( ')' ) )
+            // InternalChartDSL.g:17753:1: ( ')' )
+            {
+            // InternalChartDSL.g:17753:1: ( ')' )
+            // InternalChartDSL.g:17754:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3()); 
+            }
+            match(input,97,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"
+    // InternalChartDSL.g:17763:1: rule__XCatchClause__Group__4 : rule__XCatchClause__Group__4__Impl ;
+    public final void rule__XCatchClause__Group__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17767:1: ( rule__XCatchClause__Group__4__Impl )
+            // InternalChartDSL.g:17768: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"
+    // InternalChartDSL.g:17774:1: rule__XCatchClause__Group__4__Impl : ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) ;
+    public final void rule__XCatchClause__Group__4__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17778:1: ( ( ( rule__XCatchClause__ExpressionAssignment_4 ) ) )
+            // InternalChartDSL.g:17779:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
+            {
+            // InternalChartDSL.g:17779:1: ( ( rule__XCatchClause__ExpressionAssignment_4 ) )
+            // InternalChartDSL.g:17780:2: ( rule__XCatchClause__ExpressionAssignment_4 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCatchClauseAccess().getExpressionAssignment_4()); 
+            }
+            // InternalChartDSL.g:17781:2: ( rule__XCatchClause__ExpressionAssignment_4 )
+            // InternalChartDSL.g:17781: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"
+    // InternalChartDSL.g:17790: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 {
+            // InternalChartDSL.g:17794:1: ( rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1 )
+            // InternalChartDSL.g:17795:2: rule__QualifiedName__Group__0__Impl rule__QualifiedName__Group__1
+            {
+            pushFollow(FOLLOW_137);
+            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"
+    // InternalChartDSL.g:17802:1: rule__QualifiedName__Group__0__Impl : ( ruleValidID ) ;
+    public final void rule__QualifiedName__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17806:1: ( ( ruleValidID ) )
+            // InternalChartDSL.g:17807:1: ( ruleValidID )
+            {
+            // InternalChartDSL.g:17807:1: ( ruleValidID )
+            // InternalChartDSL.g:17808: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"
+    // InternalChartDSL.g:17817:1: rule__QualifiedName__Group__1 : rule__QualifiedName__Group__1__Impl ;
+    public final void rule__QualifiedName__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17821:1: ( rule__QualifiedName__Group__1__Impl )
+            // InternalChartDSL.g:17822: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"
+    // InternalChartDSL.g:17828: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 {
+            // InternalChartDSL.g:17832:1: ( ( ( rule__QualifiedName__Group_1__0 )* ) )
+            // InternalChartDSL.g:17833:1: ( ( rule__QualifiedName__Group_1__0 )* )
+            {
+            // InternalChartDSL.g:17833:1: ( ( rule__QualifiedName__Group_1__0 )* )
+            // InternalChartDSL.g:17834:2: ( rule__QualifiedName__Group_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameAccess().getGroup_1()); 
+            }
+            // InternalChartDSL.g:17835:2: ( rule__QualifiedName__Group_1__0 )*
+            loop144:
+            do {
+                int alt144=2;
+                int LA144_0 = input.LA(1);
+
+                if ( (LA144_0==43) ) {
+                    int LA144_2 = input.LA(2);
+
+                    if ( (LA144_2==RULE_ID) ) {
+                        int LA144_3 = input.LA(3);
+
+                        if ( (synpred206_InternalChartDSL()) ) {
+                            alt144=1;
+                        }
+
+
+                    }
+
+
+                }
+
+
+                switch (alt144) {
+            	case 1 :
+            	    // InternalChartDSL.g:17835:3: rule__QualifiedName__Group_1__0
+            	    {
+            	    pushFollow(FOLLOW_138);
+            	    rule__QualifiedName__Group_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop144;
+                }
+            } 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"
+    // InternalChartDSL.g:17844: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 {
+            // InternalChartDSL.g:17848:1: ( rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1 )
+            // InternalChartDSL.g:17849:2: rule__QualifiedName__Group_1__0__Impl rule__QualifiedName__Group_1__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__QualifiedName__Group_1__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__QualifiedName__Group_1__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__QualifiedName__Group_1__0"
+
+
+    // $ANTLR start "rule__QualifiedName__Group_1__0__Impl"
+    // InternalChartDSL.g:17856:1: rule__QualifiedName__Group_1__0__Impl : ( ( '.' ) ) ;
+    public final void rule__QualifiedName__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17860:1: ( ( ( '.' ) ) )
+            // InternalChartDSL.g:17861:1: ( ( '.' ) )
+            {
+            // InternalChartDSL.g:17861:1: ( ( '.' ) )
+            // InternalChartDSL.g:17862:2: ( '.' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getQualifiedNameAccess().getFullStopKeyword_1_0()); 
+            }
+            // InternalChartDSL.g:17863:2: ( '.' )
+            // InternalChartDSL.g:17863: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"
+    // InternalChartDSL.g:17871: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 {
+            // InternalChartDSL.g:17875:1: ( rule__QualifiedName__Group_1__1__Impl )
+            // InternalChartDSL.g:17876: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"
+    // InternalChartDSL.g:17882:1: rule__QualifiedName__Group_1__1__Impl : ( ruleValidID ) ;
+    public final void rule__QualifiedName__Group_1__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17886:1: ( ( ruleValidID ) )
+            // InternalChartDSL.g:17887:1: ( ruleValidID )
+            {
+            // InternalChartDSL.g:17887:1: ( ruleValidID )
+            // InternalChartDSL.g:17888: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"
+    // InternalChartDSL.g:17898: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 {
+            // InternalChartDSL.g:17902:1: ( rule__Number__Group_1__0__Impl rule__Number__Group_1__1 )
+            // InternalChartDSL.g:17903:2: rule__Number__Group_1__0__Impl rule__Number__Group_1__1
+            {
+            pushFollow(FOLLOW_137);
+            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"
+    // InternalChartDSL.g:17910: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 {
+            // InternalChartDSL.g:17914:1: ( ( ( rule__Number__Alternatives_1_0 ) ) )
+            // InternalChartDSL.g:17915:1: ( ( rule__Number__Alternatives_1_0 ) )
+            {
+            // InternalChartDSL.g:17915:1: ( ( rule__Number__Alternatives_1_0 ) )
+            // InternalChartDSL.g:17916:2: ( rule__Number__Alternatives_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getAlternatives_1_0()); 
+            }
+            // InternalChartDSL.g:17917:2: ( rule__Number__Alternatives_1_0 )
+            // InternalChartDSL.g:17917: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"
+    // InternalChartDSL.g:17925: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 {
+            // InternalChartDSL.g:17929:1: ( rule__Number__Group_1__1__Impl )
+            // InternalChartDSL.g:17930: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"
+    // InternalChartDSL.g:17936: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 {
+            // InternalChartDSL.g:17940:1: ( ( ( rule__Number__Group_1_1__0 )? ) )
+            // InternalChartDSL.g:17941:1: ( ( rule__Number__Group_1_1__0 )? )
+            {
+            // InternalChartDSL.g:17941:1: ( ( rule__Number__Group_1_1__0 )? )
+            // InternalChartDSL.g:17942:2: ( rule__Number__Group_1_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getGroup_1_1()); 
+            }
+            // InternalChartDSL.g:17943:2: ( rule__Number__Group_1_1__0 )?
+            int alt145=2;
+            int LA145_0 = input.LA(1);
+
+            if ( (LA145_0==43) ) {
+                int LA145_1 = input.LA(2);
+
+                if ( ((LA145_1>=RULE_INT && LA145_1<=RULE_DECIMAL)) ) {
+                    alt145=1;
+                }
+            }
+            switch (alt145) {
+                case 1 :
+                    // InternalChartDSL.g:17943: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"
+    // InternalChartDSL.g:17952: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 {
+            // InternalChartDSL.g:17956:1: ( rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1 )
+            // InternalChartDSL.g:17957:2: rule__Number__Group_1_1__0__Impl rule__Number__Group_1_1__1
+            {
+            pushFollow(FOLLOW_139);
+            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"
+    // InternalChartDSL.g:17964:1: rule__Number__Group_1_1__0__Impl : ( '.' ) ;
+    public final void rule__Number__Group_1_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:17968:1: ( ( '.' ) )
+            // InternalChartDSL.g:17969:1: ( '.' )
+            {
+            // InternalChartDSL.g:17969:1: ( '.' )
+            // InternalChartDSL.g:17970: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"
+    // InternalChartDSL.g:17979: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 {
+            // InternalChartDSL.g:17983:1: ( rule__Number__Group_1_1__1__Impl )
+            // InternalChartDSL.g:17984: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"
+    // InternalChartDSL.g:17990: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 {
+            // InternalChartDSL.g:17994:1: ( ( ( rule__Number__Alternatives_1_1_1 ) ) )
+            // InternalChartDSL.g:17995:1: ( ( rule__Number__Alternatives_1_1_1 ) )
+            {
+            // InternalChartDSL.g:17995:1: ( ( rule__Number__Alternatives_1_1_1 ) )
+            // InternalChartDSL.g:17996:2: ( rule__Number__Alternatives_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getNumberAccess().getAlternatives_1_1_1()); 
+            }
+            // InternalChartDSL.g:17997:2: ( rule__Number__Alternatives_1_1_1 )
+            // InternalChartDSL.g:17997: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"
+    // InternalChartDSL.g:18006: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 {
+            // InternalChartDSL.g:18010:1: ( rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1 )
+            // InternalChartDSL.g:18011:2: rule__JvmTypeReference__Group_0__0__Impl rule__JvmTypeReference__Group_0__1
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalChartDSL.g:18018:1: rule__JvmTypeReference__Group_0__0__Impl : ( ruleJvmParameterizedTypeReference ) ;
+    public final void rule__JvmTypeReference__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:18022:1: ( ( ruleJvmParameterizedTypeReference ) )
+            // InternalChartDSL.g:18023:1: ( ruleJvmParameterizedTypeReference )
+            {
+            // InternalChartDSL.g:18023:1: ( ruleJvmParameterizedTypeReference )
+            // InternalChartDSL.g:18024: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"
+    // InternalChartDSL.g:18033: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 {
+            // InternalChartDSL.g:18037:1: ( rule__JvmTypeReference__Group_0__1__Impl )
+            // InternalChartDSL.g:18038: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"
+    // InternalChartDSL.g:18044: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 {
+            // InternalChartDSL.g:18048:1: ( ( ( rule__JvmTypeReference__Group_0_1__0 )* ) )
+            // InternalChartDSL.g:18049:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
+            {
+            // InternalChartDSL.g:18049:1: ( ( rule__JvmTypeReference__Group_0_1__0 )* )
+            // InternalChartDSL.g:18050:2: ( rule__JvmTypeReference__Group_0_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1()); 
+            }
+            // InternalChartDSL.g:18051:2: ( rule__JvmTypeReference__Group_0_1__0 )*
+            loop146:
+            do {
+                int alt146=2;
+                int LA146_0 = input.LA(1);
+
+                if ( (LA146_0==101) ) {
+                    int LA146_2 = input.LA(2);
+
+                    if ( (LA146_2==99) ) {
+                        int LA146_3 = input.LA(3);
+
+                        if ( (synpred208_InternalChartDSL()) ) {
+                            alt146=1;
+                        }
+
+
+                    }
+
+
+                }
+
+
+                switch (alt146) {
+            	case 1 :
+            	    // InternalChartDSL.g:18051:3: rule__JvmTypeReference__Group_0_1__0
+            	    {
+            	    pushFollow(FOLLOW_129);
+            	    rule__JvmTypeReference__Group_0_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop146;
+                }
+            } 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"
+    // InternalChartDSL.g:18060: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 {
+            // InternalChartDSL.g:18064:1: ( rule__JvmTypeReference__Group_0_1__0__Impl )
+            // InternalChartDSL.g:18065: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"
+    // InternalChartDSL.g:18071: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 {
+            // InternalChartDSL.g:18075:1: ( ( ( rule__JvmTypeReference__Group_0_1_0__0 ) ) )
+            // InternalChartDSL.g:18076:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
+            {
+            // InternalChartDSL.g:18076:1: ( ( rule__JvmTypeReference__Group_0_1_0__0 ) )
+            // InternalChartDSL.g:18077:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getGroup_0_1_0()); 
+            }
+            // InternalChartDSL.g:18078:2: ( rule__JvmTypeReference__Group_0_1_0__0 )
+            // InternalChartDSL.g:18078: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"
+    // InternalChartDSL.g:18087: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 {
+            // InternalChartDSL.g:18091:1: ( rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1 )
+            // InternalChartDSL.g:18092:2: rule__JvmTypeReference__Group_0_1_0__0__Impl rule__JvmTypeReference__Group_0_1_0__1
+            {
+            pushFollow(FOLLOW_65);
+            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"
+    // InternalChartDSL.g:18099: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 {
+            // InternalChartDSL.g:18103:1: ( ( () ) )
+            // InternalChartDSL.g:18104:1: ( () )
+            {
+            // InternalChartDSL.g:18104:1: ( () )
+            // InternalChartDSL.g:18105:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmTypeReferenceAccess().getJvmGenericArrayTypeReferenceComponentTypeAction_0_1_0_0()); 
+            }
+            // InternalChartDSL.g:18106:2: ()
+            // InternalChartDSL.g:18106: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"
+    // InternalChartDSL.g:18114: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 {
+            // InternalChartDSL.g:18118:1: ( rule__JvmTypeReference__Group_0_1_0__1__Impl )
+            // InternalChartDSL.g:18119: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"
+    // InternalChartDSL.g:18125: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 {
+            // InternalChartDSL.g:18129:1: ( ( ruleArrayBrackets ) )
+            // InternalChartDSL.g:18130:1: ( ruleArrayBrackets )
+            {
+            // InternalChartDSL.g:18130:1: ( ruleArrayBrackets )
+            // InternalChartDSL.g:18131: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"
+    // InternalChartDSL.g:18141: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 {
+            // InternalChartDSL.g:18145:1: ( rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1 )
+            // InternalChartDSL.g:18146:2: rule__ArrayBrackets__Group__0__Impl rule__ArrayBrackets__Group__1
+            {
+            pushFollow(FOLLOW_103);
+            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"
+    // InternalChartDSL.g:18153:1: rule__ArrayBrackets__Group__0__Impl : ( '[' ) ;
+    public final void rule__ArrayBrackets__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:18157:1: ( ( '[' ) )
+            // InternalChartDSL.g:18158:1: ( '[' )
+            {
+            // InternalChartDSL.g:18158:1: ( '[' )
+            // InternalChartDSL.g:18159:2: '['
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0()); 
+            }
+            match(input,101,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"
+    // InternalChartDSL.g:18168:1: rule__ArrayBrackets__Group__1 : rule__ArrayBrackets__Group__1__Impl ;
+    public final void rule__ArrayBrackets__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:18172:1: ( rule__ArrayBrackets__Group__1__Impl )
+            // InternalChartDSL.g:18173: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"
+    // InternalChartDSL.g:18179:1: rule__ArrayBrackets__Group__1__Impl : ( ']' ) ;
+    public final void rule__ArrayBrackets__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:18183:1: ( ( ']' ) )
+            // InternalChartDSL.g:18184:1: ( ']' )
+            {
+            // InternalChartDSL.g:18184:1: ( ']' )
+            // InternalChartDSL.g:18185:2: ']'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getArrayBracketsAccess().getRightSquareBracketKeyword_1()); 
+            }
+            match(input,99,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"
+    // InternalChartDSL.g:18195: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 {
+            // InternalChartDSL.g:18199:1: ( rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1 )
+            // InternalChartDSL.g:18200:2: rule__XFunctionTypeRef__Group__0__Impl rule__XFunctionTypeRef__Group__1
+            {
+            pushFollow(FOLLOW_78);
+            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"
+    // InternalChartDSL.g:18207: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 {
+            // InternalChartDSL.g:18211:1: ( ( ( rule__XFunctionTypeRef__Group_0__0 )? ) )
+            // InternalChartDSL.g:18212:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
+            {
+            // InternalChartDSL.g:18212:1: ( ( rule__XFunctionTypeRef__Group_0__0 )? )
+            // InternalChartDSL.g:18213:2: ( rule__XFunctionTypeRef__Group_0__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0()); 
+            }
+            // InternalChartDSL.g:18214:2: ( rule__XFunctionTypeRef__Group_0__0 )?
+            int alt147=2;
+            int LA147_0 = input.LA(1);
+
+            if ( (LA147_0==96) ) {
+                alt147=1;
+            }
+            switch (alt147) {
+                case 1 :
+                    // InternalChartDSL.g:18214: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"
+    // InternalChartDSL.g:18222: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 {
+            // InternalChartDSL.g:18226:1: ( rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2 )
+            // InternalChartDSL.g:18227:2: rule__XFunctionTypeRef__Group__1__Impl rule__XFunctionTypeRef__Group__2
+            {
+            pushFollow(FOLLOW_78);
+            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"
+    // InternalChartDSL.g:18234:1: rule__XFunctionTypeRef__Group__1__Impl : ( '=>' ) ;
+    public final void rule__XFunctionTypeRef__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:18238:1: ( ( '=>' ) )
+            // InternalChartDSL.g:18239:1: ( '=>' )
+            {
+            // InternalChartDSL.g:18239:1: ( '=>' )
+            // InternalChartDSL.g:18240: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"
+    // InternalChartDSL.g:18249:1: rule__XFunctionTypeRef__Group__2 : rule__XFunctionTypeRef__Group__2__Impl ;
+    public final void rule__XFunctionTypeRef__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:18253:1: ( rule__XFunctionTypeRef__Group__2__Impl )
+            // InternalChartDSL.g:18254: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"
+    // InternalChartDSL.g:18260:1: rule__XFunctionTypeRef__Group__2__Impl : ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) ;
+    public final void rule__XFunctionTypeRef__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:18264:1: ( ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) ) )
+            // InternalChartDSL.g:18265:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
+            {
+            // InternalChartDSL.g:18265:1: ( ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 ) )
+            // InternalChartDSL.g:18266:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getReturnTypeAssignment_2()); 
+            }
+            // InternalChartDSL.g:18267:2: ( rule__XFunctionTypeRef__ReturnTypeAssignment_2 )
+            // InternalChartDSL.g:18267: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"
+    // InternalChartDSL.g:18276: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 {
+            // InternalChartDSL.g:18280:1: ( rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1 )
+            // InternalChartDSL.g:18281:2: rule__XFunctionTypeRef__Group_0__0__Impl rule__XFunctionTypeRef__Group_0__1
+            {
+            pushFollow(FOLLOW_140);
+            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"
+    // InternalChartDSL.g:18288:1: rule__XFunctionTypeRef__Group_0__0__Impl : ( '(' ) ;
+    public final void rule__XFunctionTypeRef__Group_0__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:18292:1: ( ( '(' ) )
+            // InternalChartDSL.g:18293:1: ( '(' )
+            {
+            // InternalChartDSL.g:18293:1: ( '(' )
+            // InternalChartDSL.g:18294:2: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0()); 
+            }
+            match(input,96,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"
+    // InternalChartDSL.g:18303: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 {
+            // InternalChartDSL.g:18307:1: ( rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2 )
+            // InternalChartDSL.g:18308:2: rule__XFunctionTypeRef__Group_0__1__Impl rule__XFunctionTypeRef__Group_0__2
+            {
+            pushFollow(FOLLOW_140);
+            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"
+    // InternalChartDSL.g:18315: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 {
+            // InternalChartDSL.g:18319:1: ( ( ( rule__XFunctionTypeRef__Group_0_1__0 )? ) )
+            // InternalChartDSL.g:18320:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
+            {
+            // InternalChartDSL.g:18320:1: ( ( rule__XFunctionTypeRef__Group_0_1__0 )? )
+            // InternalChartDSL.g:18321:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1()); 
+            }
+            // InternalChartDSL.g:18322:2: ( rule__XFunctionTypeRef__Group_0_1__0 )?
+            int alt148=2;
+            int LA148_0 = input.LA(1);
+
+            if ( (LA148_0==RULE_ID||LA148_0==31||LA148_0==96) ) {
+                alt148=1;
+            }
+            switch (alt148) {
+                case 1 :
+                    // InternalChartDSL.g:18322: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"
+    // InternalChartDSL.g:18330: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 {
+            // InternalChartDSL.g:18334:1: ( rule__XFunctionTypeRef__Group_0__2__Impl )
+            // InternalChartDSL.g:18335: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"
+    // InternalChartDSL.g:18341:1: rule__XFunctionTypeRef__Group_0__2__Impl : ( ')' ) ;
+    public final void rule__XFunctionTypeRef__Group_0__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:18345:1: ( ( ')' ) )
+            // InternalChartDSL.g:18346:1: ( ')' )
+            {
+            // InternalChartDSL.g:18346:1: ( ')' )
+            // InternalChartDSL.g:18347:2: ')'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2()); 
+            }
+            match(input,97,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"
+    // InternalChartDSL.g:18357: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 {
+            // InternalChartDSL.g:18361:1: ( rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1 )
+            // InternalChartDSL.g:18362:2: rule__XFunctionTypeRef__Group_0_1__0__Impl rule__XFunctionTypeRef__Group_0_1__1
+            {
+            pushFollow(FOLLOW_59);
+            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"
+    // InternalChartDSL.g:18369: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 {
+            // InternalChartDSL.g:18373:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) ) )
+            // InternalChartDSL.g:18374:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
+            {
+            // InternalChartDSL.g:18374:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 ) )
+            // InternalChartDSL.g:18375:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_0()); 
+            }
+            // InternalChartDSL.g:18376:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 )
+            // InternalChartDSL.g:18376: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"
+    // InternalChartDSL.g:18384: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 {
+            // InternalChartDSL.g:18388:1: ( rule__XFunctionTypeRef__Group_0_1__1__Impl )
+            // InternalChartDSL.g:18389: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"
+    // InternalChartDSL.g:18395: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 {
+            // InternalChartDSL.g:18399:1: ( ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* ) )
+            // InternalChartDSL.g:18400:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
+            {
+            // InternalChartDSL.g:18400:1: ( ( rule__XFunctionTypeRef__Group_0_1_1__0 )* )
+            // InternalChartDSL.g:18401:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getGroup_0_1_1()); 
+            }
+            // InternalChartDSL.g:18402:2: ( rule__XFunctionTypeRef__Group_0_1_1__0 )*
+            loop149:
+            do {
+                int alt149=2;
+                int LA149_0 = input.LA(1);
+
+                if ( (LA149_0==98) ) {
+                    alt149=1;
+                }
+
+
+                switch (alt149) {
+            	case 1 :
+            	    // InternalChartDSL.g:18402:3: rule__XFunctionTypeRef__Group_0_1_1__0
+            	    {
+            	    pushFollow(FOLLOW_60);
+            	    rule__XFunctionTypeRef__Group_0_1_1__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop149;
+                }
+            } 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"
+    // InternalChartDSL.g:18411: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 {
+            // InternalChartDSL.g:18415:1: ( rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1 )
+            // InternalChartDSL.g:18416:2: rule__XFunctionTypeRef__Group_0_1_1__0__Impl rule__XFunctionTypeRef__Group_0_1_1__1
+            {
+            pushFollow(FOLLOW_78);
+            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"
+    // InternalChartDSL.g:18423: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 {
+            // InternalChartDSL.g:18427:1: ( ( ',' ) )
+            // InternalChartDSL.g:18428:1: ( ',' )
+            {
+            // InternalChartDSL.g:18428:1: ( ',' )
+            // InternalChartDSL.g:18429:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0()); 
+            }
+            match(input,98,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"
+    // InternalChartDSL.g:18438: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 {
+            // InternalChartDSL.g:18442:1: ( rule__XFunctionTypeRef__Group_0_1_1__1__Impl )
+            // InternalChartDSL.g:18443: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"
+    // InternalChartDSL.g:18449: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 {
+            // InternalChartDSL.g:18453:1: ( ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) ) )
+            // InternalChartDSL.g:18454:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
+            {
+            // InternalChartDSL.g:18454:1: ( ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 ) )
+            // InternalChartDSL.g:18455:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFunctionTypeRefAccess().getParamTypesAssignment_0_1_1_1()); 
+            }
+            // InternalChartDSL.g:18456:2: ( rule__XFunctionTypeRef__ParamTypesAssignment_0_1_1_1 )
+            // InternalChartDSL.g:18456: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"
+    // InternalChartDSL.g:18465: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 {
+            // InternalChartDSL.g:18469:1: ( rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1 )
+            // InternalChartDSL.g:18470:2: rule__JvmParameterizedTypeReference__Group__0__Impl rule__JvmParameterizedTypeReference__Group__1
+            {
+            pushFollow(FOLLOW_68);
+            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"
+    // InternalChartDSL.g:18477:1: rule__JvmParameterizedTypeReference__Group__0__Impl : ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) ;
+    public final void rule__JvmParameterizedTypeReference__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:18481:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) ) )
+            // InternalChartDSL.g:18482:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
+            {
+            // InternalChartDSL.g:18482:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_0 ) )
+            // InternalChartDSL.g:18483:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_0()); 
+            }
+            // InternalChartDSL.g:18484:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_0 )
+            // InternalChartDSL.g:18484: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"
+    // InternalChartDSL.g:18492:1: rule__JvmParameterizedTypeReference__Group__1 : rule__JvmParameterizedTypeReference__Group__1__Impl ;
+    public final void rule__JvmParameterizedTypeReference__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:18496:1: ( rule__JvmParameterizedTypeReference__Group__1__Impl )
+            // InternalChartDSL.g:18497: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"
+    // InternalChartDSL.g:18503: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 {
+            // InternalChartDSL.g:18507:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? ) )
+            // InternalChartDSL.g:18508:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
+            {
+            // InternalChartDSL.g:18508:1: ( ( rule__JvmParameterizedTypeReference__Group_1__0 )? )
+            // InternalChartDSL.g:18509:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1()); 
+            }
+            // InternalChartDSL.g:18510:2: ( rule__JvmParameterizedTypeReference__Group_1__0 )?
+            int alt150=2;
+            alt150 = dfa150.predict(input);
+            switch (alt150) {
+                case 1 :
+                    // InternalChartDSL.g:18510: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"
+    // InternalChartDSL.g:18519: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 {
+            // InternalChartDSL.g:18523:1: ( rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1 )
+            // InternalChartDSL.g:18524:2: rule__JvmParameterizedTypeReference__Group_1__0__Impl rule__JvmParameterizedTypeReference__Group_1__1
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalChartDSL.g:18531:1: rule__JvmParameterizedTypeReference__Group_1__0__Impl : ( ( '<' ) ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:18535:1: ( ( ( '<' ) ) )
+            // InternalChartDSL.g:18536:1: ( ( '<' ) )
+            {
+            // InternalChartDSL.g:18536:1: ( ( '<' ) )
+            // InternalChartDSL.g:18537:2: ( '<' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0()); 
+            }
+            // InternalChartDSL.g:18538:2: ( '<' )
+            // InternalChartDSL.g:18538: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"
+    // InternalChartDSL.g:18546: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 {
+            // InternalChartDSL.g:18550:1: ( rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2 )
+            // InternalChartDSL.g:18551:2: rule__JvmParameterizedTypeReference__Group_1__1__Impl rule__JvmParameterizedTypeReference__Group_1__2
+            {
+            pushFollow(FOLLOW_99);
+            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"
+    // InternalChartDSL.g:18558: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 {
+            // InternalChartDSL.g:18562:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) ) )
+            // InternalChartDSL.g:18563:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
+            {
+            // InternalChartDSL.g:18563:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 ) )
+            // InternalChartDSL.g:18564:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_1()); 
+            }
+            // InternalChartDSL.g:18565:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 )
+            // InternalChartDSL.g:18565: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"
+    // InternalChartDSL.g:18573: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 {
+            // InternalChartDSL.g:18577:1: ( rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3 )
+            // InternalChartDSL.g:18578:2: rule__JvmParameterizedTypeReference__Group_1__2__Impl rule__JvmParameterizedTypeReference__Group_1__3
+            {
+            pushFollow(FOLLOW_99);
+            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"
+    // InternalChartDSL.g:18585: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 {
+            // InternalChartDSL.g:18589:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* ) )
+            // InternalChartDSL.g:18590:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
+            {
+            // InternalChartDSL.g:18590:1: ( ( rule__JvmParameterizedTypeReference__Group_1_2__0 )* )
+            // InternalChartDSL.g:18591:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_2()); 
+            }
+            // InternalChartDSL.g:18592:2: ( rule__JvmParameterizedTypeReference__Group_1_2__0 )*
+            loop151:
+            do {
+                int alt151=2;
+                int LA151_0 = input.LA(1);
+
+                if ( (LA151_0==98) ) {
+                    alt151=1;
+                }
+
+
+                switch (alt151) {
+            	case 1 :
+            	    // InternalChartDSL.g:18592:3: rule__JvmParameterizedTypeReference__Group_1_2__0
+            	    {
+            	    pushFollow(FOLLOW_60);
+            	    rule__JvmParameterizedTypeReference__Group_1_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop151;
+                }
+            } 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"
+    // InternalChartDSL.g:18600: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 {
+            // InternalChartDSL.g:18604:1: ( rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4 )
+            // InternalChartDSL.g:18605:2: rule__JvmParameterizedTypeReference__Group_1__3__Impl rule__JvmParameterizedTypeReference__Group_1__4
+            {
+            pushFollow(FOLLOW_137);
+            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"
+    // InternalChartDSL.g:18612:1: rule__JvmParameterizedTypeReference__Group_1__3__Impl : ( '>' ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1__3__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:18616:1: ( ( '>' ) )
+            // InternalChartDSL.g:18617:1: ( '>' )
+            {
+            // InternalChartDSL.g:18617:1: ( '>' )
+            // InternalChartDSL.g:18618: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"
+    // InternalChartDSL.g:18627: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 {
+            // InternalChartDSL.g:18631:1: ( rule__JvmParameterizedTypeReference__Group_1__4__Impl )
+            // InternalChartDSL.g:18632: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"
+    // InternalChartDSL.g:18638: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 {
+            // InternalChartDSL.g:18642:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* ) )
+            // InternalChartDSL.g:18643:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
+            {
+            // InternalChartDSL.g:18643:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4__0 )* )
+            // InternalChartDSL.g:18644:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4()); 
+            }
+            // InternalChartDSL.g:18645:2: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )*
+            loop152:
+            do {
+                int alt152=2;
+                int LA152_0 = input.LA(1);
+
+                if ( (LA152_0==43) ) {
+                    int LA152_2 = input.LA(2);
+
+                    if ( (LA152_2==RULE_ID) ) {
+                        int LA152_3 = input.LA(3);
+
+                        if ( (synpred214_InternalChartDSL()) ) {
+                            alt152=1;
+                        }
+
+
+                    }
+
+
+                }
+
+
+                switch (alt152) {
+            	case 1 :
+            	    // InternalChartDSL.g:18645:3: rule__JvmParameterizedTypeReference__Group_1_4__0
+            	    {
+            	    pushFollow(FOLLOW_138);
+            	    rule__JvmParameterizedTypeReference__Group_1_4__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop152;
+                }
+            } 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"
+    // InternalChartDSL.g:18654: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 {
+            // InternalChartDSL.g:18658:1: ( rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1 )
+            // InternalChartDSL.g:18659:2: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_2__1
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalChartDSL.g:18666:1: rule__JvmParameterizedTypeReference__Group_1_2__0__Impl : ( ',' ) ;
+    public final void rule__JvmParameterizedTypeReference__Group_1_2__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:18670:1: ( ( ',' ) )
+            // InternalChartDSL.g:18671:1: ( ',' )
+            {
+            // InternalChartDSL.g:18671:1: ( ',' )
+            // InternalChartDSL.g:18672:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0()); 
+            }
+            match(input,98,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"
+    // InternalChartDSL.g:18681: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 {
+            // InternalChartDSL.g:18685:1: ( rule__JvmParameterizedTypeReference__Group_1_2__1__Impl )
+            // InternalChartDSL.g:18686: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"
+    // InternalChartDSL.g:18692: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 {
+            // InternalChartDSL.g:18696:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) ) )
+            // InternalChartDSL.g:18697:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
+            {
+            // InternalChartDSL.g:18697:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 ) )
+            // InternalChartDSL.g:18698:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_2_1()); 
+            }
+            // InternalChartDSL.g:18699:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 )
+            // InternalChartDSL.g:18699: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"
+    // InternalChartDSL.g:18708: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 {
+            // InternalChartDSL.g:18712:1: ( rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1 )
+            // InternalChartDSL.g:18713:2: rule__JvmParameterizedTypeReference__Group_1_4__0__Impl rule__JvmParameterizedTypeReference__Group_1_4__1
+            {
+            pushFollow(FOLLOW_7);
+            rule__JvmParameterizedTypeReference__Group_1_4__0__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            pushFollow(FOLLOW_2);
+            rule__JvmParameterizedTypeReference__Group_1_4__1();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__JvmParameterizedTypeReference__Group_1_4__0"
+
+
+    // $ANTLR start "rule__JvmParameterizedTypeReference__Group_1_4__0__Impl"
+    // InternalChartDSL.g:18720: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 {
+            // InternalChartDSL.g:18724:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) ) )
+            // InternalChartDSL.g:18725:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
+            {
+            // InternalChartDSL.g:18725:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 ) )
+            // InternalChartDSL.g:18726:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0()); 
+            }
+            // InternalChartDSL.g:18727:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0 )
+            // InternalChartDSL.g:18727: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"
+    // InternalChartDSL.g:18735: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 {
+            // InternalChartDSL.g:18739:1: ( rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2 )
+            // InternalChartDSL.g:18740:2: rule__JvmParameterizedTypeReference__Group_1_4__1__Impl rule__JvmParameterizedTypeReference__Group_1_4__2
+            {
+            pushFollow(FOLLOW_68);
+            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"
+    // InternalChartDSL.g:18747: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 {
+            // InternalChartDSL.g:18751:1: ( ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) ) )
+            // InternalChartDSL.g:18752:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
+            {
+            // InternalChartDSL.g:18752:1: ( ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 ) )
+            // InternalChartDSL.g:18753:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeAssignment_1_4_1()); 
+            }
+            // InternalChartDSL.g:18754:2: ( rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 )
+            // InternalChartDSL.g:18754: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"
+    // InternalChartDSL.g:18762: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 {
+            // InternalChartDSL.g:18766:1: ( rule__JvmParameterizedTypeReference__Group_1_4__2__Impl )
+            // InternalChartDSL.g:18767: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"
+    // InternalChartDSL.g:18773: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 {
+            // InternalChartDSL.g:18777:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? ) )
+            // InternalChartDSL.g:18778:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
+            {
+            // InternalChartDSL.g:18778:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )? )
+            // InternalChartDSL.g:18779:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2()); 
+            }
+            // InternalChartDSL.g:18780:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )?
+            int alt153=2;
+            alt153 = dfa153.predict(input);
+            switch (alt153) {
+                case 1 :
+                    // InternalChartDSL.g:18780: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"
+    // InternalChartDSL.g:18789: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 {
+            // InternalChartDSL.g:18793:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0__0__Impl )
+            // InternalChartDSL.g:18794: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"
+    // InternalChartDSL.g:18800: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 {
+            // InternalChartDSL.g:18804:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) ) )
+            // InternalChartDSL.g:18805:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
+            {
+            // InternalChartDSL.g:18805:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 ) )
+            // InternalChartDSL.g:18806:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_0_0()); 
+            }
+            // InternalChartDSL.g:18807:2: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0 )
+            // InternalChartDSL.g:18807: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"
+    // InternalChartDSL.g:18816: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 {
+            // InternalChartDSL.g:18820:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1 )
+            // InternalChartDSL.g:18821:2: rule__JvmParameterizedTypeReference__Group_1_4_0_0__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_0_0__1
+            {
+            pushFollow(FOLLOW_137);
+            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"
+    // InternalChartDSL.g:18828: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 {
+            // InternalChartDSL.g:18832:1: ( ( () ) )
+            // InternalChartDSL.g:18833:1: ( () )
+            {
+            // InternalChartDSL.g:18833:1: ( () )
+            // InternalChartDSL.g:18834:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0()); 
+            }
+            // InternalChartDSL.g:18835:2: ()
+            // InternalChartDSL.g:18835: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"
+    // InternalChartDSL.g:18843: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 {
+            // InternalChartDSL.g:18847:1: ( rule__JvmParameterizedTypeReference__Group_1_4_0_0__1__Impl )
+            // InternalChartDSL.g:18848: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"
+    // InternalChartDSL.g:18854: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 {
+            // InternalChartDSL.g:18858:1: ( ( '.' ) )
+            // InternalChartDSL.g:18859:1: ( '.' )
+            {
+            // InternalChartDSL.g:18859:1: ( '.' )
+            // InternalChartDSL.g:18860: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"
+    // InternalChartDSL.g:18870: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 {
+            // InternalChartDSL.g:18874:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1 )
+            // InternalChartDSL.g:18875:2: rule__JvmParameterizedTypeReference__Group_1_4_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__1
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalChartDSL.g:18882: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 {
+            // InternalChartDSL.g:18886:1: ( ( ( '<' ) ) )
+            // InternalChartDSL.g:18887:1: ( ( '<' ) )
+            {
+            // InternalChartDSL.g:18887:1: ( ( '<' ) )
+            // InternalChartDSL.g:18888:2: ( '<' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0()); 
+            }
+            // InternalChartDSL.g:18889:2: ( '<' )
+            // InternalChartDSL.g:18889: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"
+    // InternalChartDSL.g:18897: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 {
+            // InternalChartDSL.g:18901:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2 )
+            // InternalChartDSL.g:18902:2: rule__JvmParameterizedTypeReference__Group_1_4_2__1__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__2
+            {
+            pushFollow(FOLLOW_99);
+            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"
+    // InternalChartDSL.g:18909: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 {
+            // InternalChartDSL.g:18913:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) ) )
+            // InternalChartDSL.g:18914:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
+            {
+            // InternalChartDSL.g:18914:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 ) )
+            // InternalChartDSL.g:18915:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_1()); 
+            }
+            // InternalChartDSL.g:18916:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_1 )
+            // InternalChartDSL.g:18916: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"
+    // InternalChartDSL.g:18924: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 {
+            // InternalChartDSL.g:18928:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3 )
+            // InternalChartDSL.g:18929:2: rule__JvmParameterizedTypeReference__Group_1_4_2__2__Impl rule__JvmParameterizedTypeReference__Group_1_4_2__3
+            {
+            pushFollow(FOLLOW_99);
+            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"
+    // InternalChartDSL.g:18936: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 {
+            // InternalChartDSL.g:18940:1: ( ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* ) )
+            // InternalChartDSL.g:18941:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
+            {
+            // InternalChartDSL.g:18941:1: ( ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )* )
+            // InternalChartDSL.g:18942:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getGroup_1_4_2_2()); 
+            }
+            // InternalChartDSL.g:18943:2: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0 )*
+            loop154:
+            do {
+                int alt154=2;
+                int LA154_0 = input.LA(1);
+
+                if ( (LA154_0==98) ) {
+                    alt154=1;
+                }
+
+
+                switch (alt154) {
+            	case 1 :
+            	    // InternalChartDSL.g:18943:3: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0
+            	    {
+            	    pushFollow(FOLLOW_60);
+            	    rule__JvmParameterizedTypeReference__Group_1_4_2_2__0();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop154;
+                }
+            } 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"
+    // InternalChartDSL.g:18951: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 {
+            // InternalChartDSL.g:18955:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2__3__Impl )
+            // InternalChartDSL.g:18956: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"
+    // InternalChartDSL.g:18962: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 {
+            // InternalChartDSL.g:18966:1: ( ( '>' ) )
+            // InternalChartDSL.g:18967:1: ( '>' )
+            {
+            // InternalChartDSL.g:18967:1: ( '>' )
+            // InternalChartDSL.g:18968: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"
+    // InternalChartDSL.g:18978: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 {
+            // InternalChartDSL.g:18982:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1 )
+            // InternalChartDSL.g:18983:2: rule__JvmParameterizedTypeReference__Group_1_4_2_2__0__Impl rule__JvmParameterizedTypeReference__Group_1_4_2_2__1
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalChartDSL.g:18990: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 {
+            // InternalChartDSL.g:18994:1: ( ( ',' ) )
+            // InternalChartDSL.g:18995:1: ( ',' )
+            {
+            // InternalChartDSL.g:18995:1: ( ',' )
+            // InternalChartDSL.g:18996:2: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0()); 
+            }
+            match(input,98,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"
+    // InternalChartDSL.g:19005: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 {
+            // InternalChartDSL.g:19009:1: ( rule__JvmParameterizedTypeReference__Group_1_4_2_2__1__Impl )
+            // InternalChartDSL.g:19010: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"
+    // InternalChartDSL.g:19016: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 {
+            // InternalChartDSL.g:19020:1: ( ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) ) )
+            // InternalChartDSL.g:19021:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
+            {
+            // InternalChartDSL.g:19021:1: ( ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 ) )
+            // InternalChartDSL.g:19022:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsAssignment_1_4_2_2_1()); 
+            }
+            // InternalChartDSL.g:19023:2: ( rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_4_2_2_1 )
+            // InternalChartDSL.g:19023: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"
+    // InternalChartDSL.g:19032: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 {
+            // InternalChartDSL.g:19036:1: ( rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1 )
+            // InternalChartDSL.g:19037:2: rule__JvmWildcardTypeReference__Group__0__Impl rule__JvmWildcardTypeReference__Group__1
+            {
+            pushFollow(FOLLOW_98);
+            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"
+    // InternalChartDSL.g:19044:1: rule__JvmWildcardTypeReference__Group__0__Impl : ( () ) ;
+    public final void rule__JvmWildcardTypeReference__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19048:1: ( ( () ) )
+            // InternalChartDSL.g:19049:1: ( () )
+            {
+            // InternalChartDSL.g:19049:1: ( () )
+            // InternalChartDSL.g:19050:2: ()
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0()); 
+            }
+            // InternalChartDSL.g:19051:2: ()
+            // InternalChartDSL.g:19051: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"
+    // InternalChartDSL.g:19059: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 {
+            // InternalChartDSL.g:19063:1: ( rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2 )
+            // InternalChartDSL.g:19064:2: rule__JvmWildcardTypeReference__Group__1__Impl rule__JvmWildcardTypeReference__Group__2
+            {
+            pushFollow(FOLLOW_141);
+            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"
+    // InternalChartDSL.g:19071:1: rule__JvmWildcardTypeReference__Group__1__Impl : ( '?' ) ;
+    public final void rule__JvmWildcardTypeReference__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19075:1: ( ( '?' ) )
+            // InternalChartDSL.g:19076:1: ( '?' )
+            {
+            // InternalChartDSL.g:19076:1: ( '?' )
+            // InternalChartDSL.g:19077:2: '?'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1()); 
+            }
+            match(input,121,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"
+    // InternalChartDSL.g:19086:1: rule__JvmWildcardTypeReference__Group__2 : rule__JvmWildcardTypeReference__Group__2__Impl ;
+    public final void rule__JvmWildcardTypeReference__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19090:1: ( rule__JvmWildcardTypeReference__Group__2__Impl )
+            // InternalChartDSL.g:19091: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"
+    // InternalChartDSL.g:19097:1: rule__JvmWildcardTypeReference__Group__2__Impl : ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) ;
+    public final void rule__JvmWildcardTypeReference__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19101:1: ( ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? ) )
+            // InternalChartDSL.g:19102:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
+            {
+            // InternalChartDSL.g:19102:1: ( ( rule__JvmWildcardTypeReference__Alternatives_2 )? )
+            // InternalChartDSL.g:19103:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getAlternatives_2()); 
+            }
+            // InternalChartDSL.g:19104:2: ( rule__JvmWildcardTypeReference__Alternatives_2 )?
+            int alt155=2;
+            int LA155_0 = input.LA(1);
+
+            if ( (LA155_0==45||LA155_0==49) ) {
+                alt155=1;
+            }
+            switch (alt155) {
+                case 1 :
+                    // InternalChartDSL.g:19104: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"
+    // InternalChartDSL.g:19113: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 {
+            // InternalChartDSL.g:19117:1: ( rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1 )
+            // InternalChartDSL.g:19118:2: rule__JvmWildcardTypeReference__Group_2_0__0__Impl rule__JvmWildcardTypeReference__Group_2_0__1
+            {
+            pushFollow(FOLLOW_142);
+            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"
+    // InternalChartDSL.g:19125: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 {
+            // InternalChartDSL.g:19129:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) ) )
+            // InternalChartDSL.g:19130:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
+            {
+            // InternalChartDSL.g:19130:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 ) )
+            // InternalChartDSL.g:19131:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_0()); 
+            }
+            // InternalChartDSL.g:19132:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 )
+            // InternalChartDSL.g:19132: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"
+    // InternalChartDSL.g:19140: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 {
+            // InternalChartDSL.g:19144:1: ( rule__JvmWildcardTypeReference__Group_2_0__1__Impl )
+            // InternalChartDSL.g:19145: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"
+    // InternalChartDSL.g:19151: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 {
+            // InternalChartDSL.g:19155:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* ) )
+            // InternalChartDSL.g:19156:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
+            {
+            // InternalChartDSL.g:19156:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )* )
+            // InternalChartDSL.g:19157:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_0_1()); 
+            }
+            // InternalChartDSL.g:19158:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 )*
+            loop156:
+            do {
+                int alt156=2;
+                int LA156_0 = input.LA(1);
+
+                if ( (LA156_0==122) ) {
+                    alt156=1;
+                }
+
+
+                switch (alt156) {
+            	case 1 :
+            	    // InternalChartDSL.g:19158:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1
+            	    {
+            	    pushFollow(FOLLOW_143);
+            	    rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop156;
+                }
+            } 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"
+    // InternalChartDSL.g:19167: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 {
+            // InternalChartDSL.g:19171:1: ( rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1 )
+            // InternalChartDSL.g:19172:2: rule__JvmWildcardTypeReference__Group_2_1__0__Impl rule__JvmWildcardTypeReference__Group_2_1__1
+            {
+            pushFollow(FOLLOW_142);
+            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"
+    // InternalChartDSL.g:19179: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 {
+            // InternalChartDSL.g:19183:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) ) )
+            // InternalChartDSL.g:19184:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
+            {
+            // InternalChartDSL.g:19184:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 ) )
+            // InternalChartDSL.g:19185:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_0()); 
+            }
+            // InternalChartDSL.g:19186:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 )
+            // InternalChartDSL.g:19186: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"
+    // InternalChartDSL.g:19194: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 {
+            // InternalChartDSL.g:19198:1: ( rule__JvmWildcardTypeReference__Group_2_1__1__Impl )
+            // InternalChartDSL.g:19199: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"
+    // InternalChartDSL.g:19205: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 {
+            // InternalChartDSL.g:19209:1: ( ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* ) )
+            // InternalChartDSL.g:19210:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
+            {
+            // InternalChartDSL.g:19210:1: ( ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )* )
+            // InternalChartDSL.g:19211:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsAssignment_2_1_1()); 
+            }
+            // InternalChartDSL.g:19212:2: ( rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 )*
+            loop157:
+            do {
+                int alt157=2;
+                int LA157_0 = input.LA(1);
+
+                if ( (LA157_0==122) ) {
+                    alt157=1;
+                }
+
+
+                switch (alt157) {
+            	case 1 :
+            	    // InternalChartDSL.g:19212:3: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1
+            	    {
+            	    pushFollow(FOLLOW_143);
+            	    rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1();
+
+            	    state._fsp--;
+            	    if (state.failed) return ;
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop157;
+                }
+            } 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"
+    // InternalChartDSL.g:19221: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 {
+            // InternalChartDSL.g:19225:1: ( rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1 )
+            // InternalChartDSL.g:19226:2: rule__JvmUpperBound__Group__0__Impl rule__JvmUpperBound__Group__1
+            {
+            pushFollow(FOLLOW_78);
+            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"
+    // InternalChartDSL.g:19233:1: rule__JvmUpperBound__Group__0__Impl : ( 'extends' ) ;
+    public final void rule__JvmUpperBound__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19237:1: ( ( 'extends' ) )
+            // InternalChartDSL.g:19238:1: ( 'extends' )
+            {
+            // InternalChartDSL.g:19238:1: ( 'extends' )
+            // InternalChartDSL.g:19239: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"
+    // InternalChartDSL.g:19248:1: rule__JvmUpperBound__Group__1 : rule__JvmUpperBound__Group__1__Impl ;
+    public final void rule__JvmUpperBound__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19252:1: ( rule__JvmUpperBound__Group__1__Impl )
+            // InternalChartDSL.g:19253: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"
+    // InternalChartDSL.g:19259:1: rule__JvmUpperBound__Group__1__Impl : ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) ;
+    public final void rule__JvmUpperBound__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19263:1: ( ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) ) )
+            // InternalChartDSL.g:19264:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
+            {
+            // InternalChartDSL.g:19264:1: ( ( rule__JvmUpperBound__TypeReferenceAssignment_1 ) )
+            // InternalChartDSL.g:19265:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAccess().getTypeReferenceAssignment_1()); 
+            }
+            // InternalChartDSL.g:19266:2: ( rule__JvmUpperBound__TypeReferenceAssignment_1 )
+            // InternalChartDSL.g:19266: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"
+    // InternalChartDSL.g:19275: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 {
+            // InternalChartDSL.g:19279:1: ( rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1 )
+            // InternalChartDSL.g:19280:2: rule__JvmUpperBoundAnded__Group__0__Impl rule__JvmUpperBoundAnded__Group__1
+            {
+            pushFollow(FOLLOW_78);
+            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"
+    // InternalChartDSL.g:19287:1: rule__JvmUpperBoundAnded__Group__0__Impl : ( '&' ) ;
+    public final void rule__JvmUpperBoundAnded__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19291:1: ( ( '&' ) )
+            // InternalChartDSL.g:19292:1: ( '&' )
+            {
+            // InternalChartDSL.g:19292:1: ( '&' )
+            // InternalChartDSL.g:19293:2: '&'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0()); 
+            }
+            match(input,122,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"
+    // InternalChartDSL.g:19302:1: rule__JvmUpperBoundAnded__Group__1 : rule__JvmUpperBoundAnded__Group__1__Impl ;
+    public final void rule__JvmUpperBoundAnded__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19306:1: ( rule__JvmUpperBoundAnded__Group__1__Impl )
+            // InternalChartDSL.g:19307: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"
+    // InternalChartDSL.g:19313:1: rule__JvmUpperBoundAnded__Group__1__Impl : ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) ;
+    public final void rule__JvmUpperBoundAnded__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19317:1: ( ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) ) )
+            // InternalChartDSL.g:19318:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
+            {
+            // InternalChartDSL.g:19318:1: ( ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalChartDSL.g:19319:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmUpperBoundAndedAccess().getTypeReferenceAssignment_1()); 
+            }
+            // InternalChartDSL.g:19320:2: ( rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 )
+            // InternalChartDSL.g:19320: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"
+    // InternalChartDSL.g:19329: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 {
+            // InternalChartDSL.g:19333:1: ( rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1 )
+            // InternalChartDSL.g:19334:2: rule__JvmLowerBound__Group__0__Impl rule__JvmLowerBound__Group__1
+            {
+            pushFollow(FOLLOW_78);
+            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"
+    // InternalChartDSL.g:19341:1: rule__JvmLowerBound__Group__0__Impl : ( 'super' ) ;
+    public final void rule__JvmLowerBound__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19345:1: ( ( 'super' ) )
+            // InternalChartDSL.g:19346:1: ( 'super' )
+            {
+            // InternalChartDSL.g:19346:1: ( 'super' )
+            // InternalChartDSL.g:19347: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"
+    // InternalChartDSL.g:19356:1: rule__JvmLowerBound__Group__1 : rule__JvmLowerBound__Group__1__Impl ;
+    public final void rule__JvmLowerBound__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19360:1: ( rule__JvmLowerBound__Group__1__Impl )
+            // InternalChartDSL.g:19361: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"
+    // InternalChartDSL.g:19367:1: rule__JvmLowerBound__Group__1__Impl : ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) ;
+    public final void rule__JvmLowerBound__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19371:1: ( ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) ) )
+            // InternalChartDSL.g:19372:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
+            {
+            // InternalChartDSL.g:19372:1: ( ( rule__JvmLowerBound__TypeReferenceAssignment_1 ) )
+            // InternalChartDSL.g:19373:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAccess().getTypeReferenceAssignment_1()); 
+            }
+            // InternalChartDSL.g:19374:2: ( rule__JvmLowerBound__TypeReferenceAssignment_1 )
+            // InternalChartDSL.g:19374: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"
+    // InternalChartDSL.g:19383: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 {
+            // InternalChartDSL.g:19387:1: ( rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1 )
+            // InternalChartDSL.g:19388:2: rule__JvmLowerBoundAnded__Group__0__Impl rule__JvmLowerBoundAnded__Group__1
+            {
+            pushFollow(FOLLOW_78);
+            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"
+    // InternalChartDSL.g:19395:1: rule__JvmLowerBoundAnded__Group__0__Impl : ( '&' ) ;
+    public final void rule__JvmLowerBoundAnded__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19399:1: ( ( '&' ) )
+            // InternalChartDSL.g:19400:1: ( '&' )
+            {
+            // InternalChartDSL.g:19400:1: ( '&' )
+            // InternalChartDSL.g:19401:2: '&'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0()); 
+            }
+            match(input,122,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"
+    // InternalChartDSL.g:19410:1: rule__JvmLowerBoundAnded__Group__1 : rule__JvmLowerBoundAnded__Group__1__Impl ;
+    public final void rule__JvmLowerBoundAnded__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19414:1: ( rule__JvmLowerBoundAnded__Group__1__Impl )
+            // InternalChartDSL.g:19415: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"
+    // InternalChartDSL.g:19421:1: rule__JvmLowerBoundAnded__Group__1__Impl : ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) ;
+    public final void rule__JvmLowerBoundAnded__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19425:1: ( ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) ) )
+            // InternalChartDSL.g:19426:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
+            {
+            // InternalChartDSL.g:19426:1: ( ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 ) )
+            // InternalChartDSL.g:19427:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmLowerBoundAndedAccess().getTypeReferenceAssignment_1()); 
+            }
+            // InternalChartDSL.g:19428:2: ( rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 )
+            // InternalChartDSL.g:19428: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"
+    // InternalChartDSL.g:19437: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 {
+            // InternalChartDSL.g:19441:1: ( rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1 )
+            // InternalChartDSL.g:19442:2: rule__QualifiedNameWithWildcard__Group__0__Impl rule__QualifiedNameWithWildcard__Group__1
+            {
+            pushFollow(FOLLOW_137);
+            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"
+    // InternalChartDSL.g:19449:1: rule__QualifiedNameWithWildcard__Group__0__Impl : ( ruleQualifiedName ) ;
+    public final void rule__QualifiedNameWithWildcard__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19453:1: ( ( ruleQualifiedName ) )
+            // InternalChartDSL.g:19454:1: ( ruleQualifiedName )
+            {
+            // InternalChartDSL.g:19454:1: ( ruleQualifiedName )
+            // InternalChartDSL.g:19455: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"
+    // InternalChartDSL.g:19464: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 {
+            // InternalChartDSL.g:19468:1: ( rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2 )
+            // InternalChartDSL.g:19469:2: rule__QualifiedNameWithWildcard__Group__1__Impl rule__QualifiedNameWithWildcard__Group__2
+            {
+            pushFollow(FOLLOW_144);
+            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"
+    // InternalChartDSL.g:19476:1: rule__QualifiedNameWithWildcard__Group__1__Impl : ( '.' ) ;
+    public final void rule__QualifiedNameWithWildcard__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19480:1: ( ( '.' ) )
+            // InternalChartDSL.g:19481:1: ( '.' )
+            {
+            // InternalChartDSL.g:19481:1: ( '.' )
+            // InternalChartDSL.g:19482: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"
+    // InternalChartDSL.g:19491:1: rule__QualifiedNameWithWildcard__Group__2 : rule__QualifiedNameWithWildcard__Group__2__Impl ;
+    public final void rule__QualifiedNameWithWildcard__Group__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19495:1: ( rule__QualifiedNameWithWildcard__Group__2__Impl )
+            // InternalChartDSL.g:19496: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"
+    // InternalChartDSL.g:19502:1: rule__QualifiedNameWithWildcard__Group__2__Impl : ( '*' ) ;
+    public final void rule__QualifiedNameWithWildcard__Group__2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19506:1: ( ( '*' ) )
+            // InternalChartDSL.g:19507:1: ( '*' )
+            {
+            // InternalChartDSL.g:19507:1: ( '*' )
+            // InternalChartDSL.g:19508: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"
+    // InternalChartDSL.g:19518: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 {
+            // InternalChartDSL.g:19522:1: ( rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1 )
+            // InternalChartDSL.g:19523:2: rule__QualifiedNameInStaticImport__Group__0__Impl rule__QualifiedNameInStaticImport__Group__1
+            {
+            pushFollow(FOLLOW_137);
+            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"
+    // InternalChartDSL.g:19530:1: rule__QualifiedNameInStaticImport__Group__0__Impl : ( ruleValidID ) ;
+    public final void rule__QualifiedNameInStaticImport__Group__0__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19534:1: ( ( ruleValidID ) )
+            // InternalChartDSL.g:19535:1: ( ruleValidID )
+            {
+            // InternalChartDSL.g:19535:1: ( ruleValidID )
+            // InternalChartDSL.g:19536: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"
+    // InternalChartDSL.g:19545:1: rule__QualifiedNameInStaticImport__Group__1 : rule__QualifiedNameInStaticImport__Group__1__Impl ;
+    public final void rule__QualifiedNameInStaticImport__Group__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19549:1: ( rule__QualifiedNameInStaticImport__Group__1__Impl )
+            // InternalChartDSL.g:19550: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"
+    // InternalChartDSL.g:19556:1: rule__QualifiedNameInStaticImport__Group__1__Impl : ( '.' ) ;
+    public final void rule__QualifiedNameInStaticImport__Group__1__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19560:1: ( ( '.' ) )
+            // InternalChartDSL.g:19561:1: ( '.' )
+            {
+            // InternalChartDSL.g:19561:1: ( '.' )
+            // InternalChartDSL.g:19562: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__Chart__UnorderedGroup_6"
+    // InternalChartDSL.g:19572:1: rule__Chart__UnorderedGroup_6 : ( rule__Chart__UnorderedGroup_6__0 )? ;
+    public final void rule__Chart__UnorderedGroup_6() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        		getUnorderedGroupHelper().enter(grammarAccess.getChartAccess().getUnorderedGroup_6());
+        	
+        try {
+            // InternalChartDSL.g:19577:1: ( ( rule__Chart__UnorderedGroup_6__0 )? )
+            // InternalChartDSL.g:19578:2: ( rule__Chart__UnorderedGroup_6__0 )?
+            {
+            // InternalChartDSL.g:19578:2: ( rule__Chart__UnorderedGroup_6__0 )?
+            int alt158=2;
+            int LA158_0 = input.LA(1);
+
+            if ( LA158_0 == 124 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 0) ) {
+                alt158=1;
+            }
+            else if ( LA158_0 == 125 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 1) ) {
+                alt158=1;
+            }
+            switch (alt158) {
+                case 1 :
+                    // InternalChartDSL.g:0:0: rule__Chart__UnorderedGroup_6__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Chart__UnorderedGroup_6__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	getUnorderedGroupHelper().leave(grammarAccess.getChartAccess().getUnorderedGroup_6());
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__UnorderedGroup_6"
+
+
+    // $ANTLR start "rule__Chart__UnorderedGroup_6__Impl"
+    // InternalChartDSL.g:19586:1: rule__Chart__UnorderedGroup_6__Impl : ( ({...}? => ( ( ( rule__Chart__Group_6_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Chart__SelectByIdAssignment_6_1 ) ) ) ) ) ;
+    public final void rule__Chart__UnorderedGroup_6__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        		boolean selected = false;
+        	
+        try {
+            // InternalChartDSL.g:19591:1: ( ( ({...}? => ( ( ( rule__Chart__Group_6_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Chart__SelectByIdAssignment_6_1 ) ) ) ) ) )
+            // InternalChartDSL.g:19592:3: ( ({...}? => ( ( ( rule__Chart__Group_6_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Chart__SelectByIdAssignment_6_1 ) ) ) ) )
+            {
+            // InternalChartDSL.g:19592:3: ( ({...}? => ( ( ( rule__Chart__Group_6_0__0 ) ) ) ) | ({...}? => ( ( ( rule__Chart__SelectByIdAssignment_6_1 ) ) ) ) )
+            int alt159=2;
+            int LA159_0 = input.LA(1);
+
+            if ( LA159_0 == 124 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 0) ) {
+                alt159=1;
+            }
+            else if ( LA159_0 == 125 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 1) ) {
+                alt159=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 159, 0, input);
+
+                throw nvae;
+            }
+            switch (alt159) {
+                case 1 :
+                    // InternalChartDSL.g:19593:3: ({...}? => ( ( ( rule__Chart__Group_6_0__0 ) ) ) )
+                    {
+                    // InternalChartDSL.g:19593:3: ({...}? => ( ( ( rule__Chart__Group_6_0__0 ) ) ) )
+                    // InternalChartDSL.g:19594:4: {...}? => ( ( ( rule__Chart__Group_6_0__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 0) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__Chart__UnorderedGroup_6__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 0)");
+                    }
+                    // InternalChartDSL.g:19594:101: ( ( ( rule__Chart__Group_6_0__0 ) ) )
+                    // InternalChartDSL.g:19595:5: ( ( rule__Chart__Group_6_0__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getChartAccess().getUnorderedGroup_6(), 0);
+                    selected = true;
+                    // InternalChartDSL.g:19601:5: ( ( rule__Chart__Group_6_0__0 ) )
+                    // InternalChartDSL.g:19602:6: ( rule__Chart__Group_6_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartAccess().getGroup_6_0()); 
+                    }
+                    // InternalChartDSL.g:19603:6: ( rule__Chart__Group_6_0__0 )
+                    // InternalChartDSL.g:19603:7: rule__Chart__Group_6_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Chart__Group_6_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartAccess().getGroup_6_0()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:19608:3: ({...}? => ( ( ( rule__Chart__SelectByIdAssignment_6_1 ) ) ) )
+                    {
+                    // InternalChartDSL.g:19608:3: ({...}? => ( ( ( rule__Chart__SelectByIdAssignment_6_1 ) ) ) )
+                    // InternalChartDSL.g:19609:4: {...}? => ( ( ( rule__Chart__SelectByIdAssignment_6_1 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 1) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__Chart__UnorderedGroup_6__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 1)");
+                    }
+                    // InternalChartDSL.g:19609:101: ( ( ( rule__Chart__SelectByIdAssignment_6_1 ) ) )
+                    // InternalChartDSL.g:19610:5: ( ( rule__Chart__SelectByIdAssignment_6_1 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getChartAccess().getUnorderedGroup_6(), 1);
+                    selected = true;
+                    // InternalChartDSL.g:19616:5: ( ( rule__Chart__SelectByIdAssignment_6_1 ) )
+                    // InternalChartDSL.g:19617:6: ( rule__Chart__SelectByIdAssignment_6_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartAccess().getSelectByIdAssignment_6_1()); 
+                    }
+                    // InternalChartDSL.g:19618:6: ( rule__Chart__SelectByIdAssignment_6_1 )
+                    // InternalChartDSL.g:19618:7: rule__Chart__SelectByIdAssignment_6_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Chart__SelectByIdAssignment_6_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartAccess().getSelectByIdAssignment_6_1()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	if (selected)
+            		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartAccess().getUnorderedGroup_6());
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__UnorderedGroup_6__Impl"
+
+
+    // $ANTLR start "rule__Chart__UnorderedGroup_6__0"
+    // InternalChartDSL.g:19631:1: rule__Chart__UnorderedGroup_6__0 : rule__Chart__UnorderedGroup_6__Impl ( rule__Chart__UnorderedGroup_6__1 )? ;
+    public final void rule__Chart__UnorderedGroup_6__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19635:1: ( rule__Chart__UnorderedGroup_6__Impl ( rule__Chart__UnorderedGroup_6__1 )? )
+            // InternalChartDSL.g:19636:2: rule__Chart__UnorderedGroup_6__Impl ( rule__Chart__UnorderedGroup_6__1 )?
+            {
+            pushFollow(FOLLOW_145);
+            rule__Chart__UnorderedGroup_6__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalChartDSL.g:19637:2: ( rule__Chart__UnorderedGroup_6__1 )?
+            int alt160=2;
+            int LA160_0 = input.LA(1);
+
+            if ( LA160_0 == 124 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 0) ) {
+                alt160=1;
+            }
+            else if ( LA160_0 == 125 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 1) ) {
+                alt160=1;
+            }
+            switch (alt160) {
+                case 1 :
+                    // InternalChartDSL.g:0:0: rule__Chart__UnorderedGroup_6__1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__Chart__UnorderedGroup_6__1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__UnorderedGroup_6__0"
+
+
+    // $ANTLR start "rule__Chart__UnorderedGroup_6__1"
+    // InternalChartDSL.g:19643:1: rule__Chart__UnorderedGroup_6__1 : rule__Chart__UnorderedGroup_6__Impl ;
+    public final void rule__Chart__UnorderedGroup_6__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19647:1: ( rule__Chart__UnorderedGroup_6__Impl )
+            // InternalChartDSL.g:19648:2: rule__Chart__UnorderedGroup_6__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__Chart__UnorderedGroup_6__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__UnorderedGroup_6__1"
+
+
+    // $ANTLR start "rule__ChartBar__UnorderedGroup_2"
+    // InternalChartDSL.g:19655:1: rule__ChartBar__UnorderedGroup_2 : ( rule__ChartBar__UnorderedGroup_2__0 )? ;
+    public final void rule__ChartBar__UnorderedGroup_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        		getUnorderedGroupHelper().enter(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+        	
+        try {
+            // InternalChartDSL.g:19660:1: ( ( rule__ChartBar__UnorderedGroup_2__0 )? )
+            // InternalChartDSL.g:19661:2: ( rule__ChartBar__UnorderedGroup_2__0 )?
+            {
+            // InternalChartDSL.g:19661:2: ( rule__ChartBar__UnorderedGroup_2__0 )?
+            int alt161=2;
+            int LA161_0 = input.LA(1);
+
+            if ( LA161_0 == 126 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0) ) {
+                alt161=1;
+            }
+            else if ( LA161_0 == 127 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1) ) {
+                alt161=1;
+            }
+            else if ( LA161_0 == 128 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2) ) {
+                alt161=1;
+            }
+            else if ( LA161_0 == 129 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3) ) {
+                alt161=1;
+            }
+            switch (alt161) {
+                case 1 :
+                    // InternalChartDSL.g:0:0: rule__ChartBar__UnorderedGroup_2__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartBar__UnorderedGroup_2__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	getUnorderedGroupHelper().leave(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBar__UnorderedGroup_2"
+
+
+    // $ANTLR start "rule__ChartBar__UnorderedGroup_2__Impl"
+    // InternalChartDSL.g:19669:1: rule__ChartBar__UnorderedGroup_2__Impl : ( ({...}? => ( ( ( rule__ChartBar__ShadowAssignment_2_0 ) ) ) ) | ({...}? => ( ( ( rule__ChartBar__AnimatedAssignment_2_1 ) ) ) ) | ({...}? => ( ( ( rule__ChartBar__SwappedAssignment_2_2 ) ) ) ) | ({...}? => ( ( ( rule__ChartBar__StackedAssignment_2_3 ) ) ) ) ) ;
+    public final void rule__ChartBar__UnorderedGroup_2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        		boolean selected = false;
+        	
+        try {
+            // InternalChartDSL.g:19674:1: ( ( ({...}? => ( ( ( rule__ChartBar__ShadowAssignment_2_0 ) ) ) ) | ({...}? => ( ( ( rule__ChartBar__AnimatedAssignment_2_1 ) ) ) ) | ({...}? => ( ( ( rule__ChartBar__SwappedAssignment_2_2 ) ) ) ) | ({...}? => ( ( ( rule__ChartBar__StackedAssignment_2_3 ) ) ) ) ) )
+            // InternalChartDSL.g:19675:3: ( ({...}? => ( ( ( rule__ChartBar__ShadowAssignment_2_0 ) ) ) ) | ({...}? => ( ( ( rule__ChartBar__AnimatedAssignment_2_1 ) ) ) ) | ({...}? => ( ( ( rule__ChartBar__SwappedAssignment_2_2 ) ) ) ) | ({...}? => ( ( ( rule__ChartBar__StackedAssignment_2_3 ) ) ) ) )
+            {
+            // InternalChartDSL.g:19675:3: ( ({...}? => ( ( ( rule__ChartBar__ShadowAssignment_2_0 ) ) ) ) | ({...}? => ( ( ( rule__ChartBar__AnimatedAssignment_2_1 ) ) ) ) | ({...}? => ( ( ( rule__ChartBar__SwappedAssignment_2_2 ) ) ) ) | ({...}? => ( ( ( rule__ChartBar__StackedAssignment_2_3 ) ) ) ) )
+            int alt162=4;
+            int LA162_0 = input.LA(1);
+
+            if ( LA162_0 == 126 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0) ) {
+                alt162=1;
+            }
+            else if ( LA162_0 == 127 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1) ) {
+                alt162=2;
+            }
+            else if ( LA162_0 == 128 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2) ) {
+                alt162=3;
+            }
+            else if ( LA162_0 == 129 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3) ) {
+                alt162=4;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 162, 0, input);
+
+                throw nvae;
+            }
+            switch (alt162) {
+                case 1 :
+                    // InternalChartDSL.g:19676:3: ({...}? => ( ( ( rule__ChartBar__ShadowAssignment_2_0 ) ) ) )
+                    {
+                    // InternalChartDSL.g:19676:3: ({...}? => ( ( ( rule__ChartBar__ShadowAssignment_2_0 ) ) ) )
+                    // InternalChartDSL.g:19677:4: {...}? => ( ( ( rule__ChartBar__ShadowAssignment_2_0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__ChartBar__UnorderedGroup_2__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0)");
+                    }
+                    // InternalChartDSL.g:19677:104: ( ( ( rule__ChartBar__ShadowAssignment_2_0 ) ) )
+                    // InternalChartDSL.g:19678:5: ( ( rule__ChartBar__ShadowAssignment_2_0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0);
+                    selected = true;
+                    // InternalChartDSL.g:19684:5: ( ( rule__ChartBar__ShadowAssignment_2_0 ) )
+                    // InternalChartDSL.g:19685:6: ( rule__ChartBar__ShadowAssignment_2_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartBarAccess().getShadowAssignment_2_0()); 
+                    }
+                    // InternalChartDSL.g:19686:6: ( rule__ChartBar__ShadowAssignment_2_0 )
+                    // InternalChartDSL.g:19686:7: rule__ChartBar__ShadowAssignment_2_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartBar__ShadowAssignment_2_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartBarAccess().getShadowAssignment_2_0()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:19691:3: ({...}? => ( ( ( rule__ChartBar__AnimatedAssignment_2_1 ) ) ) )
+                    {
+                    // InternalChartDSL.g:19691:3: ({...}? => ( ( ( rule__ChartBar__AnimatedAssignment_2_1 ) ) ) )
+                    // InternalChartDSL.g:19692:4: {...}? => ( ( ( rule__ChartBar__AnimatedAssignment_2_1 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__ChartBar__UnorderedGroup_2__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1)");
+                    }
+                    // InternalChartDSL.g:19692:104: ( ( ( rule__ChartBar__AnimatedAssignment_2_1 ) ) )
+                    // InternalChartDSL.g:19693:5: ( ( rule__ChartBar__AnimatedAssignment_2_1 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1);
+                    selected = true;
+                    // InternalChartDSL.g:19699:5: ( ( rule__ChartBar__AnimatedAssignment_2_1 ) )
+                    // InternalChartDSL.g:19700:6: ( rule__ChartBar__AnimatedAssignment_2_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartBarAccess().getAnimatedAssignment_2_1()); 
+                    }
+                    // InternalChartDSL.g:19701:6: ( rule__ChartBar__AnimatedAssignment_2_1 )
+                    // InternalChartDSL.g:19701:7: rule__ChartBar__AnimatedAssignment_2_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartBar__AnimatedAssignment_2_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartBarAccess().getAnimatedAssignment_2_1()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalChartDSL.g:19706:3: ({...}? => ( ( ( rule__ChartBar__SwappedAssignment_2_2 ) ) ) )
+                    {
+                    // InternalChartDSL.g:19706:3: ({...}? => ( ( ( rule__ChartBar__SwappedAssignment_2_2 ) ) ) )
+                    // InternalChartDSL.g:19707:4: {...}? => ( ( ( rule__ChartBar__SwappedAssignment_2_2 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__ChartBar__UnorderedGroup_2__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2)");
+                    }
+                    // InternalChartDSL.g:19707:104: ( ( ( rule__ChartBar__SwappedAssignment_2_2 ) ) )
+                    // InternalChartDSL.g:19708:5: ( ( rule__ChartBar__SwappedAssignment_2_2 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2);
+                    selected = true;
+                    // InternalChartDSL.g:19714:5: ( ( rule__ChartBar__SwappedAssignment_2_2 ) )
+                    // InternalChartDSL.g:19715:6: ( rule__ChartBar__SwappedAssignment_2_2 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartBarAccess().getSwappedAssignment_2_2()); 
+                    }
+                    // InternalChartDSL.g:19716:6: ( rule__ChartBar__SwappedAssignment_2_2 )
+                    // InternalChartDSL.g:19716:7: rule__ChartBar__SwappedAssignment_2_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartBar__SwappedAssignment_2_2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartBarAccess().getSwappedAssignment_2_2()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalChartDSL.g:19721:3: ({...}? => ( ( ( rule__ChartBar__StackedAssignment_2_3 ) ) ) )
+                    {
+                    // InternalChartDSL.g:19721:3: ({...}? => ( ( ( rule__ChartBar__StackedAssignment_2_3 ) ) ) )
+                    // InternalChartDSL.g:19722:4: {...}? => ( ( ( rule__ChartBar__StackedAssignment_2_3 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__ChartBar__UnorderedGroup_2__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3)");
+                    }
+                    // InternalChartDSL.g:19722:104: ( ( ( rule__ChartBar__StackedAssignment_2_3 ) ) )
+                    // InternalChartDSL.g:19723:5: ( ( rule__ChartBar__StackedAssignment_2_3 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3);
+                    selected = true;
+                    // InternalChartDSL.g:19729:5: ( ( rule__ChartBar__StackedAssignment_2_3 ) )
+                    // InternalChartDSL.g:19730:6: ( rule__ChartBar__StackedAssignment_2_3 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartBarAccess().getStackedAssignment_2_3()); 
+                    }
+                    // InternalChartDSL.g:19731:6: ( rule__ChartBar__StackedAssignment_2_3 )
+                    // InternalChartDSL.g:19731:7: rule__ChartBar__StackedAssignment_2_3
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartBar__StackedAssignment_2_3();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartBarAccess().getStackedAssignment_2_3()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	if (selected)
+            		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBar__UnorderedGroup_2__Impl"
+
+
+    // $ANTLR start "rule__ChartBar__UnorderedGroup_2__0"
+    // InternalChartDSL.g:19744:1: rule__ChartBar__UnorderedGroup_2__0 : rule__ChartBar__UnorderedGroup_2__Impl ( rule__ChartBar__UnorderedGroup_2__1 )? ;
+    public final void rule__ChartBar__UnorderedGroup_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19748:1: ( rule__ChartBar__UnorderedGroup_2__Impl ( rule__ChartBar__UnorderedGroup_2__1 )? )
+            // InternalChartDSL.g:19749:2: rule__ChartBar__UnorderedGroup_2__Impl ( rule__ChartBar__UnorderedGroup_2__1 )?
+            {
+            pushFollow(FOLLOW_146);
+            rule__ChartBar__UnorderedGroup_2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalChartDSL.g:19750:2: ( rule__ChartBar__UnorderedGroup_2__1 )?
+            int alt163=2;
+            int LA163_0 = input.LA(1);
+
+            if ( LA163_0 == 126 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0) ) {
+                alt163=1;
+            }
+            else if ( LA163_0 == 127 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1) ) {
+                alt163=1;
+            }
+            else if ( LA163_0 == 128 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2) ) {
+                alt163=1;
+            }
+            else if ( LA163_0 == 129 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3) ) {
+                alt163=1;
+            }
+            switch (alt163) {
+                case 1 :
+                    // InternalChartDSL.g:0:0: rule__ChartBar__UnorderedGroup_2__1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartBar__UnorderedGroup_2__1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBar__UnorderedGroup_2__0"
+
+
+    // $ANTLR start "rule__ChartBar__UnorderedGroup_2__1"
+    // InternalChartDSL.g:19756:1: rule__ChartBar__UnorderedGroup_2__1 : rule__ChartBar__UnorderedGroup_2__Impl ( rule__ChartBar__UnorderedGroup_2__2 )? ;
+    public final void rule__ChartBar__UnorderedGroup_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19760:1: ( rule__ChartBar__UnorderedGroup_2__Impl ( rule__ChartBar__UnorderedGroup_2__2 )? )
+            // InternalChartDSL.g:19761:2: rule__ChartBar__UnorderedGroup_2__Impl ( rule__ChartBar__UnorderedGroup_2__2 )?
+            {
+            pushFollow(FOLLOW_146);
+            rule__ChartBar__UnorderedGroup_2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalChartDSL.g:19762:2: ( rule__ChartBar__UnorderedGroup_2__2 )?
+            int alt164=2;
+            int LA164_0 = input.LA(1);
+
+            if ( LA164_0 == 126 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0) ) {
+                alt164=1;
+            }
+            else if ( LA164_0 == 127 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1) ) {
+                alt164=1;
+            }
+            else if ( LA164_0 == 128 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2) ) {
+                alt164=1;
+            }
+            else if ( LA164_0 == 129 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3) ) {
+                alt164=1;
+            }
+            switch (alt164) {
+                case 1 :
+                    // InternalChartDSL.g:0:0: rule__ChartBar__UnorderedGroup_2__2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartBar__UnorderedGroup_2__2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBar__UnorderedGroup_2__1"
+
+
+    // $ANTLR start "rule__ChartBar__UnorderedGroup_2__2"
+    // InternalChartDSL.g:19768:1: rule__ChartBar__UnorderedGroup_2__2 : rule__ChartBar__UnorderedGroup_2__Impl ( rule__ChartBar__UnorderedGroup_2__3 )? ;
+    public final void rule__ChartBar__UnorderedGroup_2__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19772:1: ( rule__ChartBar__UnorderedGroup_2__Impl ( rule__ChartBar__UnorderedGroup_2__3 )? )
+            // InternalChartDSL.g:19773:2: rule__ChartBar__UnorderedGroup_2__Impl ( rule__ChartBar__UnorderedGroup_2__3 )?
+            {
+            pushFollow(FOLLOW_146);
+            rule__ChartBar__UnorderedGroup_2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalChartDSL.g:19774:2: ( rule__ChartBar__UnorderedGroup_2__3 )?
+            int alt165=2;
+            int LA165_0 = input.LA(1);
+
+            if ( LA165_0 == 126 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0) ) {
+                alt165=1;
+            }
+            else if ( LA165_0 == 127 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1) ) {
+                alt165=1;
+            }
+            else if ( LA165_0 == 128 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2) ) {
+                alt165=1;
+            }
+            else if ( LA165_0 == 129 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3) ) {
+                alt165=1;
+            }
+            switch (alt165) {
+                case 1 :
+                    // InternalChartDSL.g:0:0: rule__ChartBar__UnorderedGroup_2__3
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartBar__UnorderedGroup_2__3();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBar__UnorderedGroup_2__2"
+
+
+    // $ANTLR start "rule__ChartBar__UnorderedGroup_2__3"
+    // InternalChartDSL.g:19780:1: rule__ChartBar__UnorderedGroup_2__3 : rule__ChartBar__UnorderedGroup_2__Impl ;
+    public final void rule__ChartBar__UnorderedGroup_2__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19784:1: ( rule__ChartBar__UnorderedGroup_2__Impl )
+            // InternalChartDSL.g:19785:2: rule__ChartBar__UnorderedGroup_2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartBar__UnorderedGroup_2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBar__UnorderedGroup_2__3"
+
+
+    // $ANTLR start "rule__ChartLine__UnorderedGroup_2"
+    // InternalChartDSL.g:19792:1: rule__ChartLine__UnorderedGroup_2 : ( rule__ChartLine__UnorderedGroup_2__0 )? ;
+    public final void rule__ChartLine__UnorderedGroup_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        		getUnorderedGroupHelper().enter(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+        	
+        try {
+            // InternalChartDSL.g:19797:1: ( ( rule__ChartLine__UnorderedGroup_2__0 )? )
+            // InternalChartDSL.g:19798:2: ( rule__ChartLine__UnorderedGroup_2__0 )?
+            {
+            // InternalChartDSL.g:19798:2: ( rule__ChartLine__UnorderedGroup_2__0 )?
+            int alt166=2;
+            int LA166_0 = input.LA(1);
+
+            if ( LA166_0 == 127 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0) ) {
+                alt166=1;
+            }
+            else if ( LA166_0 == 130 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1) ) {
+                alt166=1;
+            }
+            else if ( LA166_0 == 131 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2) ) {
+                alt166=1;
+            }
+            else if ( LA166_0 == 132 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3) ) {
+                alt166=1;
+            }
+            else if ( LA166_0 == 134 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4) ) {
+                alt166=1;
+            }
+            else if ( LA166_0 == 135 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5) ) {
+                alt166=1;
+            }
+            switch (alt166) {
+                case 1 :
+                    // InternalChartDSL.g:0:0: rule__ChartLine__UnorderedGroup_2__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartLine__UnorderedGroup_2__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	getUnorderedGroupHelper().leave(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__UnorderedGroup_2"
+
+
+    // $ANTLR start "rule__ChartLine__UnorderedGroup_2__Impl"
+    // InternalChartDSL.g:19806:1: rule__ChartLine__UnorderedGroup_2__Impl : ( ({...}? => ( ( ( rule__ChartLine__AnimatedAssignment_2_0 ) ) ) ) | ({...}? => ( ( ( rule__ChartLine__ShowMarkerAssignment_2_1 ) ) ) ) | ({...}? => ( ( ( rule__ChartLine__TrendLineAssignment_2_2 ) ) ) ) | ({...}? => ( ( ( rule__ChartLine__Group_2_3__0 ) ) ) ) | ({...}? => ( ( ( rule__ChartLine__FillToZeroAssignment_2_4 ) ) ) ) | ({...}? => ( ( ( rule__ChartLine__FillAreaAssignment_2_5 ) ) ) ) ) ;
+    public final void rule__ChartLine__UnorderedGroup_2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        		boolean selected = false;
+        	
+        try {
+            // InternalChartDSL.g:19811:1: ( ( ({...}? => ( ( ( rule__ChartLine__AnimatedAssignment_2_0 ) ) ) ) | ({...}? => ( ( ( rule__ChartLine__ShowMarkerAssignment_2_1 ) ) ) ) | ({...}? => ( ( ( rule__ChartLine__TrendLineAssignment_2_2 ) ) ) ) | ({...}? => ( ( ( rule__ChartLine__Group_2_3__0 ) ) ) ) | ({...}? => ( ( ( rule__ChartLine__FillToZeroAssignment_2_4 ) ) ) ) | ({...}? => ( ( ( rule__ChartLine__FillAreaAssignment_2_5 ) ) ) ) ) )
+            // InternalChartDSL.g:19812:3: ( ({...}? => ( ( ( rule__ChartLine__AnimatedAssignment_2_0 ) ) ) ) | ({...}? => ( ( ( rule__ChartLine__ShowMarkerAssignment_2_1 ) ) ) ) | ({...}? => ( ( ( rule__ChartLine__TrendLineAssignment_2_2 ) ) ) ) | ({...}? => ( ( ( rule__ChartLine__Group_2_3__0 ) ) ) ) | ({...}? => ( ( ( rule__ChartLine__FillToZeroAssignment_2_4 ) ) ) ) | ({...}? => ( ( ( rule__ChartLine__FillAreaAssignment_2_5 ) ) ) ) )
+            {
+            // InternalChartDSL.g:19812:3: ( ({...}? => ( ( ( rule__ChartLine__AnimatedAssignment_2_0 ) ) ) ) | ({...}? => ( ( ( rule__ChartLine__ShowMarkerAssignment_2_1 ) ) ) ) | ({...}? => ( ( ( rule__ChartLine__TrendLineAssignment_2_2 ) ) ) ) | ({...}? => ( ( ( rule__ChartLine__Group_2_3__0 ) ) ) ) | ({...}? => ( ( ( rule__ChartLine__FillToZeroAssignment_2_4 ) ) ) ) | ({...}? => ( ( ( rule__ChartLine__FillAreaAssignment_2_5 ) ) ) ) )
+            int alt167=6;
+            int LA167_0 = input.LA(1);
+
+            if ( LA167_0 == 127 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0) ) {
+                alt167=1;
+            }
+            else if ( LA167_0 == 130 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1) ) {
+                alt167=2;
+            }
+            else if ( LA167_0 == 131 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2) ) {
+                alt167=3;
+            }
+            else if ( LA167_0 == 132 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3) ) {
+                alt167=4;
+            }
+            else if ( LA167_0 == 134 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4) ) {
+                alt167=5;
+            }
+            else if ( LA167_0 == 135 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5) ) {
+                alt167=6;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 167, 0, input);
+
+                throw nvae;
+            }
+            switch (alt167) {
+                case 1 :
+                    // InternalChartDSL.g:19813:3: ({...}? => ( ( ( rule__ChartLine__AnimatedAssignment_2_0 ) ) ) )
+                    {
+                    // InternalChartDSL.g:19813:3: ({...}? => ( ( ( rule__ChartLine__AnimatedAssignment_2_0 ) ) ) )
+                    // InternalChartDSL.g:19814:4: {...}? => ( ( ( rule__ChartLine__AnimatedAssignment_2_0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__ChartLine__UnorderedGroup_2__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0)");
+                    }
+                    // InternalChartDSL.g:19814:105: ( ( ( rule__ChartLine__AnimatedAssignment_2_0 ) ) )
+                    // InternalChartDSL.g:19815:5: ( ( rule__ChartLine__AnimatedAssignment_2_0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0);
+                    selected = true;
+                    // InternalChartDSL.g:19821:5: ( ( rule__ChartLine__AnimatedAssignment_2_0 ) )
+                    // InternalChartDSL.g:19822:6: ( rule__ChartLine__AnimatedAssignment_2_0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartLineAccess().getAnimatedAssignment_2_0()); 
+                    }
+                    // InternalChartDSL.g:19823:6: ( rule__ChartLine__AnimatedAssignment_2_0 )
+                    // InternalChartDSL.g:19823:7: rule__ChartLine__AnimatedAssignment_2_0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartLine__AnimatedAssignment_2_0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartLineAccess().getAnimatedAssignment_2_0()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:19828:3: ({...}? => ( ( ( rule__ChartLine__ShowMarkerAssignment_2_1 ) ) ) )
+                    {
+                    // InternalChartDSL.g:19828:3: ({...}? => ( ( ( rule__ChartLine__ShowMarkerAssignment_2_1 ) ) ) )
+                    // InternalChartDSL.g:19829:4: {...}? => ( ( ( rule__ChartLine__ShowMarkerAssignment_2_1 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__ChartLine__UnorderedGroup_2__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1)");
+                    }
+                    // InternalChartDSL.g:19829:105: ( ( ( rule__ChartLine__ShowMarkerAssignment_2_1 ) ) )
+                    // InternalChartDSL.g:19830:5: ( ( rule__ChartLine__ShowMarkerAssignment_2_1 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1);
+                    selected = true;
+                    // InternalChartDSL.g:19836:5: ( ( rule__ChartLine__ShowMarkerAssignment_2_1 ) )
+                    // InternalChartDSL.g:19837:6: ( rule__ChartLine__ShowMarkerAssignment_2_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartLineAccess().getShowMarkerAssignment_2_1()); 
+                    }
+                    // InternalChartDSL.g:19838:6: ( rule__ChartLine__ShowMarkerAssignment_2_1 )
+                    // InternalChartDSL.g:19838:7: rule__ChartLine__ShowMarkerAssignment_2_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartLine__ShowMarkerAssignment_2_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartLineAccess().getShowMarkerAssignment_2_1()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalChartDSL.g:19843:3: ({...}? => ( ( ( rule__ChartLine__TrendLineAssignment_2_2 ) ) ) )
+                    {
+                    // InternalChartDSL.g:19843:3: ({...}? => ( ( ( rule__ChartLine__TrendLineAssignment_2_2 ) ) ) )
+                    // InternalChartDSL.g:19844:4: {...}? => ( ( ( rule__ChartLine__TrendLineAssignment_2_2 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__ChartLine__UnorderedGroup_2__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2)");
+                    }
+                    // InternalChartDSL.g:19844:105: ( ( ( rule__ChartLine__TrendLineAssignment_2_2 ) ) )
+                    // InternalChartDSL.g:19845:5: ( ( rule__ChartLine__TrendLineAssignment_2_2 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2);
+                    selected = true;
+                    // InternalChartDSL.g:19851:5: ( ( rule__ChartLine__TrendLineAssignment_2_2 ) )
+                    // InternalChartDSL.g:19852:6: ( rule__ChartLine__TrendLineAssignment_2_2 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartLineAccess().getTrendLineAssignment_2_2()); 
+                    }
+                    // InternalChartDSL.g:19853:6: ( rule__ChartLine__TrendLineAssignment_2_2 )
+                    // InternalChartDSL.g:19853:7: rule__ChartLine__TrendLineAssignment_2_2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartLine__TrendLineAssignment_2_2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartLineAccess().getTrendLineAssignment_2_2()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalChartDSL.g:19858:3: ({...}? => ( ( ( rule__ChartLine__Group_2_3__0 ) ) ) )
+                    {
+                    // InternalChartDSL.g:19858:3: ({...}? => ( ( ( rule__ChartLine__Group_2_3__0 ) ) ) )
+                    // InternalChartDSL.g:19859:4: {...}? => ( ( ( rule__ChartLine__Group_2_3__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__ChartLine__UnorderedGroup_2__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3)");
+                    }
+                    // InternalChartDSL.g:19859:105: ( ( ( rule__ChartLine__Group_2_3__0 ) ) )
+                    // InternalChartDSL.g:19860:5: ( ( rule__ChartLine__Group_2_3__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3);
+                    selected = true;
+                    // InternalChartDSL.g:19866:5: ( ( rule__ChartLine__Group_2_3__0 ) )
+                    // InternalChartDSL.g:19867:6: ( rule__ChartLine__Group_2_3__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartLineAccess().getGroup_2_3()); 
+                    }
+                    // InternalChartDSL.g:19868:6: ( rule__ChartLine__Group_2_3__0 )
+                    // InternalChartDSL.g:19868:7: rule__ChartLine__Group_2_3__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartLine__Group_2_3__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartLineAccess().getGroup_2_3()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalChartDSL.g:19873:3: ({...}? => ( ( ( rule__ChartLine__FillToZeroAssignment_2_4 ) ) ) )
+                    {
+                    // InternalChartDSL.g:19873:3: ({...}? => ( ( ( rule__ChartLine__FillToZeroAssignment_2_4 ) ) ) )
+                    // InternalChartDSL.g:19874:4: {...}? => ( ( ( rule__ChartLine__FillToZeroAssignment_2_4 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__ChartLine__UnorderedGroup_2__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4)");
+                    }
+                    // InternalChartDSL.g:19874:105: ( ( ( rule__ChartLine__FillToZeroAssignment_2_4 ) ) )
+                    // InternalChartDSL.g:19875:5: ( ( rule__ChartLine__FillToZeroAssignment_2_4 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4);
+                    selected = true;
+                    // InternalChartDSL.g:19881:5: ( ( rule__ChartLine__FillToZeroAssignment_2_4 ) )
+                    // InternalChartDSL.g:19882:6: ( rule__ChartLine__FillToZeroAssignment_2_4 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartLineAccess().getFillToZeroAssignment_2_4()); 
+                    }
+                    // InternalChartDSL.g:19883:6: ( rule__ChartLine__FillToZeroAssignment_2_4 )
+                    // InternalChartDSL.g:19883:7: rule__ChartLine__FillToZeroAssignment_2_4
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartLine__FillToZeroAssignment_2_4();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartLineAccess().getFillToZeroAssignment_2_4()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalChartDSL.g:19888:3: ({...}? => ( ( ( rule__ChartLine__FillAreaAssignment_2_5 ) ) ) )
+                    {
+                    // InternalChartDSL.g:19888:3: ({...}? => ( ( ( rule__ChartLine__FillAreaAssignment_2_5 ) ) ) )
+                    // InternalChartDSL.g:19889:4: {...}? => ( ( ( rule__ChartLine__FillAreaAssignment_2_5 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__ChartLine__UnorderedGroup_2__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5)");
+                    }
+                    // InternalChartDSL.g:19889:105: ( ( ( rule__ChartLine__FillAreaAssignment_2_5 ) ) )
+                    // InternalChartDSL.g:19890:5: ( ( rule__ChartLine__FillAreaAssignment_2_5 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5);
+                    selected = true;
+                    // InternalChartDSL.g:19896:5: ( ( rule__ChartLine__FillAreaAssignment_2_5 ) )
+                    // InternalChartDSL.g:19897:6: ( rule__ChartLine__FillAreaAssignment_2_5 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartLineAccess().getFillAreaAssignment_2_5()); 
+                    }
+                    // InternalChartDSL.g:19898:6: ( rule__ChartLine__FillAreaAssignment_2_5 )
+                    // InternalChartDSL.g:19898:7: rule__ChartLine__FillAreaAssignment_2_5
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartLine__FillAreaAssignment_2_5();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartLineAccess().getFillAreaAssignment_2_5()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	if (selected)
+            		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__UnorderedGroup_2__Impl"
+
+
+    // $ANTLR start "rule__ChartLine__UnorderedGroup_2__0"
+    // InternalChartDSL.g:19911:1: rule__ChartLine__UnorderedGroup_2__0 : rule__ChartLine__UnorderedGroup_2__Impl ( rule__ChartLine__UnorderedGroup_2__1 )? ;
+    public final void rule__ChartLine__UnorderedGroup_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19915:1: ( rule__ChartLine__UnorderedGroup_2__Impl ( rule__ChartLine__UnorderedGroup_2__1 )? )
+            // InternalChartDSL.g:19916:2: rule__ChartLine__UnorderedGroup_2__Impl ( rule__ChartLine__UnorderedGroup_2__1 )?
+            {
+            pushFollow(FOLLOW_147);
+            rule__ChartLine__UnorderedGroup_2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalChartDSL.g:19917:2: ( rule__ChartLine__UnorderedGroup_2__1 )?
+            int alt168=2;
+            int LA168_0 = input.LA(1);
+
+            if ( LA168_0 == 127 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0) ) {
+                alt168=1;
+            }
+            else if ( LA168_0 == 130 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1) ) {
+                alt168=1;
+            }
+            else if ( LA168_0 == 131 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2) ) {
+                alt168=1;
+            }
+            else if ( LA168_0 == 132 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3) ) {
+                alt168=1;
+            }
+            else if ( LA168_0 == 134 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4) ) {
+                alt168=1;
+            }
+            else if ( LA168_0 == 135 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5) ) {
+                alt168=1;
+            }
+            switch (alt168) {
+                case 1 :
+                    // InternalChartDSL.g:0:0: rule__ChartLine__UnorderedGroup_2__1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartLine__UnorderedGroup_2__1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__UnorderedGroup_2__0"
+
+
+    // $ANTLR start "rule__ChartLine__UnorderedGroup_2__1"
+    // InternalChartDSL.g:19923:1: rule__ChartLine__UnorderedGroup_2__1 : rule__ChartLine__UnorderedGroup_2__Impl ( rule__ChartLine__UnorderedGroup_2__2 )? ;
+    public final void rule__ChartLine__UnorderedGroup_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19927:1: ( rule__ChartLine__UnorderedGroup_2__Impl ( rule__ChartLine__UnorderedGroup_2__2 )? )
+            // InternalChartDSL.g:19928:2: rule__ChartLine__UnorderedGroup_2__Impl ( rule__ChartLine__UnorderedGroup_2__2 )?
+            {
+            pushFollow(FOLLOW_147);
+            rule__ChartLine__UnorderedGroup_2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalChartDSL.g:19929:2: ( rule__ChartLine__UnorderedGroup_2__2 )?
+            int alt169=2;
+            int LA169_0 = input.LA(1);
+
+            if ( LA169_0 == 127 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0) ) {
+                alt169=1;
+            }
+            else if ( LA169_0 == 130 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1) ) {
+                alt169=1;
+            }
+            else if ( LA169_0 == 131 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2) ) {
+                alt169=1;
+            }
+            else if ( LA169_0 == 132 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3) ) {
+                alt169=1;
+            }
+            else if ( LA169_0 == 134 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4) ) {
+                alt169=1;
+            }
+            else if ( LA169_0 == 135 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5) ) {
+                alt169=1;
+            }
+            switch (alt169) {
+                case 1 :
+                    // InternalChartDSL.g:0:0: rule__ChartLine__UnorderedGroup_2__2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartLine__UnorderedGroup_2__2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__UnorderedGroup_2__1"
+
+
+    // $ANTLR start "rule__ChartLine__UnorderedGroup_2__2"
+    // InternalChartDSL.g:19935:1: rule__ChartLine__UnorderedGroup_2__2 : rule__ChartLine__UnorderedGroup_2__Impl ( rule__ChartLine__UnorderedGroup_2__3 )? ;
+    public final void rule__ChartLine__UnorderedGroup_2__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19939:1: ( rule__ChartLine__UnorderedGroup_2__Impl ( rule__ChartLine__UnorderedGroup_2__3 )? )
+            // InternalChartDSL.g:19940:2: rule__ChartLine__UnorderedGroup_2__Impl ( rule__ChartLine__UnorderedGroup_2__3 )?
+            {
+            pushFollow(FOLLOW_147);
+            rule__ChartLine__UnorderedGroup_2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalChartDSL.g:19941:2: ( rule__ChartLine__UnorderedGroup_2__3 )?
+            int alt170=2;
+            int LA170_0 = input.LA(1);
+
+            if ( LA170_0 == 127 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0) ) {
+                alt170=1;
+            }
+            else if ( LA170_0 == 130 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1) ) {
+                alt170=1;
+            }
+            else if ( LA170_0 == 131 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2) ) {
+                alt170=1;
+            }
+            else if ( LA170_0 == 132 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3) ) {
+                alt170=1;
+            }
+            else if ( LA170_0 == 134 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4) ) {
+                alt170=1;
+            }
+            else if ( LA170_0 == 135 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5) ) {
+                alt170=1;
+            }
+            switch (alt170) {
+                case 1 :
+                    // InternalChartDSL.g:0:0: rule__ChartLine__UnorderedGroup_2__3
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartLine__UnorderedGroup_2__3();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__UnorderedGroup_2__2"
+
+
+    // $ANTLR start "rule__ChartLine__UnorderedGroup_2__3"
+    // InternalChartDSL.g:19947:1: rule__ChartLine__UnorderedGroup_2__3 : rule__ChartLine__UnorderedGroup_2__Impl ( rule__ChartLine__UnorderedGroup_2__4 )? ;
+    public final void rule__ChartLine__UnorderedGroup_2__3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19951:1: ( rule__ChartLine__UnorderedGroup_2__Impl ( rule__ChartLine__UnorderedGroup_2__4 )? )
+            // InternalChartDSL.g:19952:2: rule__ChartLine__UnorderedGroup_2__Impl ( rule__ChartLine__UnorderedGroup_2__4 )?
+            {
+            pushFollow(FOLLOW_147);
+            rule__ChartLine__UnorderedGroup_2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalChartDSL.g:19953:2: ( rule__ChartLine__UnorderedGroup_2__4 )?
+            int alt171=2;
+            int LA171_0 = input.LA(1);
+
+            if ( LA171_0 == 127 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0) ) {
+                alt171=1;
+            }
+            else if ( LA171_0 == 130 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1) ) {
+                alt171=1;
+            }
+            else if ( LA171_0 == 131 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2) ) {
+                alt171=1;
+            }
+            else if ( LA171_0 == 132 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3) ) {
+                alt171=1;
+            }
+            else if ( LA171_0 == 134 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4) ) {
+                alt171=1;
+            }
+            else if ( LA171_0 == 135 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5) ) {
+                alt171=1;
+            }
+            switch (alt171) {
+                case 1 :
+                    // InternalChartDSL.g:0:0: rule__ChartLine__UnorderedGroup_2__4
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartLine__UnorderedGroup_2__4();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__UnorderedGroup_2__3"
+
+
+    // $ANTLR start "rule__ChartLine__UnorderedGroup_2__4"
+    // InternalChartDSL.g:19959:1: rule__ChartLine__UnorderedGroup_2__4 : rule__ChartLine__UnorderedGroup_2__Impl ( rule__ChartLine__UnorderedGroup_2__5 )? ;
+    public final void rule__ChartLine__UnorderedGroup_2__4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19963:1: ( rule__ChartLine__UnorderedGroup_2__Impl ( rule__ChartLine__UnorderedGroup_2__5 )? )
+            // InternalChartDSL.g:19964:2: rule__ChartLine__UnorderedGroup_2__Impl ( rule__ChartLine__UnorderedGroup_2__5 )?
+            {
+            pushFollow(FOLLOW_147);
+            rule__ChartLine__UnorderedGroup_2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalChartDSL.g:19965:2: ( rule__ChartLine__UnorderedGroup_2__5 )?
+            int alt172=2;
+            int LA172_0 = input.LA(1);
+
+            if ( LA172_0 == 127 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0) ) {
+                alt172=1;
+            }
+            else if ( LA172_0 == 130 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1) ) {
+                alt172=1;
+            }
+            else if ( LA172_0 == 131 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2) ) {
+                alt172=1;
+            }
+            else if ( LA172_0 == 132 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3) ) {
+                alt172=1;
+            }
+            else if ( LA172_0 == 134 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4) ) {
+                alt172=1;
+            }
+            else if ( LA172_0 == 135 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5) ) {
+                alt172=1;
+            }
+            switch (alt172) {
+                case 1 :
+                    // InternalChartDSL.g:0:0: rule__ChartLine__UnorderedGroup_2__5
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartLine__UnorderedGroup_2__5();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__UnorderedGroup_2__4"
+
+
+    // $ANTLR start "rule__ChartLine__UnorderedGroup_2__5"
+    // InternalChartDSL.g:19971:1: rule__ChartLine__UnorderedGroup_2__5 : rule__ChartLine__UnorderedGroup_2__Impl ;
+    public final void rule__ChartLine__UnorderedGroup_2__5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:19975:1: ( rule__ChartLine__UnorderedGroup_2__Impl )
+            // InternalChartDSL.g:19976:2: rule__ChartLine__UnorderedGroup_2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartLine__UnorderedGroup_2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__UnorderedGroup_2__5"
+
+
+    // $ANTLR start "rule__ChartBubble__UnorderedGroup_2"
+    // InternalChartDSL.g:19983:1: rule__ChartBubble__UnorderedGroup_2 : rule__ChartBubble__UnorderedGroup_2__0 {...}?;
+    public final void rule__ChartBubble__UnorderedGroup_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        		getUnorderedGroupHelper().enter(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
+        	
+        try {
+            // InternalChartDSL.g:19988:1: ( rule__ChartBubble__UnorderedGroup_2__0 {...}?)
+            // InternalChartDSL.g:19989:2: rule__ChartBubble__UnorderedGroup_2__0 {...}?
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartBubble__UnorderedGroup_2__0();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( ! getUnorderedGroupHelper().canLeave(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2()) ) {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                throw new FailedPredicateException(input, "rule__ChartBubble__UnorderedGroup_2", "getUnorderedGroupHelper().canLeave(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2())");
+            }
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	getUnorderedGroupHelper().leave(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBubble__UnorderedGroup_2"
+
+
+    // $ANTLR start "rule__ChartBubble__UnorderedGroup_2__Impl"
+    // InternalChartDSL.g:19997:1: rule__ChartBubble__UnorderedGroup_2__Impl : ( ({...}? => ( ( ( rule__ChartBubble__Group_2_0__0 ) ) ) ) | ({...}? => ( ( ( rule__ChartBubble__Alternatives_2_1 ) ) ) ) ) ;
+    public final void rule__ChartBubble__UnorderedGroup_2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        		boolean selected = false;
+        	
+        try {
+            // InternalChartDSL.g:20002:1: ( ( ({...}? => ( ( ( rule__ChartBubble__Group_2_0__0 ) ) ) ) | ({...}? => ( ( ( rule__ChartBubble__Alternatives_2_1 ) ) ) ) ) )
+            // InternalChartDSL.g:20003:3: ( ({...}? => ( ( ( rule__ChartBubble__Group_2_0__0 ) ) ) ) | ({...}? => ( ( ( rule__ChartBubble__Alternatives_2_1 ) ) ) ) )
+            {
+            // InternalChartDSL.g:20003:3: ( ({...}? => ( ( ( rule__ChartBubble__Group_2_0__0 ) ) ) ) | ({...}? => ( ( ( rule__ChartBubble__Alternatives_2_1 ) ) ) ) )
+            int alt173=2;
+            int LA173_0 = input.LA(1);
+
+            if ( LA173_0 == 137 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0) ) {
+                alt173=1;
+            }
+            else if ( LA173_0 >= 138 && LA173_0 <= 139 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1) ) {
+                alt173=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 173, 0, input);
+
+                throw nvae;
+            }
+            switch (alt173) {
+                case 1 :
+                    // InternalChartDSL.g:20004:3: ({...}? => ( ( ( rule__ChartBubble__Group_2_0__0 ) ) ) )
+                    {
+                    // InternalChartDSL.g:20004:3: ({...}? => ( ( ( rule__ChartBubble__Group_2_0__0 ) ) ) )
+                    // InternalChartDSL.g:20005:4: {...}? => ( ( ( rule__ChartBubble__Group_2_0__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__ChartBubble__UnorderedGroup_2__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0)");
+                    }
+                    // InternalChartDSL.g:20005:107: ( ( ( rule__ChartBubble__Group_2_0__0 ) ) )
+                    // InternalChartDSL.g:20006:5: ( ( rule__ChartBubble__Group_2_0__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0);
+                    selected = true;
+                    // InternalChartDSL.g:20012:5: ( ( rule__ChartBubble__Group_2_0__0 ) )
+                    // InternalChartDSL.g:20013:6: ( rule__ChartBubble__Group_2_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartBubbleAccess().getGroup_2_0()); 
+                    }
+                    // InternalChartDSL.g:20014:6: ( rule__ChartBubble__Group_2_0__0 )
+                    // InternalChartDSL.g:20014:7: rule__ChartBubble__Group_2_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartBubble__Group_2_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartBubbleAccess().getGroup_2_0()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:20019:3: ({...}? => ( ( ( rule__ChartBubble__Alternatives_2_1 ) ) ) )
+                    {
+                    // InternalChartDSL.g:20019:3: ({...}? => ( ( ( rule__ChartBubble__Alternatives_2_1 ) ) ) )
+                    // InternalChartDSL.g:20020:4: {...}? => ( ( ( rule__ChartBubble__Alternatives_2_1 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__ChartBubble__UnorderedGroup_2__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1)");
+                    }
+                    // InternalChartDSL.g:20020:107: ( ( ( rule__ChartBubble__Alternatives_2_1 ) ) )
+                    // InternalChartDSL.g:20021:5: ( ( rule__ChartBubble__Alternatives_2_1 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1);
+                    selected = true;
+                    // InternalChartDSL.g:20027:5: ( ( rule__ChartBubble__Alternatives_2_1 ) )
+                    // InternalChartDSL.g:20028:6: ( rule__ChartBubble__Alternatives_2_1 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartBubbleAccess().getAlternatives_2_1()); 
+                    }
+                    // InternalChartDSL.g:20029:6: ( rule__ChartBubble__Alternatives_2_1 )
+                    // InternalChartDSL.g:20029:7: rule__ChartBubble__Alternatives_2_1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartBubble__Alternatives_2_1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartBubbleAccess().getAlternatives_2_1()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	if (selected)
+            		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBubble__UnorderedGroup_2__Impl"
+
+
+    // $ANTLR start "rule__ChartBubble__UnorderedGroup_2__0"
+    // InternalChartDSL.g:20042:1: rule__ChartBubble__UnorderedGroup_2__0 : rule__ChartBubble__UnorderedGroup_2__Impl ( rule__ChartBubble__UnorderedGroup_2__1 )? ;
+    public final void rule__ChartBubble__UnorderedGroup_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20046:1: ( rule__ChartBubble__UnorderedGroup_2__Impl ( rule__ChartBubble__UnorderedGroup_2__1 )? )
+            // InternalChartDSL.g:20047:2: rule__ChartBubble__UnorderedGroup_2__Impl ( rule__ChartBubble__UnorderedGroup_2__1 )?
+            {
+            pushFollow(FOLLOW_148);
+            rule__ChartBubble__UnorderedGroup_2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalChartDSL.g:20048:2: ( rule__ChartBubble__UnorderedGroup_2__1 )?
+            int alt174=2;
+            int LA174_0 = input.LA(1);
+
+            if ( LA174_0 == 137 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0) ) {
+                alt174=1;
+            }
+            else if ( LA174_0 == 138 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1) ) {
+                alt174=1;
+            }
+            else if ( LA174_0 == 139 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1) ) {
+                alt174=1;
+            }
+            switch (alt174) {
+                case 1 :
+                    // InternalChartDSL.g:0:0: rule__ChartBubble__UnorderedGroup_2__1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartBubble__UnorderedGroup_2__1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBubble__UnorderedGroup_2__0"
+
+
+    // $ANTLR start "rule__ChartBubble__UnorderedGroup_2__1"
+    // InternalChartDSL.g:20054:1: rule__ChartBubble__UnorderedGroup_2__1 : rule__ChartBubble__UnorderedGroup_2__Impl ;
+    public final void rule__ChartBubble__UnorderedGroup_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20058:1: ( rule__ChartBubble__UnorderedGroup_2__Impl )
+            // InternalChartDSL.g:20059:2: rule__ChartBubble__UnorderedGroup_2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartBubble__UnorderedGroup_2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBubble__UnorderedGroup_2__1"
+
+
+    // $ANTLR start "rule__ChartGauge__UnorderedGroup_2"
+    // InternalChartDSL.g:20066:1: rule__ChartGauge__UnorderedGroup_2 : ( rule__ChartGauge__UnorderedGroup_2__0 )? ;
+    public final void rule__ChartGauge__UnorderedGroup_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        		getUnorderedGroupHelper().enter(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+        	
+        try {
+            // InternalChartDSL.g:20071:1: ( ( rule__ChartGauge__UnorderedGroup_2__0 )? )
+            // InternalChartDSL.g:20072:2: ( rule__ChartGauge__UnorderedGroup_2__0 )?
+            {
+            // InternalChartDSL.g:20072:2: ( rule__ChartGauge__UnorderedGroup_2__0 )?
+            int alt175=2;
+            int LA175_0 = input.LA(1);
+
+            if ( LA175_0 == 140 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0) ) {
+                alt175=1;
+            }
+            else if ( LA175_0 == 141 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1) ) {
+                alt175=1;
+            }
+            else if ( LA175_0 == 142 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2) ) {
+                alt175=1;
+            }
+            switch (alt175) {
+                case 1 :
+                    // InternalChartDSL.g:0:0: rule__ChartGauge__UnorderedGroup_2__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartGauge__UnorderedGroup_2__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	getUnorderedGroupHelper().leave(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__UnorderedGroup_2"
+
+
+    // $ANTLR start "rule__ChartGauge__UnorderedGroup_2__Impl"
+    // InternalChartDSL.g:20080:1: rule__ChartGauge__UnorderedGroup_2__Impl : ( ({...}? => ( ( ( rule__ChartGauge__Group_2_0__0 ) ) ) ) | ({...}? => ( ( ( rule__ChartGauge__Group_2_1__0 ) ) ) ) | ({...}? => ( ( ( rule__ChartGauge__Group_2_2__0 ) ) ) ) ) ;
+    public final void rule__ChartGauge__UnorderedGroup_2__Impl() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        		boolean selected = false;
+        	
+        try {
+            // InternalChartDSL.g:20085:1: ( ( ({...}? => ( ( ( rule__ChartGauge__Group_2_0__0 ) ) ) ) | ({...}? => ( ( ( rule__ChartGauge__Group_2_1__0 ) ) ) ) | ({...}? => ( ( ( rule__ChartGauge__Group_2_2__0 ) ) ) ) ) )
+            // InternalChartDSL.g:20086:3: ( ({...}? => ( ( ( rule__ChartGauge__Group_2_0__0 ) ) ) ) | ({...}? => ( ( ( rule__ChartGauge__Group_2_1__0 ) ) ) ) | ({...}? => ( ( ( rule__ChartGauge__Group_2_2__0 ) ) ) ) )
+            {
+            // InternalChartDSL.g:20086:3: ( ({...}? => ( ( ( rule__ChartGauge__Group_2_0__0 ) ) ) ) | ({...}? => ( ( ( rule__ChartGauge__Group_2_1__0 ) ) ) ) | ({...}? => ( ( ( rule__ChartGauge__Group_2_2__0 ) ) ) ) )
+            int alt176=3;
+            int LA176_0 = input.LA(1);
+
+            if ( LA176_0 == 140 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0) ) {
+                alt176=1;
+            }
+            else if ( LA176_0 == 141 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1) ) {
+                alt176=2;
+            }
+            else if ( LA176_0 == 142 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2) ) {
+                alt176=3;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return ;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 176, 0, input);
+
+                throw nvae;
+            }
+            switch (alt176) {
+                case 1 :
+                    // InternalChartDSL.g:20087:3: ({...}? => ( ( ( rule__ChartGauge__Group_2_0__0 ) ) ) )
+                    {
+                    // InternalChartDSL.g:20087:3: ({...}? => ( ( ( rule__ChartGauge__Group_2_0__0 ) ) ) )
+                    // InternalChartDSL.g:20088:4: {...}? => ( ( ( rule__ChartGauge__Group_2_0__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__ChartGauge__UnorderedGroup_2__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0)");
+                    }
+                    // InternalChartDSL.g:20088:106: ( ( ( rule__ChartGauge__Group_2_0__0 ) ) )
+                    // InternalChartDSL.g:20089:5: ( ( rule__ChartGauge__Group_2_0__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0);
+                    selected = true;
+                    // InternalChartDSL.g:20095:5: ( ( rule__ChartGauge__Group_2_0__0 ) )
+                    // InternalChartDSL.g:20096:6: ( rule__ChartGauge__Group_2_0__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartGaugeAccess().getGroup_2_0()); 
+                    }
+                    // InternalChartDSL.g:20097:6: ( rule__ChartGauge__Group_2_0__0 )
+                    // InternalChartDSL.g:20097:7: rule__ChartGauge__Group_2_0__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartGauge__Group_2_0__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartGaugeAccess().getGroup_2_0()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:20102:3: ({...}? => ( ( ( rule__ChartGauge__Group_2_1__0 ) ) ) )
+                    {
+                    // InternalChartDSL.g:20102:3: ({...}? => ( ( ( rule__ChartGauge__Group_2_1__0 ) ) ) )
+                    // InternalChartDSL.g:20103:4: {...}? => ( ( ( rule__ChartGauge__Group_2_1__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__ChartGauge__UnorderedGroup_2__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1)");
+                    }
+                    // InternalChartDSL.g:20103:106: ( ( ( rule__ChartGauge__Group_2_1__0 ) ) )
+                    // InternalChartDSL.g:20104:5: ( ( rule__ChartGauge__Group_2_1__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1);
+                    selected = true;
+                    // InternalChartDSL.g:20110:5: ( ( rule__ChartGauge__Group_2_1__0 ) )
+                    // InternalChartDSL.g:20111:6: ( rule__ChartGauge__Group_2_1__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartGaugeAccess().getGroup_2_1()); 
+                    }
+                    // InternalChartDSL.g:20112:6: ( rule__ChartGauge__Group_2_1__0 )
+                    // InternalChartDSL.g:20112:7: rule__ChartGauge__Group_2_1__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartGauge__Group_2_1__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartGaugeAccess().getGroup_2_1()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalChartDSL.g:20117:3: ({...}? => ( ( ( rule__ChartGauge__Group_2_2__0 ) ) ) )
+                    {
+                    // InternalChartDSL.g:20117:3: ({...}? => ( ( ( rule__ChartGauge__Group_2_2__0 ) ) ) )
+                    // InternalChartDSL.g:20118:4: {...}? => ( ( ( rule__ChartGauge__Group_2_2__0 ) ) )
+                    {
+                    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2) ) {
+                        if (state.backtracking>0) {state.failed=true; return ;}
+                        throw new FailedPredicateException(input, "rule__ChartGauge__UnorderedGroup_2__Impl", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2)");
+                    }
+                    // InternalChartDSL.g:20118:106: ( ( ( rule__ChartGauge__Group_2_2__0 ) ) )
+                    // InternalChartDSL.g:20119:5: ( ( rule__ChartGauge__Group_2_2__0 ) )
+                    {
+                    getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2);
+                    selected = true;
+                    // InternalChartDSL.g:20125:5: ( ( rule__ChartGauge__Group_2_2__0 ) )
+                    // InternalChartDSL.g:20126:6: ( rule__ChartGauge__Group_2_2__0 )
+                    {
+                    if ( state.backtracking==0 ) {
+                       before(grammarAccess.getChartGaugeAccess().getGroup_2_2()); 
+                    }
+                    // InternalChartDSL.g:20127:6: ( rule__ChartGauge__Group_2_2__0 )
+                    // InternalChartDSL.g:20127:7: rule__ChartGauge__Group_2_2__0
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartGauge__Group_2_2__0();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+
+                    if ( state.backtracking==0 ) {
+                       after(grammarAccess.getChartGaugeAccess().getGroup_2_2()); 
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	if (selected)
+            		getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__UnorderedGroup_2__Impl"
+
+
+    // $ANTLR start "rule__ChartGauge__UnorderedGroup_2__0"
+    // InternalChartDSL.g:20140:1: rule__ChartGauge__UnorderedGroup_2__0 : rule__ChartGauge__UnorderedGroup_2__Impl ( rule__ChartGauge__UnorderedGroup_2__1 )? ;
+    public final void rule__ChartGauge__UnorderedGroup_2__0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20144:1: ( rule__ChartGauge__UnorderedGroup_2__Impl ( rule__ChartGauge__UnorderedGroup_2__1 )? )
+            // InternalChartDSL.g:20145:2: rule__ChartGauge__UnorderedGroup_2__Impl ( rule__ChartGauge__UnorderedGroup_2__1 )?
+            {
+            pushFollow(FOLLOW_149);
+            rule__ChartGauge__UnorderedGroup_2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalChartDSL.g:20146:2: ( rule__ChartGauge__UnorderedGroup_2__1 )?
+            int alt177=2;
+            int LA177_0 = input.LA(1);
+
+            if ( LA177_0 == 140 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0) ) {
+                alt177=1;
+            }
+            else if ( LA177_0 == 141 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1) ) {
+                alt177=1;
+            }
+            else if ( LA177_0 == 142 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2) ) {
+                alt177=1;
+            }
+            switch (alt177) {
+                case 1 :
+                    // InternalChartDSL.g:0:0: rule__ChartGauge__UnorderedGroup_2__1
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartGauge__UnorderedGroup_2__1();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__UnorderedGroup_2__0"
+
+
+    // $ANTLR start "rule__ChartGauge__UnorderedGroup_2__1"
+    // InternalChartDSL.g:20152:1: rule__ChartGauge__UnorderedGroup_2__1 : rule__ChartGauge__UnorderedGroup_2__Impl ( rule__ChartGauge__UnorderedGroup_2__2 )? ;
+    public final void rule__ChartGauge__UnorderedGroup_2__1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20156:1: ( rule__ChartGauge__UnorderedGroup_2__Impl ( rule__ChartGauge__UnorderedGroup_2__2 )? )
+            // InternalChartDSL.g:20157:2: rule__ChartGauge__UnorderedGroup_2__Impl ( rule__ChartGauge__UnorderedGroup_2__2 )?
+            {
+            pushFollow(FOLLOW_149);
+            rule__ChartGauge__UnorderedGroup_2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+            // InternalChartDSL.g:20158:2: ( rule__ChartGauge__UnorderedGroup_2__2 )?
+            int alt178=2;
+            int LA178_0 = input.LA(1);
+
+            if ( LA178_0 == 140 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0) ) {
+                alt178=1;
+            }
+            else if ( LA178_0 == 141 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1) ) {
+                alt178=1;
+            }
+            else if ( LA178_0 == 142 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2) ) {
+                alt178=1;
+            }
+            switch (alt178) {
+                case 1 :
+                    // InternalChartDSL.g:0:0: rule__ChartGauge__UnorderedGroup_2__2
+                    {
+                    pushFollow(FOLLOW_2);
+                    rule__ChartGauge__UnorderedGroup_2__2();
+
+                    state._fsp--;
+                    if (state.failed) return ;
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__UnorderedGroup_2__1"
+
+
+    // $ANTLR start "rule__ChartGauge__UnorderedGroup_2__2"
+    // InternalChartDSL.g:20164:1: rule__ChartGauge__UnorderedGroup_2__2 : rule__ChartGauge__UnorderedGroup_2__Impl ;
+    public final void rule__ChartGauge__UnorderedGroup_2__2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20168:1: ( rule__ChartGauge__UnorderedGroup_2__Impl )
+            // InternalChartDSL.g:20169:2: rule__ChartGauge__UnorderedGroup_2__Impl
+            {
+            pushFollow(FOLLOW_2);
+            rule__ChartGauge__UnorderedGroup_2__Impl();
+
+            state._fsp--;
+            if (state.failed) return ;
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__UnorderedGroup_2__2"
+
+
+    // $ANTLR start "rule__ChartModel__ImportSectionAssignment_0"
+    // InternalChartDSL.g:20176:1: rule__ChartModel__ImportSectionAssignment_0 : ( ruleXImportSection ) ;
+    public final void rule__ChartModel__ImportSectionAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20180:1: ( ( ruleXImportSection ) )
+            // InternalChartDSL.g:20181:2: ( ruleXImportSection )
+            {
+            // InternalChartDSL.g:20181:2: ( ruleXImportSection )
+            // InternalChartDSL.g:20182:3: ruleXImportSection
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartModelAccess().getImportSectionXImportSectionParserRuleCall_0_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleXImportSection();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartModelAccess().getImportSectionXImportSectionParserRuleCall_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartModel__ImportSectionAssignment_0"
+
+
+    // $ANTLR start "rule__ChartModel__PackagesAssignment_1"
+    // InternalChartDSL.g:20191:1: rule__ChartModel__PackagesAssignment_1 : ( ruleChartPackage ) ;
+    public final void rule__ChartModel__PackagesAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20195:1: ( ( ruleChartPackage ) )
+            // InternalChartDSL.g:20196:2: ( ruleChartPackage )
+            {
+            // InternalChartDSL.g:20196:2: ( ruleChartPackage )
+            // InternalChartDSL.g:20197:3: ruleChartPackage
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartModelAccess().getPackagesChartPackageParserRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleChartPackage();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartModelAccess().getPackagesChartPackageParserRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartModel__PackagesAssignment_1"
+
+
+    // $ANTLR start "rule__ChartPackage__NameAssignment_2"
+    // InternalChartDSL.g:20206:1: rule__ChartPackage__NameAssignment_2 : ( ruleQualifiedName ) ;
+    public final void rule__ChartPackage__NameAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20210:1: ( ( ruleQualifiedName ) )
+            // InternalChartDSL.g:20211:2: ( ruleQualifiedName )
+            {
+            // InternalChartDSL.g:20211:2: ( ruleQualifiedName )
+            // InternalChartDSL.g:20212:3: ruleQualifiedName
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPackage__NameAssignment_2"
+
+
+    // $ANTLR start "rule__ChartPackage__ChartsAssignment_3_1"
+    // InternalChartDSL.g:20221:1: rule__ChartPackage__ChartsAssignment_3_1 : ( ruleChart ) ;
+    public final void rule__ChartPackage__ChartsAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20225:1: ( ( ruleChart ) )
+            // InternalChartDSL.g:20226:2: ( ruleChart )
+            {
+            // InternalChartDSL.g:20226:2: ( ruleChart )
+            // InternalChartDSL.g:20227:3: ruleChart
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPackageAccess().getChartsChartParserRuleCall_3_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleChart();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPackageAccess().getChartsChartParserRuleCall_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPackage__ChartsAssignment_3_1"
+
+
+    // $ANTLR start "rule__Chart__NameAssignment_2"
+    // InternalChartDSL.g:20236:1: rule__Chart__NameAssignment_2 : ( ruleTRANSLATABLEID ) ;
+    public final void rule__Chart__NameAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20240:1: ( ( ruleTRANSLATABLEID ) )
+            // InternalChartDSL.g:20241:2: ( ruleTRANSLATABLEID )
+            {
+            // InternalChartDSL.g:20241:2: ( ruleTRANSLATABLEID )
+            // InternalChartDSL.g:20242:3: ruleTRANSLATABLEID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleTRANSLATABLEID();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__NameAssignment_2"
+
+
+    // $ANTLR start "rule__Chart__DescriptionAssignment_3_0"
+    // InternalChartDSL.g:20251:1: rule__Chart__DescriptionAssignment_3_0 : ( ( 'describedBy' ) ) ;
+    public final void rule__Chart__DescriptionAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20255:1: ( ( ( 'describedBy' ) ) )
+            // InternalChartDSL.g:20256:2: ( ( 'describedBy' ) )
+            {
+            // InternalChartDSL.g:20256:2: ( ( 'describedBy' ) )
+            // InternalChartDSL.g:20257:3: ( 'describedBy' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getDescriptionDescribedByKeyword_3_0_0()); 
+            }
+            // InternalChartDSL.g:20258:3: ( 'describedBy' )
+            // InternalChartDSL.g:20259:4: 'describedBy'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getDescriptionDescribedByKeyword_3_0_0()); 
+            }
+            match(input,123,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getDescriptionDescribedByKeyword_3_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getDescriptionDescribedByKeyword_3_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__DescriptionAssignment_3_0"
+
+
+    // $ANTLR start "rule__Chart__DescriptionValueAssignment_3_1"
+    // InternalChartDSL.g:20270:1: rule__Chart__DescriptionValueAssignment_3_1 : ( ruleTRANSLATABLESTRING ) ;
+    public final void rule__Chart__DescriptionValueAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20274:1: ( ( ruleTRANSLATABLESTRING ) )
+            // InternalChartDSL.g:20275:2: ( ruleTRANSLATABLESTRING )
+            {
+            // InternalChartDSL.g:20275:2: ( ruleTRANSLATABLESTRING )
+            // InternalChartDSL.g:20276:3: ruleTRANSLATABLESTRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleTRANSLATABLESTRING();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__DescriptionValueAssignment_3_1"
+
+
+    // $ANTLR start "rule__Chart__CharttypeAssignment_5"
+    // InternalChartDSL.g:20285:1: rule__Chart__CharttypeAssignment_5 : ( ruleChartOption ) ;
+    public final void rule__Chart__CharttypeAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20289:1: ( ( ruleChartOption ) )
+            // InternalChartDSL.g:20290:2: ( ruleChartOption )
+            {
+            // InternalChartDSL.g:20290:2: ( ruleChartOption )
+            // InternalChartDSL.g:20291:3: ruleChartOption
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getCharttypeChartOptionParserRuleCall_5_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleChartOption();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getCharttypeChartOptionParserRuleCall_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__CharttypeAssignment_5"
+
+
+    // $ANTLR start "rule__Chart__PollingAssignment_6_0_0"
+    // InternalChartDSL.g:20300:1: rule__Chart__PollingAssignment_6_0_0 : ( ( 'polling' ) ) ;
+    public final void rule__Chart__PollingAssignment_6_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20304:1: ( ( ( 'polling' ) ) )
+            // InternalChartDSL.g:20305:2: ( ( 'polling' ) )
+            {
+            // InternalChartDSL.g:20305:2: ( ( 'polling' ) )
+            // InternalChartDSL.g:20306:3: ( 'polling' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getPollingPollingKeyword_6_0_0_0()); 
+            }
+            // InternalChartDSL.g:20307:3: ( 'polling' )
+            // InternalChartDSL.g:20308:4: 'polling'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getPollingPollingKeyword_6_0_0_0()); 
+            }
+            match(input,124,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getPollingPollingKeyword_6_0_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getPollingPollingKeyword_6_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__PollingAssignment_6_0_0"
+
+
+    // $ANTLR start "rule__Chart__PollingTimeAssignment_6_0_1"
+    // InternalChartDSL.g:20319:1: rule__Chart__PollingTimeAssignment_6_0_1 : ( RULE_INT ) ;
+    public final void rule__Chart__PollingTimeAssignment_6_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20323:1: ( ( RULE_INT ) )
+            // InternalChartDSL.g:20324:2: ( RULE_INT )
+            {
+            // InternalChartDSL.g:20324:2: ( RULE_INT )
+            // InternalChartDSL.g:20325:3: RULE_INT
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getPollingTimeINTTerminalRuleCall_6_0_1_0()); 
+            }
+            match(input,RULE_INT,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getPollingTimeINTTerminalRuleCall_6_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__PollingTimeAssignment_6_0_1"
+
+
+    // $ANTLR start "rule__Chart__SelectByIdAssignment_6_1"
+    // InternalChartDSL.g:20334:1: rule__Chart__SelectByIdAssignment_6_1 : ( ( 'selectById' ) ) ;
+    public final void rule__Chart__SelectByIdAssignment_6_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20338:1: ( ( ( 'selectById' ) ) )
+            // InternalChartDSL.g:20339:2: ( ( 'selectById' ) )
+            {
+            // InternalChartDSL.g:20339:2: ( ( 'selectById' ) )
+            // InternalChartDSL.g:20340:3: ( 'selectById' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getSelectByIdSelectByIdKeyword_6_1_0()); 
+            }
+            // InternalChartDSL.g:20341:3: ( 'selectById' )
+            // InternalChartDSL.g:20342:4: 'selectById'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getSelectByIdSelectByIdKeyword_6_1_0()); 
+            }
+            match(input,125,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getSelectByIdSelectByIdKeyword_6_1_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getSelectByIdSelectByIdKeyword_6_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__SelectByIdAssignment_6_1"
+
+
+    // $ANTLR start "rule__Chart__SourceAssignment_7_1"
+    // InternalChartDSL.g:20353:1: rule__Chart__SourceAssignment_7_1 : ( ruleChartDatamart ) ;
+    public final void rule__Chart__SourceAssignment_7_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20357:1: ( ( ruleChartDatamart ) )
+            // InternalChartDSL.g:20358:2: ( ruleChartDatamart )
+            {
+            // InternalChartDSL.g:20358:2: ( ruleChartDatamart )
+            // InternalChartDSL.g:20359:3: ruleChartDatamart
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAccess().getSourceChartDatamartParserRuleCall_7_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleChartDatamart();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAccess().getSourceChartDatamartParserRuleCall_7_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__Chart__SourceAssignment_7_1"
+
+
+    // $ANTLR start "rule__ChartBar__ShadowAssignment_2_0"
+    // InternalChartDSL.g:20368:1: rule__ChartBar__ShadowAssignment_2_0 : ( ( 'shaded' ) ) ;
+    public final void rule__ChartBar__ShadowAssignment_2_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20372:1: ( ( ( 'shaded' ) ) )
+            // InternalChartDSL.g:20373:2: ( ( 'shaded' ) )
+            {
+            // InternalChartDSL.g:20373:2: ( ( 'shaded' ) )
+            // InternalChartDSL.g:20374:3: ( 'shaded' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBarAccess().getShadowShadedKeyword_2_0_0()); 
+            }
+            // InternalChartDSL.g:20375:3: ( 'shaded' )
+            // InternalChartDSL.g:20376:4: 'shaded'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBarAccess().getShadowShadedKeyword_2_0_0()); 
+            }
+            match(input,126,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBarAccess().getShadowShadedKeyword_2_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBarAccess().getShadowShadedKeyword_2_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBar__ShadowAssignment_2_0"
+
+
+    // $ANTLR start "rule__ChartBar__AnimatedAssignment_2_1"
+    // InternalChartDSL.g:20387:1: rule__ChartBar__AnimatedAssignment_2_1 : ( ( 'animated' ) ) ;
+    public final void rule__ChartBar__AnimatedAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20391:1: ( ( ( 'animated' ) ) )
+            // InternalChartDSL.g:20392:2: ( ( 'animated' ) )
+            {
+            // InternalChartDSL.g:20392:2: ( ( 'animated' ) )
+            // InternalChartDSL.g:20393:3: ( 'animated' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBarAccess().getAnimatedAnimatedKeyword_2_1_0()); 
+            }
+            // InternalChartDSL.g:20394:3: ( 'animated' )
+            // InternalChartDSL.g:20395:4: 'animated'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBarAccess().getAnimatedAnimatedKeyword_2_1_0()); 
+            }
+            match(input,127,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBarAccess().getAnimatedAnimatedKeyword_2_1_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBarAccess().getAnimatedAnimatedKeyword_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBar__AnimatedAssignment_2_1"
+
+
+    // $ANTLR start "rule__ChartBar__SwappedAssignment_2_2"
+    // InternalChartDSL.g:20406:1: rule__ChartBar__SwappedAssignment_2_2 : ( ( 'swapped' ) ) ;
+    public final void rule__ChartBar__SwappedAssignment_2_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20410:1: ( ( ( 'swapped' ) ) )
+            // InternalChartDSL.g:20411:2: ( ( 'swapped' ) )
+            {
+            // InternalChartDSL.g:20411:2: ( ( 'swapped' ) )
+            // InternalChartDSL.g:20412:3: ( 'swapped' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBarAccess().getSwappedSwappedKeyword_2_2_0()); 
+            }
+            // InternalChartDSL.g:20413:3: ( 'swapped' )
+            // InternalChartDSL.g:20414:4: 'swapped'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBarAccess().getSwappedSwappedKeyword_2_2_0()); 
+            }
+            match(input,128,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBarAccess().getSwappedSwappedKeyword_2_2_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBarAccess().getSwappedSwappedKeyword_2_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBar__SwappedAssignment_2_2"
+
+
+    // $ANTLR start "rule__ChartBar__StackedAssignment_2_3"
+    // InternalChartDSL.g:20425:1: rule__ChartBar__StackedAssignment_2_3 : ( ( 'stacked' ) ) ;
+    public final void rule__ChartBar__StackedAssignment_2_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20429:1: ( ( ( 'stacked' ) ) )
+            // InternalChartDSL.g:20430:2: ( ( 'stacked' ) )
+            {
+            // InternalChartDSL.g:20430:2: ( ( 'stacked' ) )
+            // InternalChartDSL.g:20431:3: ( 'stacked' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBarAccess().getStackedStackedKeyword_2_3_0()); 
+            }
+            // InternalChartDSL.g:20432:3: ( 'stacked' )
+            // InternalChartDSL.g:20433:4: 'stacked'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBarAccess().getStackedStackedKeyword_2_3_0()); 
+            }
+            match(input,129,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBarAccess().getStackedStackedKeyword_2_3_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBarAccess().getStackedStackedKeyword_2_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBar__StackedAssignment_2_3"
+
+
+    // $ANTLR start "rule__ChartLine__AnimatedAssignment_2_0"
+    // InternalChartDSL.g:20444:1: rule__ChartLine__AnimatedAssignment_2_0 : ( ( 'animated' ) ) ;
+    public final void rule__ChartLine__AnimatedAssignment_2_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20448:1: ( ( ( 'animated' ) ) )
+            // InternalChartDSL.g:20449:2: ( ( 'animated' ) )
+            {
+            // InternalChartDSL.g:20449:2: ( ( 'animated' ) )
+            // InternalChartDSL.g:20450:3: ( 'animated' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getAnimatedAnimatedKeyword_2_0_0()); 
+            }
+            // InternalChartDSL.g:20451:3: ( 'animated' )
+            // InternalChartDSL.g:20452:4: 'animated'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getAnimatedAnimatedKeyword_2_0_0()); 
+            }
+            match(input,127,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getAnimatedAnimatedKeyword_2_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getAnimatedAnimatedKeyword_2_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__AnimatedAssignment_2_0"
+
+
+    // $ANTLR start "rule__ChartLine__ShowMarkerAssignment_2_1"
+    // InternalChartDSL.g:20463:1: rule__ChartLine__ShowMarkerAssignment_2_1 : ( ( 'showMarker' ) ) ;
+    public final void rule__ChartLine__ShowMarkerAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20467:1: ( ( ( 'showMarker' ) ) )
+            // InternalChartDSL.g:20468:2: ( ( 'showMarker' ) )
+            {
+            // InternalChartDSL.g:20468:2: ( ( 'showMarker' ) )
+            // InternalChartDSL.g:20469:3: ( 'showMarker' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getShowMarkerShowMarkerKeyword_2_1_0()); 
+            }
+            // InternalChartDSL.g:20470:3: ( 'showMarker' )
+            // InternalChartDSL.g:20471:4: 'showMarker'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getShowMarkerShowMarkerKeyword_2_1_0()); 
+            }
+            match(input,130,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getShowMarkerShowMarkerKeyword_2_1_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getShowMarkerShowMarkerKeyword_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__ShowMarkerAssignment_2_1"
+
+
+    // $ANTLR start "rule__ChartLine__TrendLineAssignment_2_2"
+    // InternalChartDSL.g:20482:1: rule__ChartLine__TrendLineAssignment_2_2 : ( ( 'trendLine' ) ) ;
+    public final void rule__ChartLine__TrendLineAssignment_2_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20486:1: ( ( ( 'trendLine' ) ) )
+            // InternalChartDSL.g:20487:2: ( ( 'trendLine' ) )
+            {
+            // InternalChartDSL.g:20487:2: ( ( 'trendLine' ) )
+            // InternalChartDSL.g:20488:3: ( 'trendLine' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getTrendLineTrendLineKeyword_2_2_0()); 
+            }
+            // InternalChartDSL.g:20489:3: ( 'trendLine' )
+            // InternalChartDSL.g:20490:4: 'trendLine'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getTrendLineTrendLineKeyword_2_2_0()); 
+            }
+            match(input,131,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getTrendLineTrendLineKeyword_2_2_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getTrendLineTrendLineKeyword_2_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__TrendLineAssignment_2_2"
+
+
+    // $ANTLR start "rule__ChartLine__CursorAssignment_2_3_0"
+    // InternalChartDSL.g:20501:1: rule__ChartLine__CursorAssignment_2_3_0 : ( ( 'cursor' ) ) ;
+    public final void rule__ChartLine__CursorAssignment_2_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20505:1: ( ( ( 'cursor' ) ) )
+            // InternalChartDSL.g:20506:2: ( ( 'cursor' ) )
+            {
+            // InternalChartDSL.g:20506:2: ( ( 'cursor' ) )
+            // InternalChartDSL.g:20507:3: ( 'cursor' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getCursorCursorKeyword_2_3_0_0()); 
+            }
+            // InternalChartDSL.g:20508:3: ( 'cursor' )
+            // InternalChartDSL.g:20509:4: 'cursor'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getCursorCursorKeyword_2_3_0_0()); 
+            }
+            match(input,132,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getCursorCursorKeyword_2_3_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getCursorCursorKeyword_2_3_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__CursorAssignment_2_3_0"
+
+
+    // $ANTLR start "rule__ChartLine__ZoomAssignment_2_3_1"
+    // InternalChartDSL.g:20520:1: rule__ChartLine__ZoomAssignment_2_3_1 : ( ( 'zoom' ) ) ;
+    public final void rule__ChartLine__ZoomAssignment_2_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20524:1: ( ( ( 'zoom' ) ) )
+            // InternalChartDSL.g:20525:2: ( ( 'zoom' ) )
+            {
+            // InternalChartDSL.g:20525:2: ( ( 'zoom' ) )
+            // InternalChartDSL.g:20526:3: ( 'zoom' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getZoomZoomKeyword_2_3_1_0()); 
+            }
+            // InternalChartDSL.g:20527:3: ( 'zoom' )
+            // InternalChartDSL.g:20528:4: 'zoom'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getZoomZoomKeyword_2_3_1_0()); 
+            }
+            match(input,133,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getZoomZoomKeyword_2_3_1_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getZoomZoomKeyword_2_3_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__ZoomAssignment_2_3_1"
+
+
+    // $ANTLR start "rule__ChartLine__TooltipAssignment_2_3_2"
+    // InternalChartDSL.g:20539:1: rule__ChartLine__TooltipAssignment_2_3_2 : ( ( 'tooltip' ) ) ;
+    public final void rule__ChartLine__TooltipAssignment_2_3_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20543:1: ( ( ( 'tooltip' ) ) )
+            // InternalChartDSL.g:20544:2: ( ( 'tooltip' ) )
+            {
+            // InternalChartDSL.g:20544:2: ( ( 'tooltip' ) )
+            // InternalChartDSL.g:20545:3: ( 'tooltip' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getTooltipTooltipKeyword_2_3_2_0()); 
+            }
+            // InternalChartDSL.g:20546:3: ( 'tooltip' )
+            // InternalChartDSL.g:20547:4: 'tooltip'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getTooltipTooltipKeyword_2_3_2_0()); 
+            }
+            match(input,89,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getTooltipTooltipKeyword_2_3_2_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getTooltipTooltipKeyword_2_3_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__TooltipAssignment_2_3_2"
+
+
+    // $ANTLR start "rule__ChartLine__FillToZeroAssignment_2_4"
+    // InternalChartDSL.g:20558:1: rule__ChartLine__FillToZeroAssignment_2_4 : ( ( 'fillZero' ) ) ;
+    public final void rule__ChartLine__FillToZeroAssignment_2_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20562:1: ( ( ( 'fillZero' ) ) )
+            // InternalChartDSL.g:20563:2: ( ( 'fillZero' ) )
+            {
+            // InternalChartDSL.g:20563:2: ( ( 'fillZero' ) )
+            // InternalChartDSL.g:20564:3: ( 'fillZero' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getFillToZeroFillZeroKeyword_2_4_0()); 
+            }
+            // InternalChartDSL.g:20565:3: ( 'fillZero' )
+            // InternalChartDSL.g:20566:4: 'fillZero'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getFillToZeroFillZeroKeyword_2_4_0()); 
+            }
+            match(input,134,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getFillToZeroFillZeroKeyword_2_4_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getFillToZeroFillZeroKeyword_2_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__FillToZeroAssignment_2_4"
+
+
+    // $ANTLR start "rule__ChartLine__FillAreaAssignment_2_5"
+    // InternalChartDSL.g:20577:1: rule__ChartLine__FillAreaAssignment_2_5 : ( ( 'filled' ) ) ;
+    public final void rule__ChartLine__FillAreaAssignment_2_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20581:1: ( ( ( 'filled' ) ) )
+            // InternalChartDSL.g:20582:2: ( ( 'filled' ) )
+            {
+            // InternalChartDSL.g:20582:2: ( ( 'filled' ) )
+            // InternalChartDSL.g:20583:3: ( 'filled' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getFillAreaFilledKeyword_2_5_0()); 
+            }
+            // InternalChartDSL.g:20584:3: ( 'filled' )
+            // InternalChartDSL.g:20585:4: 'filled'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLineAccess().getFillAreaFilledKeyword_2_5_0()); 
+            }
+            match(input,135,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getFillAreaFilledKeyword_2_5_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLineAccess().getFillAreaFilledKeyword_2_5_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLine__FillAreaAssignment_2_5"
+
+
+    // $ANTLR start "rule__ChartPie__EmptyAssignment_2"
+    // InternalChartDSL.g:20596:1: rule__ChartPie__EmptyAssignment_2 : ( ( 'empty' ) ) ;
+    public final void rule__ChartPie__EmptyAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20600:1: ( ( ( 'empty' ) ) )
+            // InternalChartDSL.g:20601:2: ( ( 'empty' ) )
+            {
+            // InternalChartDSL.g:20601:2: ( ( 'empty' ) )
+            // InternalChartDSL.g:20602:3: ( 'empty' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPieAccess().getEmptyEmptyKeyword_2_0()); 
+            }
+            // InternalChartDSL.g:20603:3: ( 'empty' )
+            // InternalChartDSL.g:20604:4: 'empty'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartPieAccess().getEmptyEmptyKeyword_2_0()); 
+            }
+            match(input,136,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPieAccess().getEmptyEmptyKeyword_2_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartPieAccess().getEmptyEmptyKeyword_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartPie__EmptyAssignment_2"
+
+
+    // $ANTLR start "rule__ChartBubble__MultiplierAssignment_2_0_0"
+    // InternalChartDSL.g:20615:1: rule__ChartBubble__MultiplierAssignment_2_0_0 : ( ( 'multiplier' ) ) ;
+    public final void rule__ChartBubble__MultiplierAssignment_2_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20619:1: ( ( ( 'multiplier' ) ) )
+            // InternalChartDSL.g:20620:2: ( ( 'multiplier' ) )
+            {
+            // InternalChartDSL.g:20620:2: ( ( 'multiplier' ) )
+            // InternalChartDSL.g:20621:3: ( 'multiplier' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBubbleAccess().getMultiplierMultiplierKeyword_2_0_0_0()); 
+            }
+            // InternalChartDSL.g:20622:3: ( 'multiplier' )
+            // InternalChartDSL.g:20623:4: 'multiplier'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBubbleAccess().getMultiplierMultiplierKeyword_2_0_0_0()); 
+            }
+            match(input,137,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBubbleAccess().getMultiplierMultiplierKeyword_2_0_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBubbleAccess().getMultiplierMultiplierKeyword_2_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBubble__MultiplierAssignment_2_0_0"
+
+
+    // $ANTLR start "rule__ChartBubble__MultiplierValueAssignment_2_0_1"
+    // InternalChartDSL.g:20634:1: rule__ChartBubble__MultiplierValueAssignment_2_0_1 : ( ruleNumber ) ;
+    public final void rule__ChartBubble__MultiplierValueAssignment_2_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20638:1: ( ( ruleNumber ) )
+            // InternalChartDSL.g:20639:2: ( ruleNumber )
+            {
+            // InternalChartDSL.g:20639:2: ( ruleNumber )
+            // InternalChartDSL.g:20640:3: ruleNumber
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBubbleAccess().getMultiplierValueNumberParserRuleCall_2_0_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleNumber();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBubbleAccess().getMultiplierValueNumberParserRuleCall_2_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBubble__MultiplierValueAssignment_2_0_1"
+
+
+    // $ANTLR start "rule__ChartBubble__GradientAssignment_2_1_0"
+    // InternalChartDSL.g:20649:1: rule__ChartBubble__GradientAssignment_2_1_0 : ( ( 'gradient' ) ) ;
+    public final void rule__ChartBubble__GradientAssignment_2_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20653:1: ( ( ( 'gradient' ) ) )
+            // InternalChartDSL.g:20654:2: ( ( 'gradient' ) )
+            {
+            // InternalChartDSL.g:20654:2: ( ( 'gradient' ) )
+            // InternalChartDSL.g:20655:3: ( 'gradient' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBubbleAccess().getGradientGradientKeyword_2_1_0_0()); 
+            }
+            // InternalChartDSL.g:20656:3: ( 'gradient' )
+            // InternalChartDSL.g:20657:4: 'gradient'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBubbleAccess().getGradientGradientKeyword_2_1_0_0()); 
+            }
+            match(input,138,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBubbleAccess().getGradientGradientKeyword_2_1_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBubbleAccess().getGradientGradientKeyword_2_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBubble__GradientAssignment_2_1_0"
+
+
+    // $ANTLR start "rule__ChartBubble__TransparentAssignment_2_1_1"
+    // InternalChartDSL.g:20668:1: rule__ChartBubble__TransparentAssignment_2_1_1 : ( ( 'transparent' ) ) ;
+    public final void rule__ChartBubble__TransparentAssignment_2_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20672:1: ( ( ( 'transparent' ) ) )
+            // InternalChartDSL.g:20673:2: ( ( 'transparent' ) )
+            {
+            // InternalChartDSL.g:20673:2: ( ( 'transparent' ) )
+            // InternalChartDSL.g:20674:3: ( 'transparent' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBubbleAccess().getTransparentTransparentKeyword_2_1_1_0()); 
+            }
+            // InternalChartDSL.g:20675:3: ( 'transparent' )
+            // InternalChartDSL.g:20676:4: 'transparent'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartBubbleAccess().getTransparentTransparentKeyword_2_1_1_0()); 
+            }
+            match(input,139,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBubbleAccess().getTransparentTransparentKeyword_2_1_1_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartBubbleAccess().getTransparentTransparentKeyword_2_1_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartBubble__TransparentAssignment_2_1_1"
+
+
+    // $ANTLR start "rule__ChartGauge__LabeledAssignment_2_0_0"
+    // InternalChartDSL.g:20687:1: rule__ChartGauge__LabeledAssignment_2_0_0 : ( ( 'label' ) ) ;
+    public final void rule__ChartGauge__LabeledAssignment_2_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20691:1: ( ( ( 'label' ) ) )
+            // InternalChartDSL.g:20692:2: ( ( 'label' ) )
+            {
+            // InternalChartDSL.g:20692:2: ( ( 'label' ) )
+            // InternalChartDSL.g:20693:3: ( 'label' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getLabeledLabelKeyword_2_0_0_0()); 
+            }
+            // InternalChartDSL.g:20694:3: ( 'label' )
+            // InternalChartDSL.g:20695:4: 'label'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getLabeledLabelKeyword_2_0_0_0()); 
+            }
+            match(input,140,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getLabeledLabelKeyword_2_0_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getLabeledLabelKeyword_2_0_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__LabeledAssignment_2_0_0"
+
+
+    // $ANTLR start "rule__ChartGauge__LabelValueAssignment_2_0_1"
+    // InternalChartDSL.g:20706:1: rule__ChartGauge__LabelValueAssignment_2_0_1 : ( RULE_STRING ) ;
+    public final void rule__ChartGauge__LabelValueAssignment_2_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20710:1: ( ( RULE_STRING ) )
+            // InternalChartDSL.g:20711:2: ( RULE_STRING )
+            {
+            // InternalChartDSL.g:20711:2: ( RULE_STRING )
+            // InternalChartDSL.g:20712:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getLabelValueSTRINGTerminalRuleCall_2_0_1_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getLabelValueSTRINGTerminalRuleCall_2_0_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__LabelValueAssignment_2_0_1"
+
+
+    // $ANTLR start "rule__ChartGauge__HasTicksAssignment_2_1_0"
+    // InternalChartDSL.g:20721:1: rule__ChartGauge__HasTicksAssignment_2_1_0 : ( ( 'hasTicks' ) ) ;
+    public final void rule__ChartGauge__HasTicksAssignment_2_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20725:1: ( ( ( 'hasTicks' ) ) )
+            // InternalChartDSL.g:20726:2: ( ( 'hasTicks' ) )
+            {
+            // InternalChartDSL.g:20726:2: ( ( 'hasTicks' ) )
+            // InternalChartDSL.g:20727:3: ( 'hasTicks' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getHasTicksHasTicksKeyword_2_1_0_0()); 
+            }
+            // InternalChartDSL.g:20728:3: ( 'hasTicks' )
+            // InternalChartDSL.g:20729:4: 'hasTicks'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getHasTicksHasTicksKeyword_2_1_0_0()); 
+            }
+            match(input,141,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getHasTicksHasTicksKeyword_2_1_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getHasTicksHasTicksKeyword_2_1_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__HasTicksAssignment_2_1_0"
+
+
+    // $ANTLR start "rule__ChartGauge__MinValueAssignment_2_1_2"
+    // InternalChartDSL.g:20740:1: rule__ChartGauge__MinValueAssignment_2_1_2 : ( RULE_INT ) ;
+    public final void rule__ChartGauge__MinValueAssignment_2_1_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20744:1: ( ( RULE_INT ) )
+            // InternalChartDSL.g:20745:2: ( RULE_INT )
+            {
+            // InternalChartDSL.g:20745:2: ( RULE_INT )
+            // InternalChartDSL.g:20746:3: RULE_INT
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getMinValueINTTerminalRuleCall_2_1_2_0()); 
+            }
+            match(input,RULE_INT,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getMinValueINTTerminalRuleCall_2_1_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__MinValueAssignment_2_1_2"
+
+
+    // $ANTLR start "rule__ChartGauge__MaxValueAssignment_2_1_4"
+    // InternalChartDSL.g:20755:1: rule__ChartGauge__MaxValueAssignment_2_1_4 : ( RULE_INT ) ;
+    public final void rule__ChartGauge__MaxValueAssignment_2_1_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20759:1: ( ( RULE_INT ) )
+            // InternalChartDSL.g:20760:2: ( RULE_INT )
+            {
+            // InternalChartDSL.g:20760:2: ( RULE_INT )
+            // InternalChartDSL.g:20761:3: RULE_INT
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getMaxValueINTTerminalRuleCall_2_1_4_0()); 
+            }
+            match(input,RULE_INT,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getMaxValueINTTerminalRuleCall_2_1_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__MaxValueAssignment_2_1_4"
+
+
+    // $ANTLR start "rule__ChartGauge__HasIntervalsAssignment_2_2_0"
+    // InternalChartDSL.g:20770:1: rule__ChartGauge__HasIntervalsAssignment_2_2_0 : ( ( 'intervals' ) ) ;
+    public final void rule__ChartGauge__HasIntervalsAssignment_2_2_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20774:1: ( ( ( 'intervals' ) ) )
+            // InternalChartDSL.g:20775:2: ( ( 'intervals' ) )
+            {
+            // InternalChartDSL.g:20775:2: ( ( 'intervals' ) )
+            // InternalChartDSL.g:20776:3: ( 'intervals' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getHasIntervalsIntervalsKeyword_2_2_0_0()); 
+            }
+            // InternalChartDSL.g:20777:3: ( 'intervals' )
+            // InternalChartDSL.g:20778:4: 'intervals'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getHasIntervalsIntervalsKeyword_2_2_0_0()); 
+            }
+            match(input,142,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getHasIntervalsIntervalsKeyword_2_2_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getHasIntervalsIntervalsKeyword_2_2_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__HasIntervalsAssignment_2_2_0"
+
+
+    // $ANTLR start "rule__ChartGauge__IntervalsAssignment_2_2_2"
+    // InternalChartDSL.g:20789:1: rule__ChartGauge__IntervalsAssignment_2_2_2 : ( ruleChartInterval ) ;
+    public final void rule__ChartGauge__IntervalsAssignment_2_2_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20793:1: ( ( ruleChartInterval ) )
+            // InternalChartDSL.g:20794:2: ( ruleChartInterval )
+            {
+            // InternalChartDSL.g:20794:2: ( ruleChartInterval )
+            // InternalChartDSL.g:20795:3: ruleChartInterval
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartGaugeAccess().getIntervalsChartIntervalParserRuleCall_2_2_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleChartInterval();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartGaugeAccess().getIntervalsChartIntervalParserRuleCall_2_2_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartGauge__IntervalsAssignment_2_2_2"
+
+
+    // $ANTLR start "rule__ChartTree__MapAssignment_2_0"
+    // InternalChartDSL.g:20804:1: rule__ChartTree__MapAssignment_2_0 : ( ( 'map' ) ) ;
+    public final void rule__ChartTree__MapAssignment_2_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20808:1: ( ( ( 'map' ) ) )
+            // InternalChartDSL.g:20809:2: ( ( 'map' ) )
+            {
+            // InternalChartDSL.g:20809:2: ( ( 'map' ) )
+            // InternalChartDSL.g:20810:3: ( 'map' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartTreeAccess().getMapMapKeyword_2_0_0()); 
+            }
+            // InternalChartDSL.g:20811:3: ( 'map' )
+            // InternalChartDSL.g:20812:4: 'map'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartTreeAccess().getMapMapKeyword_2_0_0()); 
+            }
+            match(input,143,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartTreeAccess().getMapMapKeyword_2_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartTreeAccess().getMapMapKeyword_2_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartTree__MapAssignment_2_0"
+
+
+    // $ANTLR start "rule__ChartTree__CollapsibleAssignment_2_1"
+    // InternalChartDSL.g:20823:1: rule__ChartTree__CollapsibleAssignment_2_1 : ( ( 'collapsible' ) ) ;
+    public final void rule__ChartTree__CollapsibleAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20827:1: ( ( ( 'collapsible' ) ) )
+            // InternalChartDSL.g:20828:2: ( ( 'collapsible' ) )
+            {
+            // InternalChartDSL.g:20828:2: ( ( 'collapsible' ) )
+            // InternalChartDSL.g:20829:3: ( 'collapsible' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartTreeAccess().getCollapsibleCollapsibleKeyword_2_1_0()); 
+            }
+            // InternalChartDSL.g:20830:3: ( 'collapsible' )
+            // InternalChartDSL.g:20831:4: 'collapsible'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartTreeAccess().getCollapsibleCollapsibleKeyword_2_1_0()); 
+            }
+            match(input,144,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartTreeAccess().getCollapsibleCollapsibleKeyword_2_1_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartTreeAccess().getCollapsibleCollapsibleKeyword_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartTree__CollapsibleAssignment_2_1"
+
+
+    // $ANTLR start "rule__ChartNumberInterval__NumberIntervalValueAssignment_2"
+    // InternalChartDSL.g:20842:1: rule__ChartNumberInterval__NumberIntervalValueAssignment_2 : ( ruleSignedNumber ) ;
+    public final void rule__ChartNumberInterval__NumberIntervalValueAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20846:1: ( ( ruleSignedNumber ) )
+            // InternalChartDSL.g:20847:2: ( ruleSignedNumber )
+            {
+            // InternalChartDSL.g:20847:2: ( ruleSignedNumber )
+            // InternalChartDSL.g:20848:3: ruleSignedNumber
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartNumberIntervalAccess().getNumberIntervalValueSignedNumberParserRuleCall_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleSignedNumber();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartNumberIntervalAccess().getNumberIntervalValueSignedNumberParserRuleCall_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartNumberInterval__NumberIntervalValueAssignment_2"
+
+
+    // $ANTLR start "rule__ChartNumberInterval__NumberRangeAssignment_3"
+    // InternalChartDSL.g:20857:1: rule__ChartNumberInterval__NumberRangeAssignment_3 : ( ruleChartRangeElement ) ;
+    public final void rule__ChartNumberInterval__NumberRangeAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20861:1: ( ( ruleChartRangeElement ) )
+            // InternalChartDSL.g:20862:2: ( ruleChartRangeElement )
+            {
+            // InternalChartDSL.g:20862:2: ( ruleChartRangeElement )
+            // InternalChartDSL.g:20863:3: ruleChartRangeElement
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartNumberIntervalAccess().getNumberRangeChartRangeElementParserRuleCall_3_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleChartRangeElement();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartNumberIntervalAccess().getNumberRangeChartRangeElementParserRuleCall_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartNumberInterval__NumberRangeAssignment_3"
+
+
+    // $ANTLR start "rule__ChartDatamart__DatamartRefAssignment_1"
+    // InternalChartDSL.g:20872:1: rule__ChartDatamart__DatamartRefAssignment_1 : ( ( RULE_ID ) ) ;
+    public final void rule__ChartDatamart__DatamartRefAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20876:1: ( ( ( RULE_ID ) ) )
+            // InternalChartDSL.g:20877:2: ( ( RULE_ID ) )
+            {
+            // InternalChartDSL.g:20877:2: ( ( RULE_ID ) )
+            // InternalChartDSL.g:20878:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartDatamartAccess().getDatamartRefDatamartDefinitionCrossReference_1_0()); 
+            }
+            // InternalChartDSL.g:20879:3: ( RULE_ID )
+            // InternalChartDSL.g:20880:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartDatamartAccess().getDatamartRefDatamartDefinitionIDTerminalRuleCall_1_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartDatamartAccess().getDatamartRefDatamartDefinitionIDTerminalRuleCall_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartDatamartAccess().getDatamartRefDatamartDefinitionCrossReference_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartDatamart__DatamartRefAssignment_1"
+
+
+    // $ANTLR start "rule__ChartDatamart__ElementsAssignment_3"
+    // InternalChartDSL.g:20891:1: rule__ChartDatamart__ElementsAssignment_3 : ( ruleChartElement ) ;
+    public final void rule__ChartDatamart__ElementsAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20895:1: ( ( ruleChartElement ) )
+            // InternalChartDSL.g:20896:2: ( ruleChartElement )
+            {
+            // InternalChartDSL.g:20896:2: ( ruleChartElement )
+            // InternalChartDSL.g:20897:3: ruleChartElement
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartDatamartAccess().getElementsChartElementParserRuleCall_3_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleChartElement();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartDatamartAccess().getElementsChartElementParserRuleCall_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartDatamart__ElementsAssignment_3"
+
+
+    // $ANTLR start "rule__ChartLegend__PlacementAssignment_1"
+    // InternalChartDSL.g:20906:1: rule__ChartLegend__PlacementAssignment_1 : ( ruleLegendPlacementEnum ) ;
+    public final void rule__ChartLegend__PlacementAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20910:1: ( ( ruleLegendPlacementEnum ) )
+            // InternalChartDSL.g:20911:2: ( ruleLegendPlacementEnum )
+            {
+            // InternalChartDSL.g:20911:2: ( ruleLegendPlacementEnum )
+            // InternalChartDSL.g:20912:3: ruleLegendPlacementEnum
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLegendAccess().getPlacementLegendPlacementEnumEnumRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleLegendPlacementEnum();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLegendAccess().getPlacementLegendPlacementEnumEnumRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLegend__PlacementAssignment_1"
+
+
+    // $ANTLR start "rule__ChartLegend__ToggleAssignment_2_0"
+    // InternalChartDSL.g:20921:1: rule__ChartLegend__ToggleAssignment_2_0 : ( ( 'toggle' ) ) ;
+    public final void rule__ChartLegend__ToggleAssignment_2_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20925:1: ( ( ( 'toggle' ) ) )
+            // InternalChartDSL.g:20926:2: ( ( 'toggle' ) )
+            {
+            // InternalChartDSL.g:20926:2: ( ( 'toggle' ) )
+            // InternalChartDSL.g:20927:3: ( 'toggle' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLegendAccess().getToggleToggleKeyword_2_0_0()); 
+            }
+            // InternalChartDSL.g:20928:3: ( 'toggle' )
+            // InternalChartDSL.g:20929:4: 'toggle'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLegendAccess().getToggleToggleKeyword_2_0_0()); 
+            }
+            match(input,145,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLegendAccess().getToggleToggleKeyword_2_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLegendAccess().getToggleToggleKeyword_2_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLegend__ToggleAssignment_2_0"
+
+
+    // $ANTLR start "rule__ChartLegend__ReplotAssignment_2_1"
+    // InternalChartDSL.g:20940:1: rule__ChartLegend__ReplotAssignment_2_1 : ( ( 'replot' ) ) ;
+    public final void rule__ChartLegend__ReplotAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20944:1: ( ( ( 'replot' ) ) )
+            // InternalChartDSL.g:20945:2: ( ( 'replot' ) )
+            {
+            // InternalChartDSL.g:20945:2: ( ( 'replot' ) )
+            // InternalChartDSL.g:20946:3: ( 'replot' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLegendAccess().getReplotReplotKeyword_2_1_0()); 
+            }
+            // InternalChartDSL.g:20947:3: ( 'replot' )
+            // InternalChartDSL.g:20948:4: 'replot'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLegendAccess().getReplotReplotKeyword_2_1_0()); 
+            }
+            match(input,146,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLegendAccess().getReplotReplotKeyword_2_1_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLegendAccess().getReplotReplotKeyword_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLegend__ReplotAssignment_2_1"
+
+
+    // $ANTLR start "rule__ChartLegend__ToggleTypeAssignment_2_2"
+    // InternalChartDSL.g:20959:1: rule__ChartLegend__ToggleTypeAssignment_2_2 : ( ruleToggleTypeEnum ) ;
+    public final void rule__ChartLegend__ToggleTypeAssignment_2_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20963:1: ( ( ruleToggleTypeEnum ) )
+            // InternalChartDSL.g:20964:2: ( ruleToggleTypeEnum )
+            {
+            // InternalChartDSL.g:20964:2: ( ruleToggleTypeEnum )
+            // InternalChartDSL.g:20965:3: ruleToggleTypeEnum
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartLegendAccess().getToggleTypeToggleTypeEnumEnumRuleCall_2_2_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleToggleTypeEnum();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartLegendAccess().getToggleTypeToggleTypeEnumEnumRuleCall_2_2_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartLegend__ToggleTypeAssignment_2_2"
+
+
+    // $ANTLR start "rule__ChartHighlighter__LocationAssignment_1"
+    // InternalChartDSL.g:20974:1: rule__ChartHighlighter__LocationAssignment_1 : ( ruleTooltipLocationEnum ) ;
+    public final void rule__ChartHighlighter__LocationAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20978:1: ( ( ruleTooltipLocationEnum ) )
+            // InternalChartDSL.g:20979:2: ( ruleTooltipLocationEnum )
+            {
+            // InternalChartDSL.g:20979:2: ( ruleTooltipLocationEnum )
+            // InternalChartDSL.g:20980:3: ruleTooltipLocationEnum
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartHighlighterAccess().getLocationTooltipLocationEnumEnumRuleCall_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleTooltipLocationEnum();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartHighlighterAccess().getLocationTooltipLocationEnumEnumRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartHighlighter__LocationAssignment_1"
+
+
+    // $ANTLR start "rule__ChartHighlighter__TooltipAlwaysAssignment_2_0"
+    // InternalChartDSL.g:20989:1: rule__ChartHighlighter__TooltipAlwaysAssignment_2_0 : ( ( 'always' ) ) ;
+    public final void rule__ChartHighlighter__TooltipAlwaysAssignment_2_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:20993:1: ( ( ( 'always' ) ) )
+            // InternalChartDSL.g:20994:2: ( ( 'always' ) )
+            {
+            // InternalChartDSL.g:20994:2: ( ( 'always' ) )
+            // InternalChartDSL.g:20995:3: ( 'always' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAlwaysKeyword_2_0_0()); 
+            }
+            // InternalChartDSL.g:20996:3: ( 'always' )
+            // InternalChartDSL.g:20997:4: 'always'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAlwaysKeyword_2_0_0()); 
+            }
+            match(input,147,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAlwaysKeyword_2_0_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAlwaysKeyword_2_0_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartHighlighter__TooltipAlwaysAssignment_2_0"
+
+
+    // $ANTLR start "rule__ChartHighlighter__InsideChartAssignment_2_1"
+    // InternalChartDSL.g:21008:1: rule__ChartHighlighter__InsideChartAssignment_2_1 : ( ( 'inside' ) ) ;
+    public final void rule__ChartHighlighter__InsideChartAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21012:1: ( ( ( 'inside' ) ) )
+            // InternalChartDSL.g:21013:2: ( ( 'inside' ) )
+            {
+            // InternalChartDSL.g:21013:2: ( ( 'inside' ) )
+            // InternalChartDSL.g:21014:3: ( 'inside' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartHighlighterAccess().getInsideChartInsideKeyword_2_1_0()); 
+            }
+            // InternalChartDSL.g:21015:3: ( 'inside' )
+            // InternalChartDSL.g:21016:4: 'inside'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartHighlighterAccess().getInsideChartInsideKeyword_2_1_0()); 
+            }
+            match(input,51,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartHighlighterAccess().getInsideChartInsideKeyword_2_1_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartHighlighterAccess().getInsideChartInsideKeyword_2_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartHighlighter__InsideChartAssignment_2_1"
+
+
+    // $ANTLR start "rule__ChartAxis__AxisAssignment_1"
+    // InternalChartDSL.g:21027:1: rule__ChartAxis__AxisAssignment_1 : ( ( RULE_ID ) ) ;
+    public final void rule__ChartAxis__AxisAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21031:1: ( ( ( RULE_ID ) ) )
+            // InternalChartDSL.g:21032:2: ( ( RULE_ID ) )
+            {
+            // InternalChartDSL.g:21032:2: ( ( RULE_ID ) )
+            // InternalChartDSL.g:21033:3: ( RULE_ID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAxisAccess().getAxisDatamartAxisCrossReference_1_0()); 
+            }
+            // InternalChartDSL.g:21034:3: ( RULE_ID )
+            // InternalChartDSL.g:21035:4: RULE_ID
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAxisAccess().getAxisDatamartAxisIDTerminalRuleCall_1_0_1()); 
+            }
+            match(input,RULE_ID,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAxisAccess().getAxisDatamartAxisIDTerminalRuleCall_1_0_1()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAxisAccess().getAxisDatamartAxisCrossReference_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartAxis__AxisAssignment_1"
+
+
+    // $ANTLR start "rule__ChartAxis__RenderTypeAssignment_3"
+    // InternalChartDSL.g:21046:1: rule__ChartAxis__RenderTypeAssignment_3 : ( ruleRenderTypeEnum ) ;
+    public final void rule__ChartAxis__RenderTypeAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21050:1: ( ( ruleRenderTypeEnum ) )
+            // InternalChartDSL.g:21051:2: ( ruleRenderTypeEnum )
+            {
+            // InternalChartDSL.g:21051:2: ( ruleRenderTypeEnum )
+            // InternalChartDSL.g:21052:3: ruleRenderTypeEnum
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAxisAccess().getRenderTypeRenderTypeEnumEnumRuleCall_3_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleRenderTypeEnum();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAxisAccess().getRenderTypeRenderTypeEnumEnumRuleCall_3_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartAxis__RenderTypeAssignment_3"
+
+
+    // $ANTLR start "rule__ChartAxis__ShortLabelAssignment_4"
+    // InternalChartDSL.g:21061:1: rule__ChartAxis__ShortLabelAssignment_4 : ( ( 'shortLabel' ) ) ;
+    public final void rule__ChartAxis__ShortLabelAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21065:1: ( ( ( 'shortLabel' ) ) )
+            // InternalChartDSL.g:21066:2: ( ( 'shortLabel' ) )
+            {
+            // InternalChartDSL.g:21066:2: ( ( 'shortLabel' ) )
+            // InternalChartDSL.g:21067:3: ( 'shortLabel' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAxisAccess().getShortLabelShortLabelKeyword_4_0()); 
+            }
+            // InternalChartDSL.g:21068:3: ( 'shortLabel' )
+            // InternalChartDSL.g:21069:4: 'shortLabel'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAxisAccess().getShortLabelShortLabelKeyword_4_0()); 
+            }
+            match(input,148,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAxisAccess().getShortLabelShortLabelKeyword_4_0()); 
+            }
+
+            }
+
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAxisAccess().getShortLabelShortLabelKeyword_4_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartAxis__ShortLabelAssignment_4"
+
+
+    // $ANTLR start "rule__ChartAxis__AngleAssignment_5_1"
+    // InternalChartDSL.g:21080:1: rule__ChartAxis__AngleAssignment_5_1 : ( ruleSignedNumber ) ;
+    public final void rule__ChartAxis__AngleAssignment_5_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21084:1: ( ( ruleSignedNumber ) )
+            // InternalChartDSL.g:21085:2: ( ruleSignedNumber )
+            {
+            // InternalChartDSL.g:21085:2: ( ruleSignedNumber )
+            // InternalChartDSL.g:21086:3: ruleSignedNumber
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartAxisAccess().getAngleSignedNumberParserRuleCall_5_1_0()); 
+            }
+            pushFollow(FOLLOW_2);
+            ruleSignedNumber();
+
+            state._fsp--;
+            if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartAxisAccess().getAngleSignedNumberParserRuleCall_5_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartAxis__AngleAssignment_5_1"
+
+
+    // $ANTLR start "rule__ChartSegmentColor__RgbAssignment_1"
+    // InternalChartDSL.g:21095:1: rule__ChartSegmentColor__RgbAssignment_1 : ( RULE_STRING ) ;
+    public final void rule__ChartSegmentColor__RgbAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21099:1: ( ( RULE_STRING ) )
+            // InternalChartDSL.g:21100:2: ( RULE_STRING )
+            {
+            // InternalChartDSL.g:21100:2: ( RULE_STRING )
+            // InternalChartDSL.g:21101:3: RULE_STRING
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getChartSegmentColorAccess().getRgbSTRINGTerminalRuleCall_1_0()); 
+            }
+            match(input,RULE_STRING,FOLLOW_2); if (state.failed) return ;
+            if ( state.backtracking==0 ) {
+               after(grammarAccess.getChartSegmentColorAccess().getRgbSTRINGTerminalRuleCall_1_0()); 
+            }
+
+            }
+
+
+            }
+
+        }
+        catch (RecognitionException re) {
+            reportError(re);
+            recover(input,re);
+        }
+        finally {
+
+            	restoreStackSize(stackSize);
+
+        }
+        return ;
+    }
+    // $ANTLR end "rule__ChartSegmentColor__RgbAssignment_1"
+
+
+    // $ANTLR start "rule__XImportDeclaration__StaticAssignment_2_0_0"
+    // InternalChartDSL.g:21110:1: rule__XImportDeclaration__StaticAssignment_2_0_0 : ( ( 'static' ) ) ;
+    public final void rule__XImportDeclaration__StaticAssignment_2_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21114:1: ( ( ( 'static' ) ) )
+            // InternalChartDSL.g:21115:2: ( ( 'static' ) )
+            {
+            // InternalChartDSL.g:21115:2: ( ( 'static' ) )
+            // InternalChartDSL.g:21116:3: ( 'static' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getStaticStaticKeyword_2_0_0_0()); 
+            }
+            // InternalChartDSL.g:21117:3: ( 'static' )
+            // InternalChartDSL.g:21118: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"
+    // InternalChartDSL.g:21129:1: rule__XImportDeclaration__ExtensionAssignment_2_0_1 : ( ( 'extension' ) ) ;
+    public final void rule__XImportDeclaration__ExtensionAssignment_2_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21133:1: ( ( ( 'extension' ) ) )
+            // InternalChartDSL.g:21134:2: ( ( 'extension' ) )
+            {
+            // InternalChartDSL.g:21134:2: ( ( 'extension' ) )
+            // InternalChartDSL.g:21135:3: ( 'extension' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getExtensionExtensionKeyword_2_0_1_0()); 
+            }
+            // InternalChartDSL.g:21136:3: ( 'extension' )
+            // InternalChartDSL.g:21137: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"
+    // InternalChartDSL.g:21148:1: rule__XImportDeclaration__ImportedTypeAssignment_2_0_2 : ( ( ruleQualifiedNameInStaticImport ) ) ;
+    public final void rule__XImportDeclaration__ImportedTypeAssignment_2_0_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21152:1: ( ( ( ruleQualifiedNameInStaticImport ) ) )
+            // InternalChartDSL.g:21153:2: ( ( ruleQualifiedNameInStaticImport ) )
+            {
+            // InternalChartDSL.g:21153:2: ( ( ruleQualifiedNameInStaticImport ) )
+            // InternalChartDSL.g:21154:3: ( ruleQualifiedNameInStaticImport )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_0_2_0()); 
+            }
+            // InternalChartDSL.g:21155:3: ( ruleQualifiedNameInStaticImport )
+            // InternalChartDSL.g:21156: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"
+    // InternalChartDSL.g:21167:1: rule__XImportDeclaration__WildcardAssignment_2_0_3_0 : ( ( '*' ) ) ;
+    public final void rule__XImportDeclaration__WildcardAssignment_2_0_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21171:1: ( ( ( '*' ) ) )
+            // InternalChartDSL.g:21172:2: ( ( '*' ) )
+            {
+            // InternalChartDSL.g:21172:2: ( ( '*' ) )
+            // InternalChartDSL.g:21173:3: ( '*' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getWildcardAsteriskKeyword_2_0_3_0_0()); 
+            }
+            // InternalChartDSL.g:21174:3: ( '*' )
+            // InternalChartDSL.g:21175: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"
+    // InternalChartDSL.g:21186: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 {
+            // InternalChartDSL.g:21190:1: ( ( ruleValidID ) )
+            // InternalChartDSL.g:21191:2: ( ruleValidID )
+            {
+            // InternalChartDSL.g:21191:2: ( ruleValidID )
+            // InternalChartDSL.g:21192: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"
+    // InternalChartDSL.g:21201:1: rule__XImportDeclaration__ImportedTypeAssignment_2_1 : ( ( ruleQualifiedName ) ) ;
+    public final void rule__XImportDeclaration__ImportedTypeAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21205:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalChartDSL.g:21206:2: ( ( ruleQualifiedName ) )
+            {
+            // InternalChartDSL.g:21206:2: ( ( ruleQualifiedName ) )
+            // InternalChartDSL.g:21207:3: ( ruleQualifiedName )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getImportedTypeJvmDeclaredTypeCrossReference_2_1_0()); 
+            }
+            // InternalChartDSL.g:21208:3: ( ruleQualifiedName )
+            // InternalChartDSL.g:21209: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"
+    // InternalChartDSL.g:21220:1: rule__XImportDeclaration__ImportedNamespaceAssignment_2_2 : ( ruleQualifiedNameWithWildcard ) ;
+    public final void rule__XImportDeclaration__ImportedNamespaceAssignment_2_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21224:1: ( ( ruleQualifiedNameWithWildcard ) )
+            // InternalChartDSL.g:21225:2: ( ruleQualifiedNameWithWildcard )
+            {
+            // InternalChartDSL.g:21225:2: ( ruleQualifiedNameWithWildcard )
+            // InternalChartDSL.g:21226: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"
+    // InternalChartDSL.g:21235:1: rule__XImportDeclaration__FqnImportAssignment_2_3_0 : ( ( 'ns' ) ) ;
+    public final void rule__XImportDeclaration__FqnImportAssignment_2_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21239:1: ( ( ( 'ns' ) ) )
+            // InternalChartDSL.g:21240:2: ( ( 'ns' ) )
+            {
+            // InternalChartDSL.g:21240:2: ( ( 'ns' ) )
+            // InternalChartDSL.g:21241:3: ( 'ns' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
+            }
+            // InternalChartDSL.g:21242:3: ( 'ns' )
+            // InternalChartDSL.g:21243:4: 'ns'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXImportDeclarationAccess().getFqnImportNsKeyword_2_3_0_0()); 
+            }
+            match(input,149,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"
+    // InternalChartDSL.g:21254:1: rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1 : ( ruleQualifiedName ) ;
+    public final void rule__XImportDeclaration__ImportedFullyQualifiedNameAssignment_2_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21258:1: ( ( ruleQualifiedName ) )
+            // InternalChartDSL.g:21259:2: ( ruleQualifiedName )
+            {
+            // InternalChartDSL.g:21259:2: ( ruleQualifiedName )
+            // InternalChartDSL.g:21260: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"
+    // InternalChartDSL.g:21269:1: rule__XAnnotation__AnnotationTypeAssignment_2 : ( ( ruleQualifiedName ) ) ;
+    public final void rule__XAnnotation__AnnotationTypeAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21273:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalChartDSL.g:21274:2: ( ( ruleQualifiedName ) )
+            {
+            // InternalChartDSL.g:21274:2: ( ( ruleQualifiedName ) )
+            // InternalChartDSL.g:21275:3: ( ruleQualifiedName )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationAccess().getAnnotationTypeJvmAnnotationTypeCrossReference_2_0()); 
+            }
+            // InternalChartDSL.g:21276:3: ( ruleQualifiedName )
+            // InternalChartDSL.g:21277: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"
+    // InternalChartDSL.g:21288: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 {
+            // InternalChartDSL.g:21292:1: ( ( ruleXAnnotationElementValuePair ) )
+            // InternalChartDSL.g:21293:2: ( ruleXAnnotationElementValuePair )
+            {
+            // InternalChartDSL.g:21293:2: ( ruleXAnnotationElementValuePair )
+            // InternalChartDSL.g:21294: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"
+    // InternalChartDSL.g:21303: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 {
+            // InternalChartDSL.g:21307:1: ( ( ruleXAnnotationElementValuePair ) )
+            // InternalChartDSL.g:21308:2: ( ruleXAnnotationElementValuePair )
+            {
+            // InternalChartDSL.g:21308:2: ( ruleXAnnotationElementValuePair )
+            // InternalChartDSL.g:21309: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"
+    // InternalChartDSL.g:21318:1: rule__XAnnotation__ValueAssignment_3_1_1 : ( ruleXAnnotationElementValueOrCommaList ) ;
+    public final void rule__XAnnotation__ValueAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21322:1: ( ( ruleXAnnotationElementValueOrCommaList ) )
+            // InternalChartDSL.g:21323:2: ( ruleXAnnotationElementValueOrCommaList )
+            {
+            // InternalChartDSL.g:21323:2: ( ruleXAnnotationElementValueOrCommaList )
+            // InternalChartDSL.g:21324: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"
+    // InternalChartDSL.g:21333:1: rule__XAnnotationElementValuePair__ElementAssignment_0_0_0 : ( ( ruleValidID ) ) ;
+    public final void rule__XAnnotationElementValuePair__ElementAssignment_0_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21337:1: ( ( ( ruleValidID ) ) )
+            // InternalChartDSL.g:21338:2: ( ( ruleValidID ) )
+            {
+            // InternalChartDSL.g:21338:2: ( ( ruleValidID ) )
+            // InternalChartDSL.g:21339:3: ( ruleValidID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0()); 
+            }
+            // InternalChartDSL.g:21340:3: ( ruleValidID )
+            // InternalChartDSL.g:21341: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"
+    // InternalChartDSL.g:21352:1: rule__XAnnotationElementValuePair__ValueAssignment_1 : ( ruleXAnnotationElementValue ) ;
+    public final void rule__XAnnotationElementValuePair__ValueAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21356:1: ( ( ruleXAnnotationElementValue ) )
+            // InternalChartDSL.g:21357:2: ( ruleXAnnotationElementValue )
+            {
+            // InternalChartDSL.g:21357:2: ( ruleXAnnotationElementValue )
+            // InternalChartDSL.g:21358: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"
+    // InternalChartDSL.g:21367:1: rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
+    public final void rule__XAnnotationElementValueOrCommaList__ElementsAssignment_0_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21371:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalChartDSL.g:21372:2: ( ruleXAnnotationOrExpression )
+            {
+            // InternalChartDSL.g:21372:2: ( ruleXAnnotationOrExpression )
+            // InternalChartDSL.g:21373: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"
+    // InternalChartDSL.g:21382: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 {
+            // InternalChartDSL.g:21386:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalChartDSL.g:21387:2: ( ruleXAnnotationOrExpression )
+            {
+            // InternalChartDSL.g:21387:2: ( ruleXAnnotationOrExpression )
+            // InternalChartDSL.g:21388: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"
+    // InternalChartDSL.g:21397: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 {
+            // InternalChartDSL.g:21401:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalChartDSL.g:21402:2: ( ruleXAnnotationOrExpression )
+            {
+            // InternalChartDSL.g:21402:2: ( ruleXAnnotationOrExpression )
+            // InternalChartDSL.g:21403: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"
+    // InternalChartDSL.g:21412:1: rule__XAnnotationElementValue__ElementsAssignment_0_1_0 : ( ruleXAnnotationOrExpression ) ;
+    public final void rule__XAnnotationElementValue__ElementsAssignment_0_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21416:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalChartDSL.g:21417:2: ( ruleXAnnotationOrExpression )
+            {
+            // InternalChartDSL.g:21417:2: ( ruleXAnnotationOrExpression )
+            // InternalChartDSL.g:21418: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"
+    // InternalChartDSL.g:21427: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 {
+            // InternalChartDSL.g:21431:1: ( ( ruleXAnnotationOrExpression ) )
+            // InternalChartDSL.g:21432:2: ( ruleXAnnotationOrExpression )
+            {
+            // InternalChartDSL.g:21432:2: ( ruleXAnnotationOrExpression )
+            // InternalChartDSL.g:21433: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"
+    // InternalChartDSL.g:21442:1: rule__XAssignment__FeatureAssignment_0_1 : ( ( ruleFeatureCallID ) ) ;
+    public final void rule__XAssignment__FeatureAssignment_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21446:1: ( ( ( ruleFeatureCallID ) ) )
+            // InternalChartDSL.g:21447:2: ( ( ruleFeatureCallID ) )
+            {
+            // InternalChartDSL.g:21447:2: ( ( ruleFeatureCallID ) )
+            // InternalChartDSL.g:21448:3: ( ruleFeatureCallID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
+            }
+            // InternalChartDSL.g:21449:3: ( ruleFeatureCallID )
+            // InternalChartDSL.g:21450: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"
+    // InternalChartDSL.g:21461:1: rule__XAssignment__ValueAssignment_0_3 : ( ruleXAssignment ) ;
+    public final void rule__XAssignment__ValueAssignment_0_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21465:1: ( ( ruleXAssignment ) )
+            // InternalChartDSL.g:21466:2: ( ruleXAssignment )
+            {
+            // InternalChartDSL.g:21466:2: ( ruleXAssignment )
+            // InternalChartDSL.g:21467: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"
+    // InternalChartDSL.g:21476: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 {
+            // InternalChartDSL.g:21480:1: ( ( ( ruleOpMultiAssign ) ) )
+            // InternalChartDSL.g:21481:2: ( ( ruleOpMultiAssign ) )
+            {
+            // InternalChartDSL.g:21481:2: ( ( ruleOpMultiAssign ) )
+            // InternalChartDSL.g:21482:3: ( ruleOpMultiAssign )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
+            }
+            // InternalChartDSL.g:21483:3: ( ruleOpMultiAssign )
+            // InternalChartDSL.g:21484: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"
+    // InternalChartDSL.g:21495:1: rule__XAssignment__RightOperandAssignment_1_1_1 : ( ruleXAssignment ) ;
+    public final void rule__XAssignment__RightOperandAssignment_1_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21499:1: ( ( ruleXAssignment ) )
+            // InternalChartDSL.g:21500:2: ( ruleXAssignment )
+            {
+            // InternalChartDSL.g:21500:2: ( ruleXAssignment )
+            // InternalChartDSL.g:21501: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"
+    // InternalChartDSL.g:21510: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 {
+            // InternalChartDSL.g:21514:1: ( ( ( ruleOpOr ) ) )
+            // InternalChartDSL.g:21515:2: ( ( ruleOpOr ) )
+            {
+            // InternalChartDSL.g:21515:2: ( ( ruleOpOr ) )
+            // InternalChartDSL.g:21516:3: ( ruleOpOr )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOrExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalChartDSL.g:21517:3: ( ruleOpOr )
+            // InternalChartDSL.g:21518: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"
+    // InternalChartDSL.g:21529:1: rule__XOrExpression__RightOperandAssignment_1_1 : ( ruleXAndExpression ) ;
+    public final void rule__XOrExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21533:1: ( ( ruleXAndExpression ) )
+            // InternalChartDSL.g:21534:2: ( ruleXAndExpression )
+            {
+            // InternalChartDSL.g:21534:2: ( ruleXAndExpression )
+            // InternalChartDSL.g:21535: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"
+    // InternalChartDSL.g:21544: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 {
+            // InternalChartDSL.g:21548:1: ( ( ( ruleOpAnd ) ) )
+            // InternalChartDSL.g:21549:2: ( ( ruleOpAnd ) )
+            {
+            // InternalChartDSL.g:21549:2: ( ( ruleOpAnd ) )
+            // InternalChartDSL.g:21550:3: ( ruleOpAnd )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalChartDSL.g:21551:3: ( ruleOpAnd )
+            // InternalChartDSL.g:21552: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"
+    // InternalChartDSL.g:21563:1: rule__XAndExpression__RightOperandAssignment_1_1 : ( ruleXEqualityExpression ) ;
+    public final void rule__XAndExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21567:1: ( ( ruleXEqualityExpression ) )
+            // InternalChartDSL.g:21568:2: ( ruleXEqualityExpression )
+            {
+            // InternalChartDSL.g:21568:2: ( ruleXEqualityExpression )
+            // InternalChartDSL.g:21569: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"
+    // InternalChartDSL.g:21578: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 {
+            // InternalChartDSL.g:21582:1: ( ( ( ruleOpEquality ) ) )
+            // InternalChartDSL.g:21583:2: ( ( ruleOpEquality ) )
+            {
+            // InternalChartDSL.g:21583:2: ( ( ruleOpEquality ) )
+            // InternalChartDSL.g:21584:3: ( ruleOpEquality )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalChartDSL.g:21585:3: ( ruleOpEquality )
+            // InternalChartDSL.g:21586: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"
+    // InternalChartDSL.g:21597:1: rule__XEqualityExpression__RightOperandAssignment_1_1 : ( ruleXRelationalExpression ) ;
+    public final void rule__XEqualityExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21601:1: ( ( ruleXRelationalExpression ) )
+            // InternalChartDSL.g:21602:2: ( ruleXRelationalExpression )
+            {
+            // InternalChartDSL.g:21602:2: ( ruleXRelationalExpression )
+            // InternalChartDSL.g:21603: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"
+    // InternalChartDSL.g:21612:1: rule__XRelationalExpression__TypeAssignment_1_0_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__XRelationalExpression__TypeAssignment_1_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21616:1: ( ( ruleJvmTypeReference ) )
+            // InternalChartDSL.g:21617:2: ( ruleJvmTypeReference )
+            {
+            // InternalChartDSL.g:21617:2: ( ruleJvmTypeReference )
+            // InternalChartDSL.g:21618: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"
+    // InternalChartDSL.g:21627: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 {
+            // InternalChartDSL.g:21631:1: ( ( ( ruleOpCompare ) ) )
+            // InternalChartDSL.g:21632:2: ( ( ruleOpCompare ) )
+            {
+            // InternalChartDSL.g:21632:2: ( ( ruleOpCompare ) )
+            // InternalChartDSL.g:21633:3: ( ruleOpCompare )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXRelationalExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
+            }
+            // InternalChartDSL.g:21634:3: ( ruleOpCompare )
+            // InternalChartDSL.g:21635: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"
+    // InternalChartDSL.g:21646:1: rule__XRelationalExpression__RightOperandAssignment_1_1_1 : ( ruleXOtherOperatorExpression ) ;
+    public final void rule__XRelationalExpression__RightOperandAssignment_1_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21650:1: ( ( ruleXOtherOperatorExpression ) )
+            // InternalChartDSL.g:21651:2: ( ruleXOtherOperatorExpression )
+            {
+            // InternalChartDSL.g:21651:2: ( ruleXOtherOperatorExpression )
+            // InternalChartDSL.g:21652: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"
+    // InternalChartDSL.g:21661: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 {
+            // InternalChartDSL.g:21665:1: ( ( ( ruleOpOther ) ) )
+            // InternalChartDSL.g:21666:2: ( ( ruleOpOther ) )
+            {
+            // InternalChartDSL.g:21666:2: ( ( ruleOpOther ) )
+            // InternalChartDSL.g:21667:3: ( ruleOpOther )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalChartDSL.g:21668:3: ( ruleOpOther )
+            // InternalChartDSL.g:21669: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"
+    // InternalChartDSL.g:21680:1: rule__XOtherOperatorExpression__RightOperandAssignment_1_1 : ( ruleXAdditiveExpression ) ;
+    public final void rule__XOtherOperatorExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21684:1: ( ( ruleXAdditiveExpression ) )
+            // InternalChartDSL.g:21685:2: ( ruleXAdditiveExpression )
+            {
+            // InternalChartDSL.g:21685:2: ( ruleXAdditiveExpression )
+            // InternalChartDSL.g:21686: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"
+    // InternalChartDSL.g:21695: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 {
+            // InternalChartDSL.g:21699:1: ( ( ( ruleOpAdd ) ) )
+            // InternalChartDSL.g:21700:2: ( ( ruleOpAdd ) )
+            {
+            // InternalChartDSL.g:21700:2: ( ( ruleOpAdd ) )
+            // InternalChartDSL.g:21701:3: ( ruleOpAdd )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalChartDSL.g:21702:3: ( ruleOpAdd )
+            // InternalChartDSL.g:21703: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"
+    // InternalChartDSL.g:21714:1: rule__XAdditiveExpression__RightOperandAssignment_1_1 : ( ruleXMultiplicativeExpression ) ;
+    public final void rule__XAdditiveExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21718:1: ( ( ruleXMultiplicativeExpression ) )
+            // InternalChartDSL.g:21719:2: ( ruleXMultiplicativeExpression )
+            {
+            // InternalChartDSL.g:21719:2: ( ruleXMultiplicativeExpression )
+            // InternalChartDSL.g:21720: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"
+    // InternalChartDSL.g:21729: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 {
+            // InternalChartDSL.g:21733:1: ( ( ( ruleOpMulti ) ) )
+            // InternalChartDSL.g:21734:2: ( ( ruleOpMulti ) )
+            {
+            // InternalChartDSL.g:21734:2: ( ( ruleOpMulti ) )
+            // InternalChartDSL.g:21735:3: ( ruleOpMulti )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMultiplicativeExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
+            }
+            // InternalChartDSL.g:21736:3: ( ruleOpMulti )
+            // InternalChartDSL.g:21737: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"
+    // InternalChartDSL.g:21748:1: rule__XMultiplicativeExpression__RightOperandAssignment_1_1 : ( ruleXUnaryOperation ) ;
+    public final void rule__XMultiplicativeExpression__RightOperandAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21752:1: ( ( ruleXUnaryOperation ) )
+            // InternalChartDSL.g:21753:2: ( ruleXUnaryOperation )
+            {
+            // InternalChartDSL.g:21753:2: ( ruleXUnaryOperation )
+            // InternalChartDSL.g:21754: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"
+    // InternalChartDSL.g:21763:1: rule__XUnaryOperation__FeatureAssignment_0_1 : ( ( ruleOpUnary ) ) ;
+    public final void rule__XUnaryOperation__FeatureAssignment_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21767:1: ( ( ( ruleOpUnary ) ) )
+            // InternalChartDSL.g:21768:2: ( ( ruleOpUnary ) )
+            {
+            // InternalChartDSL.g:21768:2: ( ( ruleOpUnary ) )
+            // InternalChartDSL.g:21769:3: ( ruleOpUnary )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXUnaryOperationAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
+            }
+            // InternalChartDSL.g:21770:3: ( ruleOpUnary )
+            // InternalChartDSL.g:21771: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"
+    // InternalChartDSL.g:21782:1: rule__XUnaryOperation__OperandAssignment_0_2 : ( ruleXUnaryOperation ) ;
+    public final void rule__XUnaryOperation__OperandAssignment_0_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21786:1: ( ( ruleXUnaryOperation ) )
+            // InternalChartDSL.g:21787:2: ( ruleXUnaryOperation )
+            {
+            // InternalChartDSL.g:21787:2: ( ruleXUnaryOperation )
+            // InternalChartDSL.g:21788: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"
+    // InternalChartDSL.g:21797:1: rule__XCastedExpression__TypeAssignment_1_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__XCastedExpression__TypeAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21801:1: ( ( ruleJvmTypeReference ) )
+            // InternalChartDSL.g:21802:2: ( ruleJvmTypeReference )
+            {
+            // InternalChartDSL.g:21802:2: ( ruleJvmTypeReference )
+            // InternalChartDSL.g:21803: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"
+    // InternalChartDSL.g:21812:1: rule__XPostfixOperation__FeatureAssignment_1_0_1 : ( ( ruleOpPostfix ) ) ;
+    public final void rule__XPostfixOperation__FeatureAssignment_1_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21816:1: ( ( ( ruleOpPostfix ) ) )
+            // InternalChartDSL.g:21817:2: ( ( ruleOpPostfix ) )
+            {
+            // InternalChartDSL.g:21817:2: ( ( ruleOpPostfix ) )
+            // InternalChartDSL.g:21818:3: ( ruleOpPostfix )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXPostfixOperationAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_1_0()); 
+            }
+            // InternalChartDSL.g:21819:3: ( ruleOpPostfix )
+            // InternalChartDSL.g:21820: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"
+    // InternalChartDSL.g:21831: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 {
+            // InternalChartDSL.g:21835:1: ( ( ( '::' ) ) )
+            // InternalChartDSL.g:21836:2: ( ( '::' ) )
+            {
+            // InternalChartDSL.g:21836:2: ( ( '::' ) )
+            // InternalChartDSL.g:21837:3: ( '::' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
+            }
+            // InternalChartDSL.g:21838:3: ( '::' )
+            // InternalChartDSL.g:21839:4: '::'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_0_0_0_1_1_0()); 
+            }
+            match(input,150,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"
+    // InternalChartDSL.g:21850: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 {
+            // InternalChartDSL.g:21854:1: ( ( ( ruleFeatureCallID ) ) )
+            // InternalChartDSL.g:21855:2: ( ( ruleFeatureCallID ) )
+            {
+            // InternalChartDSL.g:21855:2: ( ( ruleFeatureCallID ) )
+            // InternalChartDSL.g:21856:3: ( ruleFeatureCallID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_0_2_0()); 
+            }
+            // InternalChartDSL.g:21857:3: ( ruleFeatureCallID )
+            // InternalChartDSL.g:21858: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"
+    // InternalChartDSL.g:21869:1: rule__XMemberFeatureCall__ValueAssignment_1_0_1 : ( ruleXAssignment ) ;
+    public final void rule__XMemberFeatureCall__ValueAssignment_1_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21873:1: ( ( ruleXAssignment ) )
+            // InternalChartDSL.g:21874:2: ( ruleXAssignment )
+            {
+            // InternalChartDSL.g:21874:2: ( ruleXAssignment )
+            // InternalChartDSL.g:21875: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"
+    // InternalChartDSL.g:21884: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 {
+            // InternalChartDSL.g:21888:1: ( ( ( '?.' ) ) )
+            // InternalChartDSL.g:21889:2: ( ( '?.' ) )
+            {
+            // InternalChartDSL.g:21889:2: ( ( '?.' ) )
+            // InternalChartDSL.g:21890:3: ( '?.' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
+            }
+            // InternalChartDSL.g:21891:3: ( '?.' )
+            // InternalChartDSL.g:21892:4: '?.'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getNullSafeQuestionMarkFullStopKeyword_1_1_0_0_1_1_0()); 
+            }
+            match(input,151,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"
+    // InternalChartDSL.g:21903: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 {
+            // InternalChartDSL.g:21907:1: ( ( ( '::' ) ) )
+            // InternalChartDSL.g:21908:2: ( ( '::' ) )
+            {
+            // InternalChartDSL.g:21908:2: ( ( '::' ) )
+            // InternalChartDSL.g:21909:3: ( '::' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
+            }
+            // InternalChartDSL.g:21910:3: ( '::' )
+            // InternalChartDSL.g:21911:4: '::'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitStaticColonColonKeyword_1_1_0_0_1_2_0()); 
+            }
+            match(input,150,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"
+    // InternalChartDSL.g:21922: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 {
+            // InternalChartDSL.g:21926:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalChartDSL.g:21927:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalChartDSL.g:21927:2: ( ruleJvmArgumentTypeReference )
+            // InternalChartDSL.g:21928: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"
+    // InternalChartDSL.g:21937: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 {
+            // InternalChartDSL.g:21941:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalChartDSL.g:21942:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalChartDSL.g:21942:2: ( ruleJvmArgumentTypeReference )
+            // InternalChartDSL.g:21943: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"
+    // InternalChartDSL.g:21952:1: rule__XMemberFeatureCall__FeatureAssignment_1_1_2 : ( ( ruleIdOrSuper ) ) ;
+    public final void rule__XMemberFeatureCall__FeatureAssignment_1_1_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21956:1: ( ( ( ruleIdOrSuper ) ) )
+            // InternalChartDSL.g:21957:2: ( ( ruleIdOrSuper ) )
+            {
+            // InternalChartDSL.g:21957:2: ( ( ruleIdOrSuper ) )
+            // InternalChartDSL.g:21958:3: ( ruleIdOrSuper )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_2_0()); 
+            }
+            // InternalChartDSL.g:21959:3: ( ruleIdOrSuper )
+            // InternalChartDSL.g:21960: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"
+    // InternalChartDSL.g:21971:1: rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0 : ( ( '(' ) ) ;
+    public final void rule__XMemberFeatureCall__ExplicitOperationCallAssignment_1_1_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:21975:1: ( ( ( '(' ) ) )
+            // InternalChartDSL.g:21976:2: ( ( '(' ) )
+            {
+            // InternalChartDSL.g:21976:2: ( ( '(' ) )
+            // InternalChartDSL.g:21977:3: ( '(' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
+            }
+            // InternalChartDSL.g:21978:3: ( '(' )
+            // InternalChartDSL.g:21979:4: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXMemberFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_1_1_3_0_0()); 
+            }
+            match(input,96,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"
+    // InternalChartDSL.g:21990: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 {
+            // InternalChartDSL.g:21994:1: ( ( ruleXShortClosure ) )
+            // InternalChartDSL.g:21995:2: ( ruleXShortClosure )
+            {
+            // InternalChartDSL.g:21995:2: ( ruleXShortClosure )
+            // InternalChartDSL.g:21996: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"
+    // InternalChartDSL.g:22005: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 {
+            // InternalChartDSL.g:22009:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22010:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22010:2: ( ruleXExpression )
+            // InternalChartDSL.g:22011: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"
+    // InternalChartDSL.g:22020: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 {
+            // InternalChartDSL.g:22024:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22025:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22025:2: ( ruleXExpression )
+            // InternalChartDSL.g:22026: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"
+    // InternalChartDSL.g:22035:1: rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 : ( ruleXClosure ) ;
+    public final void rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22039:1: ( ( ruleXClosure ) )
+            // InternalChartDSL.g:22040:2: ( ruleXClosure )
+            {
+            // InternalChartDSL.g:22040:2: ( ruleXClosure )
+            // InternalChartDSL.g:22041: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"
+    // InternalChartDSL.g:22050:1: rule__XSetLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
+    public final void rule__XSetLiteral__ElementsAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22054:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22055:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22055:2: ( ruleXExpression )
+            // InternalChartDSL.g:22056: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"
+    // InternalChartDSL.g:22065:1: rule__XSetLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
+    public final void rule__XSetLiteral__ElementsAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22069:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22070:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22070:2: ( ruleXExpression )
+            // InternalChartDSL.g:22071: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"
+    // InternalChartDSL.g:22080:1: rule__XListLiteral__ElementsAssignment_3_0 : ( ruleXExpression ) ;
+    public final void rule__XListLiteral__ElementsAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22084:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22085:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22085:2: ( ruleXExpression )
+            // InternalChartDSL.g:22086: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"
+    // InternalChartDSL.g:22095:1: rule__XListLiteral__ElementsAssignment_3_1_1 : ( ruleXExpression ) ;
+    public final void rule__XListLiteral__ElementsAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22099:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22100:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22100:2: ( ruleXExpression )
+            // InternalChartDSL.g:22101: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"
+    // InternalChartDSL.g:22110: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 {
+            // InternalChartDSL.g:22114:1: ( ( ruleJvmFormalParameter ) )
+            // InternalChartDSL.g:22115:2: ( ruleJvmFormalParameter )
+            {
+            // InternalChartDSL.g:22115:2: ( ruleJvmFormalParameter )
+            // InternalChartDSL.g:22116: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"
+    // InternalChartDSL.g:22125: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 {
+            // InternalChartDSL.g:22129:1: ( ( ruleJvmFormalParameter ) )
+            // InternalChartDSL.g:22130:2: ( ruleJvmFormalParameter )
+            {
+            // InternalChartDSL.g:22130:2: ( ruleJvmFormalParameter )
+            // InternalChartDSL.g:22131: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"
+    // InternalChartDSL.g:22140:1: rule__XClosure__ExplicitSyntaxAssignment_1_0_1 : ( ( '|' ) ) ;
+    public final void rule__XClosure__ExplicitSyntaxAssignment_1_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22144:1: ( ( ( '|' ) ) )
+            // InternalChartDSL.g:22145:2: ( ( '|' ) )
+            {
+            // InternalChartDSL.g:22145:2: ( ( '|' ) )
+            // InternalChartDSL.g:22146:3: ( '|' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
+            }
+            // InternalChartDSL.g:22147:3: ( '|' )
+            // InternalChartDSL.g:22148:4: '|'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXClosureAccess().getExplicitSyntaxVerticalLineKeyword_1_0_1_0()); 
+            }
+            match(input,152,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"
+    // InternalChartDSL.g:22159:1: rule__XClosure__ExpressionAssignment_2 : ( ruleXExpressionInClosure ) ;
+    public final void rule__XClosure__ExpressionAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22163:1: ( ( ruleXExpressionInClosure ) )
+            // InternalChartDSL.g:22164:2: ( ruleXExpressionInClosure )
+            {
+            // InternalChartDSL.g:22164:2: ( ruleXExpressionInClosure )
+            // InternalChartDSL.g:22165: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"
+    // InternalChartDSL.g:22174:1: rule__XExpressionInClosure__ExpressionsAssignment_1_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    public final void rule__XExpressionInClosure__ExpressionsAssignment_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22178:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalChartDSL.g:22179:2: ( ruleXExpressionOrVarDeclaration )
+            {
+            // InternalChartDSL.g:22179:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalChartDSL.g:22180: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"
+    // InternalChartDSL.g:22189: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 {
+            // InternalChartDSL.g:22193:1: ( ( ruleJvmFormalParameter ) )
+            // InternalChartDSL.g:22194:2: ( ruleJvmFormalParameter )
+            {
+            // InternalChartDSL.g:22194:2: ( ruleJvmFormalParameter )
+            // InternalChartDSL.g:22195: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"
+    // InternalChartDSL.g:22204: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 {
+            // InternalChartDSL.g:22208:1: ( ( ruleJvmFormalParameter ) )
+            // InternalChartDSL.g:22209:2: ( ruleJvmFormalParameter )
+            {
+            // InternalChartDSL.g:22209:2: ( ruleJvmFormalParameter )
+            // InternalChartDSL.g:22210: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"
+    // InternalChartDSL.g:22219:1: rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2 : ( ( '|' ) ) ;
+    public final void rule__XShortClosure__ExplicitSyntaxAssignment_0_0_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22223:1: ( ( ( '|' ) ) )
+            // InternalChartDSL.g:22224:2: ( ( '|' ) )
+            {
+            // InternalChartDSL.g:22224:2: ( ( '|' ) )
+            // InternalChartDSL.g:22225:3: ( '|' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
+            }
+            // InternalChartDSL.g:22226:3: ( '|' )
+            // InternalChartDSL.g:22227:4: '|'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXShortClosureAccess().getExplicitSyntaxVerticalLineKeyword_0_0_2_0()); 
+            }
+            match(input,152,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"
+    // InternalChartDSL.g:22238:1: rule__XShortClosure__ExpressionAssignment_1 : ( ruleXExpression ) ;
+    public final void rule__XShortClosure__ExpressionAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22242:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22243:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22243:2: ( ruleXExpression )
+            // InternalChartDSL.g:22244: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"
+    // InternalChartDSL.g:22253:1: rule__XIfExpression__IfAssignment_3 : ( ruleXExpression ) ;
+    public final void rule__XIfExpression__IfAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22257:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22258:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22258:2: ( ruleXExpression )
+            // InternalChartDSL.g:22259: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"
+    // InternalChartDSL.g:22268:1: rule__XIfExpression__ThenAssignment_5 : ( ruleXExpression ) ;
+    public final void rule__XIfExpression__ThenAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22272:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22273:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22273:2: ( ruleXExpression )
+            // InternalChartDSL.g:22274: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"
+    // InternalChartDSL.g:22283:1: rule__XIfExpression__ElseAssignment_6_1 : ( ruleXExpression ) ;
+    public final void rule__XIfExpression__ElseAssignment_6_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22287:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22288:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22288:2: ( ruleXExpression )
+            // InternalChartDSL.g:22289: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"
+    // InternalChartDSL.g:22298: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 {
+            // InternalChartDSL.g:22302:1: ( ( ruleJvmFormalParameter ) )
+            // InternalChartDSL.g:22303:2: ( ruleJvmFormalParameter )
+            {
+            // InternalChartDSL.g:22303:2: ( ruleJvmFormalParameter )
+            // InternalChartDSL.g:22304: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"
+    // InternalChartDSL.g:22313:1: rule__XSwitchExpression__SwitchAssignment_2_0_1 : ( ruleXExpression ) ;
+    public final void rule__XSwitchExpression__SwitchAssignment_2_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22317:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22318:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22318:2: ( ruleXExpression )
+            // InternalChartDSL.g:22319: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"
+    // InternalChartDSL.g:22328: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 {
+            // InternalChartDSL.g:22332:1: ( ( ruleJvmFormalParameter ) )
+            // InternalChartDSL.g:22333:2: ( ruleJvmFormalParameter )
+            {
+            // InternalChartDSL.g:22333:2: ( ruleJvmFormalParameter )
+            // InternalChartDSL.g:22334: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"
+    // InternalChartDSL.g:22343:1: rule__XSwitchExpression__SwitchAssignment_2_1_1 : ( ruleXExpression ) ;
+    public final void rule__XSwitchExpression__SwitchAssignment_2_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22347:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22348:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22348:2: ( ruleXExpression )
+            // InternalChartDSL.g:22349: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"
+    // InternalChartDSL.g:22358:1: rule__XSwitchExpression__CasesAssignment_4 : ( ruleXCasePart ) ;
+    public final void rule__XSwitchExpression__CasesAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22362:1: ( ( ruleXCasePart ) )
+            // InternalChartDSL.g:22363:2: ( ruleXCasePart )
+            {
+            // InternalChartDSL.g:22363:2: ( ruleXCasePart )
+            // InternalChartDSL.g:22364: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"
+    // InternalChartDSL.g:22373:1: rule__XSwitchExpression__DefaultAssignment_5_2 : ( ruleXExpression ) ;
+    public final void rule__XSwitchExpression__DefaultAssignment_5_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22377:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22378:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22378:2: ( ruleXExpression )
+            // InternalChartDSL.g:22379: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"
+    // InternalChartDSL.g:22388:1: rule__XCasePart__TypeGuardAssignment_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__XCasePart__TypeGuardAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22392:1: ( ( ruleJvmTypeReference ) )
+            // InternalChartDSL.g:22393:2: ( ruleJvmTypeReference )
+            {
+            // InternalChartDSL.g:22393:2: ( ruleJvmTypeReference )
+            // InternalChartDSL.g:22394: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"
+    // InternalChartDSL.g:22403:1: rule__XCasePart__CaseAssignment_2_1 : ( ruleXExpression ) ;
+    public final void rule__XCasePart__CaseAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22407:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22408:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22408:2: ( ruleXExpression )
+            // InternalChartDSL.g:22409: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"
+    // InternalChartDSL.g:22418:1: rule__XCasePart__ThenAssignment_3_0_1 : ( ruleXExpression ) ;
+    public final void rule__XCasePart__ThenAssignment_3_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22422:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22423:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22423:2: ( ruleXExpression )
+            // InternalChartDSL.g:22424: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"
+    // InternalChartDSL.g:22433:1: rule__XCasePart__FallThroughAssignment_3_1 : ( ( ',' ) ) ;
+    public final void rule__XCasePart__FallThroughAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22437:1: ( ( ( ',' ) ) )
+            // InternalChartDSL.g:22438:2: ( ( ',' ) )
+            {
+            // InternalChartDSL.g:22438:2: ( ( ',' ) )
+            // InternalChartDSL.g:22439:3: ( ',' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
+            }
+            // InternalChartDSL.g:22440:3: ( ',' )
+            // InternalChartDSL.g:22441:4: ','
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXCasePartAccess().getFallThroughCommaKeyword_3_1_0()); 
+            }
+            match(input,98,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"
+    // InternalChartDSL.g:22452:1: rule__XForLoopExpression__DeclaredParamAssignment_0_0_3 : ( ruleJvmFormalParameter ) ;
+    public final void rule__XForLoopExpression__DeclaredParamAssignment_0_0_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22456:1: ( ( ruleJvmFormalParameter ) )
+            // InternalChartDSL.g:22457:2: ( ruleJvmFormalParameter )
+            {
+            // InternalChartDSL.g:22457:2: ( ruleJvmFormalParameter )
+            // InternalChartDSL.g:22458: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"
+    // InternalChartDSL.g:22467:1: rule__XForLoopExpression__ForExpressionAssignment_1 : ( ruleXExpression ) ;
+    public final void rule__XForLoopExpression__ForExpressionAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22471:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22472:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22472:2: ( ruleXExpression )
+            // InternalChartDSL.g:22473: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"
+    // InternalChartDSL.g:22482:1: rule__XForLoopExpression__EachExpressionAssignment_3 : ( ruleXExpression ) ;
+    public final void rule__XForLoopExpression__EachExpressionAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22486:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22487:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22487:2: ( ruleXExpression )
+            // InternalChartDSL.g:22488: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"
+    // InternalChartDSL.g:22497:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    public final void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22501:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalChartDSL.g:22502:2: ( ruleXExpressionOrVarDeclaration )
+            {
+            // InternalChartDSL.g:22502:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalChartDSL.g:22503: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"
+    // InternalChartDSL.g:22512:1: rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1 : ( ruleXExpressionOrVarDeclaration ) ;
+    public final void rule__XBasicForLoopExpression__InitExpressionsAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22516:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalChartDSL.g:22517:2: ( ruleXExpressionOrVarDeclaration )
+            {
+            // InternalChartDSL.g:22517:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalChartDSL.g:22518: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"
+    // InternalChartDSL.g:22527:1: rule__XBasicForLoopExpression__ExpressionAssignment_5 : ( ruleXExpression ) ;
+    public final void rule__XBasicForLoopExpression__ExpressionAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22531:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22532:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22532:2: ( ruleXExpression )
+            // InternalChartDSL.g:22533: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"
+    // InternalChartDSL.g:22542:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0 : ( ruleXExpression ) ;
+    public final void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22546:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22547:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22547:2: ( ruleXExpression )
+            // InternalChartDSL.g:22548: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"
+    // InternalChartDSL.g:22557:1: rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1 : ( ruleXExpression ) ;
+    public final void rule__XBasicForLoopExpression__UpdateExpressionsAssignment_7_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22561:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22562:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22562:2: ( ruleXExpression )
+            // InternalChartDSL.g:22563: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"
+    // InternalChartDSL.g:22572:1: rule__XBasicForLoopExpression__EachExpressionAssignment_9 : ( ruleXExpression ) ;
+    public final void rule__XBasicForLoopExpression__EachExpressionAssignment_9() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22576:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22577:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22577:2: ( ruleXExpression )
+            // InternalChartDSL.g:22578: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"
+    // InternalChartDSL.g:22587:1: rule__XWhileExpression__PredicateAssignment_3 : ( ruleXExpression ) ;
+    public final void rule__XWhileExpression__PredicateAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22591:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22592:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22592:2: ( ruleXExpression )
+            // InternalChartDSL.g:22593: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"
+    // InternalChartDSL.g:22602:1: rule__XWhileExpression__BodyAssignment_5 : ( ruleXExpression ) ;
+    public final void rule__XWhileExpression__BodyAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22606:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22607:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22607:2: ( ruleXExpression )
+            // InternalChartDSL.g:22608: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"
+    // InternalChartDSL.g:22617:1: rule__XDoWhileExpression__BodyAssignment_2 : ( ruleXExpression ) ;
+    public final void rule__XDoWhileExpression__BodyAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22621:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22622:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22622:2: ( ruleXExpression )
+            // InternalChartDSL.g:22623: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"
+    // InternalChartDSL.g:22632:1: rule__XDoWhileExpression__PredicateAssignment_5 : ( ruleXExpression ) ;
+    public final void rule__XDoWhileExpression__PredicateAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22636:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22637:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22637:2: ( ruleXExpression )
+            // InternalChartDSL.g:22638: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"
+    // InternalChartDSL.g:22647:1: rule__XBlockExpression__ExpressionsAssignment_2_0 : ( ruleXExpressionOrVarDeclaration ) ;
+    public final void rule__XBlockExpression__ExpressionsAssignment_2_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22651:1: ( ( ruleXExpressionOrVarDeclaration ) )
+            // InternalChartDSL.g:22652:2: ( ruleXExpressionOrVarDeclaration )
+            {
+            // InternalChartDSL.g:22652:2: ( ruleXExpressionOrVarDeclaration )
+            // InternalChartDSL.g:22653: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"
+    // InternalChartDSL.g:22662:1: rule__XVariableDeclaration__WriteableAssignment_1_0 : ( ( 'var' ) ) ;
+    public final void rule__XVariableDeclaration__WriteableAssignment_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22666:1: ( ( ( 'var' ) ) )
+            // InternalChartDSL.g:22667:2: ( ( 'var' ) )
+            {
+            // InternalChartDSL.g:22667:2: ( ( 'var' ) )
+            // InternalChartDSL.g:22668:3: ( 'var' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
+            }
+            // InternalChartDSL.g:22669:3: ( 'var' )
+            // InternalChartDSL.g:22670:4: 'var'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXVariableDeclarationAccess().getWriteableVarKeyword_1_0_0()); 
+            }
+            match(input,153,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"
+    // InternalChartDSL.g:22681: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 {
+            // InternalChartDSL.g:22685:1: ( ( ruleJvmTypeReference ) )
+            // InternalChartDSL.g:22686:2: ( ruleJvmTypeReference )
+            {
+            // InternalChartDSL.g:22686:2: ( ruleJvmTypeReference )
+            // InternalChartDSL.g:22687: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"
+    // InternalChartDSL.g:22696: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 {
+            // InternalChartDSL.g:22700:1: ( ( ruleValidID ) )
+            // InternalChartDSL.g:22701:2: ( ruleValidID )
+            {
+            // InternalChartDSL.g:22701:2: ( ruleValidID )
+            // InternalChartDSL.g:22702: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"
+    // InternalChartDSL.g:22711:1: rule__XVariableDeclaration__NameAssignment_2_1 : ( ruleValidID ) ;
+    public final void rule__XVariableDeclaration__NameAssignment_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22715:1: ( ( ruleValidID ) )
+            // InternalChartDSL.g:22716:2: ( ruleValidID )
+            {
+            // InternalChartDSL.g:22716:2: ( ruleValidID )
+            // InternalChartDSL.g:22717: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"
+    // InternalChartDSL.g:22726:1: rule__XVariableDeclaration__RightAssignment_3_1 : ( ruleXExpression ) ;
+    public final void rule__XVariableDeclaration__RightAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22730:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22731:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22731:2: ( ruleXExpression )
+            // InternalChartDSL.g:22732: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"
+    // InternalChartDSL.g:22741:1: rule__JvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
+    public final void rule__JvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22745:1: ( ( ruleJvmTypeReference ) )
+            // InternalChartDSL.g:22746:2: ( ruleJvmTypeReference )
+            {
+            // InternalChartDSL.g:22746:2: ( ruleJvmTypeReference )
+            // InternalChartDSL.g:22747: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"
+    // InternalChartDSL.g:22756:1: rule__JvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
+    public final void rule__JvmFormalParameter__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22760:1: ( ( ruleValidID ) )
+            // InternalChartDSL.g:22761:2: ( ruleValidID )
+            {
+            // InternalChartDSL.g:22761:2: ( ruleValidID )
+            // InternalChartDSL.g:22762: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"
+    // InternalChartDSL.g:22771:1: rule__FullJvmFormalParameter__ParameterTypeAssignment_0 : ( ruleJvmTypeReference ) ;
+    public final void rule__FullJvmFormalParameter__ParameterTypeAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22775:1: ( ( ruleJvmTypeReference ) )
+            // InternalChartDSL.g:22776:2: ( ruleJvmTypeReference )
+            {
+            // InternalChartDSL.g:22776:2: ( ruleJvmTypeReference )
+            // InternalChartDSL.g:22777: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"
+    // InternalChartDSL.g:22786:1: rule__FullJvmFormalParameter__NameAssignment_1 : ( ruleValidID ) ;
+    public final void rule__FullJvmFormalParameter__NameAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22790:1: ( ( ruleValidID ) )
+            // InternalChartDSL.g:22791:2: ( ruleValidID )
+            {
+            // InternalChartDSL.g:22791:2: ( ruleValidID )
+            // InternalChartDSL.g:22792: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"
+    // InternalChartDSL.g:22801:1: rule__XFeatureCall__TypeArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__XFeatureCall__TypeArgumentsAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22805:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalChartDSL.g:22806:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalChartDSL.g:22806:2: ( ruleJvmArgumentTypeReference )
+            // InternalChartDSL.g:22807: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"
+    // InternalChartDSL.g:22816:1: rule__XFeatureCall__TypeArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__XFeatureCall__TypeArgumentsAssignment_1_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22820:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalChartDSL.g:22821:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalChartDSL.g:22821:2: ( ruleJvmArgumentTypeReference )
+            // InternalChartDSL.g:22822: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"
+    // InternalChartDSL.g:22831:1: rule__XFeatureCall__FeatureAssignment_2 : ( ( ruleIdOrSuper ) ) ;
+    public final void rule__XFeatureCall__FeatureAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22835:1: ( ( ( ruleIdOrSuper ) ) )
+            // InternalChartDSL.g:22836:2: ( ( ruleIdOrSuper ) )
+            {
+            // InternalChartDSL.g:22836:2: ( ( ruleIdOrSuper ) )
+            // InternalChartDSL.g:22837:3: ( ruleIdOrSuper )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getFeatureJvmIdentifiableElementCrossReference_2_0()); 
+            }
+            // InternalChartDSL.g:22838:3: ( ruleIdOrSuper )
+            // InternalChartDSL.g:22839: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"
+    // InternalChartDSL.g:22850:1: rule__XFeatureCall__ExplicitOperationCallAssignment_3_0 : ( ( '(' ) ) ;
+    public final void rule__XFeatureCall__ExplicitOperationCallAssignment_3_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22854:1: ( ( ( '(' ) ) )
+            // InternalChartDSL.g:22855:2: ( ( '(' ) )
+            {
+            // InternalChartDSL.g:22855:2: ( ( '(' ) )
+            // InternalChartDSL.g:22856:3: ( '(' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
+            }
+            // InternalChartDSL.g:22857:3: ( '(' )
+            // InternalChartDSL.g:22858:4: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXFeatureCallAccess().getExplicitOperationCallLeftParenthesisKeyword_3_0_0()); 
+            }
+            match(input,96,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"
+    // InternalChartDSL.g:22869:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 : ( ruleXShortClosure ) ;
+    public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22873:1: ( ( ruleXShortClosure ) )
+            // InternalChartDSL.g:22874:2: ( ruleXShortClosure )
+            {
+            // InternalChartDSL.g:22874:2: ( ruleXShortClosure )
+            // InternalChartDSL.g:22875: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"
+    // InternalChartDSL.g:22884: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 {
+            // InternalChartDSL.g:22888:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22889:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22889:2: ( ruleXExpression )
+            // InternalChartDSL.g:22890: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"
+    // InternalChartDSL.g:22899: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 {
+            // InternalChartDSL.g:22903:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:22904:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:22904:2: ( ruleXExpression )
+            // InternalChartDSL.g:22905: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"
+    // InternalChartDSL.g:22914:1: rule__XFeatureCall__FeatureCallArgumentsAssignment_4 : ( ruleXClosure ) ;
+    public final void rule__XFeatureCall__FeatureCallArgumentsAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22918:1: ( ( ruleXClosure ) )
+            // InternalChartDSL.g:22919:2: ( ruleXClosure )
+            {
+            // InternalChartDSL.g:22919:2: ( ruleXClosure )
+            // InternalChartDSL.g:22920: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"
+    // InternalChartDSL.g:22929:1: rule__XConstructorCall__ConstructorAssignment_2 : ( ( ruleQualifiedName ) ) ;
+    public final void rule__XConstructorCall__ConstructorAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22933:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalChartDSL.g:22934:2: ( ( ruleQualifiedName ) )
+            {
+            // InternalChartDSL.g:22934:2: ( ( ruleQualifiedName ) )
+            // InternalChartDSL.g:22935:3: ( ruleQualifiedName )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getConstructorJvmConstructorCrossReference_2_0()); 
+            }
+            // InternalChartDSL.g:22936:3: ( ruleQualifiedName )
+            // InternalChartDSL.g:22937: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"
+    // InternalChartDSL.g:22948:1: rule__XConstructorCall__TypeArgumentsAssignment_3_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__XConstructorCall__TypeArgumentsAssignment_3_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22952:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalChartDSL.g:22953:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalChartDSL.g:22953:2: ( ruleJvmArgumentTypeReference )
+            // InternalChartDSL.g:22954: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"
+    // InternalChartDSL.g:22963:1: rule__XConstructorCall__TypeArgumentsAssignment_3_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__XConstructorCall__TypeArgumentsAssignment_3_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22967:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalChartDSL.g:22968:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalChartDSL.g:22968:2: ( ruleJvmArgumentTypeReference )
+            // InternalChartDSL.g:22969: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"
+    // InternalChartDSL.g:22978:1: rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0 : ( ( '(' ) ) ;
+    public final void rule__XConstructorCall__ExplicitConstructorCallAssignment_4_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:22982:1: ( ( ( '(' ) ) )
+            // InternalChartDSL.g:22983:2: ( ( '(' ) )
+            {
+            // InternalChartDSL.g:22983:2: ( ( '(' ) )
+            // InternalChartDSL.g:22984:3: ( '(' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
+            }
+            // InternalChartDSL.g:22985:3: ( '(' )
+            // InternalChartDSL.g:22986:4: '('
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXConstructorCallAccess().getExplicitConstructorCallLeftParenthesisKeyword_4_0_0()); 
+            }
+            match(input,96,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"
+    // InternalChartDSL.g:22997:1: rule__XConstructorCall__ArgumentsAssignment_4_1_0 : ( ruleXShortClosure ) ;
+    public final void rule__XConstructorCall__ArgumentsAssignment_4_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23001:1: ( ( ruleXShortClosure ) )
+            // InternalChartDSL.g:23002:2: ( ruleXShortClosure )
+            {
+            // InternalChartDSL.g:23002:2: ( ruleXShortClosure )
+            // InternalChartDSL.g:23003: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"
+    // InternalChartDSL.g:23012: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 {
+            // InternalChartDSL.g:23016:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:23017:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:23017:2: ( ruleXExpression )
+            // InternalChartDSL.g:23018: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"
+    // InternalChartDSL.g:23027: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 {
+            // InternalChartDSL.g:23031:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:23032:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:23032:2: ( ruleXExpression )
+            // InternalChartDSL.g:23033: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"
+    // InternalChartDSL.g:23042:1: rule__XConstructorCall__ArgumentsAssignment_5 : ( ruleXClosure ) ;
+    public final void rule__XConstructorCall__ArgumentsAssignment_5() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23046:1: ( ( ruleXClosure ) )
+            // InternalChartDSL.g:23047:2: ( ruleXClosure )
+            {
+            // InternalChartDSL.g:23047:2: ( ruleXClosure )
+            // InternalChartDSL.g:23048: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"
+    // InternalChartDSL.g:23057:1: rule__XBooleanLiteral__IsTrueAssignment_1_1 : ( ( 'true' ) ) ;
+    public final void rule__XBooleanLiteral__IsTrueAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23061:1: ( ( ( 'true' ) ) )
+            // InternalChartDSL.g:23062:2: ( ( 'true' ) )
+            {
+            // InternalChartDSL.g:23062:2: ( ( 'true' ) )
+            // InternalChartDSL.g:23063:3: ( 'true' )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
+            }
+            // InternalChartDSL.g:23064:3: ( 'true' )
+            // InternalChartDSL.g:23065:4: 'true'
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXBooleanLiteralAccess().getIsTrueTrueKeyword_1_1_0()); 
+            }
+            match(input,154,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"
+    // InternalChartDSL.g:23076:1: rule__XNumberLiteral__ValueAssignment_1 : ( ruleNumber ) ;
+    public final void rule__XNumberLiteral__ValueAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23080:1: ( ( ruleNumber ) )
+            // InternalChartDSL.g:23081:2: ( ruleNumber )
+            {
+            // InternalChartDSL.g:23081:2: ( ruleNumber )
+            // InternalChartDSL.g:23082: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"
+    // InternalChartDSL.g:23091:1: rule__XStringLiteral__ValueAssignment_1 : ( RULE_STRING ) ;
+    public final void rule__XStringLiteral__ValueAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23095:1: ( ( RULE_STRING ) )
+            // InternalChartDSL.g:23096:2: ( RULE_STRING )
+            {
+            // InternalChartDSL.g:23096:2: ( RULE_STRING )
+            // InternalChartDSL.g:23097: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"
+    // InternalChartDSL.g:23106:1: rule__XTypeLiteral__TypeAssignment_3 : ( ( ruleQualifiedName ) ) ;
+    public final void rule__XTypeLiteral__TypeAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23110:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalChartDSL.g:23111:2: ( ( ruleQualifiedName ) )
+            {
+            // InternalChartDSL.g:23111:2: ( ( ruleQualifiedName ) )
+            // InternalChartDSL.g:23112:3: ( ruleQualifiedName )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getXTypeLiteralAccess().getTypeJvmTypeCrossReference_3_0()); 
+            }
+            // InternalChartDSL.g:23113:3: ( ruleQualifiedName )
+            // InternalChartDSL.g:23114: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"
+    // InternalChartDSL.g:23125:1: rule__XTypeLiteral__ArrayDimensionsAssignment_4 : ( ruleArrayBrackets ) ;
+    public final void rule__XTypeLiteral__ArrayDimensionsAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23129:1: ( ( ruleArrayBrackets ) )
+            // InternalChartDSL.g:23130:2: ( ruleArrayBrackets )
+            {
+            // InternalChartDSL.g:23130:2: ( ruleArrayBrackets )
+            // InternalChartDSL.g:23131: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"
+    // InternalChartDSL.g:23140:1: rule__XThrowExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    public final void rule__XThrowExpression__ExpressionAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23144:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:23145:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:23145:2: ( ruleXExpression )
+            // InternalChartDSL.g:23146: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"
+    // InternalChartDSL.g:23155:1: rule__XReturnExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    public final void rule__XReturnExpression__ExpressionAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23159:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:23160:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:23160:2: ( ruleXExpression )
+            // InternalChartDSL.g:23161: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"
+    // InternalChartDSL.g:23170:1: rule__XTryCatchFinallyExpression__ExpressionAssignment_2 : ( ruleXExpression ) ;
+    public final void rule__XTryCatchFinallyExpression__ExpressionAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23174:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:23175:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:23175:2: ( ruleXExpression )
+            // InternalChartDSL.g:23176: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"
+    // InternalChartDSL.g:23185:1: rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 : ( ruleXCatchClause ) ;
+    public final void rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23189:1: ( ( ruleXCatchClause ) )
+            // InternalChartDSL.g:23190:2: ( ruleXCatchClause )
+            {
+            // InternalChartDSL.g:23190:2: ( ruleXCatchClause )
+            // InternalChartDSL.g:23191: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"
+    // InternalChartDSL.g:23200: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 {
+            // InternalChartDSL.g:23204:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:23205:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:23205:2: ( ruleXExpression )
+            // InternalChartDSL.g:23206: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"
+    // InternalChartDSL.g:23215:1: rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1 : ( ruleXExpression ) ;
+    public final void rule__XTryCatchFinallyExpression__FinallyExpressionAssignment_3_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23219:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:23220:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:23220:2: ( ruleXExpression )
+            // InternalChartDSL.g:23221: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"
+    // InternalChartDSL.g:23230:1: rule__XSynchronizedExpression__ParamAssignment_1 : ( ruleXExpression ) ;
+    public final void rule__XSynchronizedExpression__ParamAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23234:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:23235:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:23235:2: ( ruleXExpression )
+            // InternalChartDSL.g:23236: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"
+    // InternalChartDSL.g:23245:1: rule__XSynchronizedExpression__ExpressionAssignment_3 : ( ruleXExpression ) ;
+    public final void rule__XSynchronizedExpression__ExpressionAssignment_3() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23249:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:23250:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:23250:2: ( ruleXExpression )
+            // InternalChartDSL.g:23251: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"
+    // InternalChartDSL.g:23260:1: rule__XCatchClause__DeclaredParamAssignment_2 : ( ruleFullJvmFormalParameter ) ;
+    public final void rule__XCatchClause__DeclaredParamAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23264:1: ( ( ruleFullJvmFormalParameter ) )
+            // InternalChartDSL.g:23265:2: ( ruleFullJvmFormalParameter )
+            {
+            // InternalChartDSL.g:23265:2: ( ruleFullJvmFormalParameter )
+            // InternalChartDSL.g:23266: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"
+    // InternalChartDSL.g:23275:1: rule__XCatchClause__ExpressionAssignment_4 : ( ruleXExpression ) ;
+    public final void rule__XCatchClause__ExpressionAssignment_4() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23279:1: ( ( ruleXExpression ) )
+            // InternalChartDSL.g:23280:2: ( ruleXExpression )
+            {
+            // InternalChartDSL.g:23280:2: ( ruleXExpression )
+            // InternalChartDSL.g:23281: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"
+    // InternalChartDSL.g:23290:1: rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0 : ( ruleJvmTypeReference ) ;
+    public final void rule__XFunctionTypeRef__ParamTypesAssignment_0_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23294:1: ( ( ruleJvmTypeReference ) )
+            // InternalChartDSL.g:23295:2: ( ruleJvmTypeReference )
+            {
+            // InternalChartDSL.g:23295:2: ( ruleJvmTypeReference )
+            // InternalChartDSL.g:23296: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"
+    // InternalChartDSL.g:23305: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 {
+            // InternalChartDSL.g:23309:1: ( ( ruleJvmTypeReference ) )
+            // InternalChartDSL.g:23310:2: ( ruleJvmTypeReference )
+            {
+            // InternalChartDSL.g:23310:2: ( ruleJvmTypeReference )
+            // InternalChartDSL.g:23311: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"
+    // InternalChartDSL.g:23320:1: rule__XFunctionTypeRef__ReturnTypeAssignment_2 : ( ruleJvmTypeReference ) ;
+    public final void rule__XFunctionTypeRef__ReturnTypeAssignment_2() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23324:1: ( ( ruleJvmTypeReference ) )
+            // InternalChartDSL.g:23325:2: ( ruleJvmTypeReference )
+            {
+            // InternalChartDSL.g:23325:2: ( ruleJvmTypeReference )
+            // InternalChartDSL.g:23326: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"
+    // InternalChartDSL.g:23335:1: rule__JvmParameterizedTypeReference__TypeAssignment_0 : ( ( ruleQualifiedName ) ) ;
+    public final void rule__JvmParameterizedTypeReference__TypeAssignment_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23339:1: ( ( ( ruleQualifiedName ) ) )
+            // InternalChartDSL.g:23340:2: ( ( ruleQualifiedName ) )
+            {
+            // InternalChartDSL.g:23340:2: ( ( ruleQualifiedName ) )
+            // InternalChartDSL.g:23341:3: ( ruleQualifiedName )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_0_0()); 
+            }
+            // InternalChartDSL.g:23342:3: ( ruleQualifiedName )
+            // InternalChartDSL.g:23343: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"
+    // InternalChartDSL.g:23354:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23358:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalChartDSL.g:23359:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalChartDSL.g:23359:2: ( ruleJvmArgumentTypeReference )
+            // InternalChartDSL.g:23360: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"
+    // InternalChartDSL.g:23369:1: rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1 : ( ruleJvmArgumentTypeReference ) ;
+    public final void rule__JvmParameterizedTypeReference__ArgumentsAssignment_1_2_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23373:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalChartDSL.g:23374:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalChartDSL.g:23374:2: ( ruleJvmArgumentTypeReference )
+            // InternalChartDSL.g:23375: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"
+    // InternalChartDSL.g:23384:1: rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1 : ( ( ruleValidID ) ) ;
+    public final void rule__JvmParameterizedTypeReference__TypeAssignment_1_4_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23388:1: ( ( ( ruleValidID ) ) )
+            // InternalChartDSL.g:23389:2: ( ( ruleValidID ) )
+            {
+            // InternalChartDSL.g:23389:2: ( ( ruleValidID ) )
+            // InternalChartDSL.g:23390:3: ( ruleValidID )
+            {
+            if ( state.backtracking==0 ) {
+               before(grammarAccess.getJvmParameterizedTypeReferenceAccess().getTypeJvmTypeCrossReference_1_4_1_0()); 
+            }
+            // InternalChartDSL.g:23391:3: ( ruleValidID )
+            // InternalChartDSL.g:23392: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"
+    // InternalChartDSL.g:23403: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 {
+            // InternalChartDSL.g:23407:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalChartDSL.g:23408:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalChartDSL.g:23408:2: ( ruleJvmArgumentTypeReference )
+            // InternalChartDSL.g:23409: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"
+    // InternalChartDSL.g:23418: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 {
+            // InternalChartDSL.g:23422:1: ( ( ruleJvmArgumentTypeReference ) )
+            // InternalChartDSL.g:23423:2: ( ruleJvmArgumentTypeReference )
+            {
+            // InternalChartDSL.g:23423:2: ( ruleJvmArgumentTypeReference )
+            // InternalChartDSL.g:23424: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"
+    // InternalChartDSL.g:23433:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0 : ( ruleJvmUpperBound ) ;
+    public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23437:1: ( ( ruleJvmUpperBound ) )
+            // InternalChartDSL.g:23438:2: ( ruleJvmUpperBound )
+            {
+            // InternalChartDSL.g:23438:2: ( ruleJvmUpperBound )
+            // InternalChartDSL.g:23439: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"
+    // InternalChartDSL.g:23448:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1 : ( ruleJvmUpperBoundAnded ) ;
+    public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_0_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23452:1: ( ( ruleJvmUpperBoundAnded ) )
+            // InternalChartDSL.g:23453:2: ( ruleJvmUpperBoundAnded )
+            {
+            // InternalChartDSL.g:23453:2: ( ruleJvmUpperBoundAnded )
+            // InternalChartDSL.g:23454: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"
+    // InternalChartDSL.g:23463:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0 : ( ruleJvmLowerBound ) ;
+    public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_0() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23467:1: ( ( ruleJvmLowerBound ) )
+            // InternalChartDSL.g:23468:2: ( ruleJvmLowerBound )
+            {
+            // InternalChartDSL.g:23468:2: ( ruleJvmLowerBound )
+            // InternalChartDSL.g:23469: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"
+    // InternalChartDSL.g:23478:1: rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1 : ( ruleJvmLowerBoundAnded ) ;
+    public final void rule__JvmWildcardTypeReference__ConstraintsAssignment_2_1_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23482:1: ( ( ruleJvmLowerBoundAnded ) )
+            // InternalChartDSL.g:23483:2: ( ruleJvmLowerBoundAnded )
+            {
+            // InternalChartDSL.g:23483:2: ( ruleJvmLowerBoundAnded )
+            // InternalChartDSL.g:23484: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"
+    // InternalChartDSL.g:23493:1: rule__JvmUpperBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__JvmUpperBound__TypeReferenceAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23497:1: ( ( ruleJvmTypeReference ) )
+            // InternalChartDSL.g:23498:2: ( ruleJvmTypeReference )
+            {
+            // InternalChartDSL.g:23498:2: ( ruleJvmTypeReference )
+            // InternalChartDSL.g:23499: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"
+    // InternalChartDSL.g:23508:1: rule__JvmUpperBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__JvmUpperBoundAnded__TypeReferenceAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23512:1: ( ( ruleJvmTypeReference ) )
+            // InternalChartDSL.g:23513:2: ( ruleJvmTypeReference )
+            {
+            // InternalChartDSL.g:23513:2: ( ruleJvmTypeReference )
+            // InternalChartDSL.g:23514: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"
+    // InternalChartDSL.g:23523:1: rule__JvmLowerBound__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__JvmLowerBound__TypeReferenceAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23527:1: ( ( ruleJvmTypeReference ) )
+            // InternalChartDSL.g:23528:2: ( ruleJvmTypeReference )
+            {
+            // InternalChartDSL.g:23528:2: ( ruleJvmTypeReference )
+            // InternalChartDSL.g:23529: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"
+    // InternalChartDSL.g:23538:1: rule__JvmLowerBoundAnded__TypeReferenceAssignment_1 : ( ruleJvmTypeReference ) ;
+    public final void rule__JvmLowerBoundAnded__TypeReferenceAssignment_1() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23542:1: ( ( ruleJvmTypeReference ) )
+            // InternalChartDSL.g:23543:2: ( ruleJvmTypeReference )
+            {
+            // InternalChartDSL.g:23543:2: ( ruleJvmTypeReference )
+            // InternalChartDSL.g:23544: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"
+    // InternalChartDSL.g:23553:1: rule__XImportSection__ImportDeclarationsAssignment : ( ruleXImportDeclaration ) ;
+    public final void rule__XImportSection__ImportDeclarationsAssignment() throws RecognitionException {
+
+        		int stackSize = keepStackSize();
+        	
+        try {
+            // InternalChartDSL.g:23557:1: ( ( ruleXImportDeclaration ) )
+            // InternalChartDSL.g:23558:2: ( ruleXImportDeclaration )
+            {
+            // InternalChartDSL.g:23558:2: ( ruleXImportDeclaration )
+            // InternalChartDSL.g:23559: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 synpred18_InternalChartDSL
+    public final void synpred18_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:2931:2: ( ( ( rule__XAnnotation__Group_3_1_0__0 ) ) )
+        // InternalChartDSL.g:2931:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+        {
+        // InternalChartDSL.g:2931:2: ( ( rule__XAnnotation__Group_3_1_0__0 ) )
+        // InternalChartDSL.g:2932:3: ( rule__XAnnotation__Group_3_1_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXAnnotationAccess().getGroup_3_1_0()); 
+        }
+        // InternalChartDSL.g:2933:3: ( rule__XAnnotation__Group_3_1_0__0 )
+        // InternalChartDSL.g:2933: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 synpred18_InternalChartDSL
+
+    // $ANTLR start synpred19_InternalChartDSL
+    public final void synpred19_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:2952:2: ( ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) ) )
+        // InternalChartDSL.g:2952:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+        {
+        // InternalChartDSL.g:2952:2: ( ( rule__XAnnotationElementValueOrCommaList__Group_0__0 ) )
+        // InternalChartDSL.g:2953:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getGroup_0()); 
+        }
+        // InternalChartDSL.g:2954:3: ( rule__XAnnotationElementValueOrCommaList__Group_0__0 )
+        // InternalChartDSL.g:2954:4: rule__XAnnotationElementValueOrCommaList__Group_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAnnotationElementValueOrCommaList__Group_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred19_InternalChartDSL
+
+    // $ANTLR start synpred20_InternalChartDSL
+    public final void synpred20_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:2973:2: ( ( ( rule__XAnnotationElementValue__Group_0__0 ) ) )
+        // InternalChartDSL.g:2973:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+        {
+        // InternalChartDSL.g:2973:2: ( ( rule__XAnnotationElementValue__Group_0__0 ) )
+        // InternalChartDSL.g:2974:3: ( rule__XAnnotationElementValue__Group_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXAnnotationElementValueAccess().getGroup_0()); 
+        }
+        // InternalChartDSL.g:2975:3: ( rule__XAnnotationElementValue__Group_0__0 )
+        // InternalChartDSL.g:2975:4: rule__XAnnotationElementValue__Group_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAnnotationElementValue__Group_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred20_InternalChartDSL
+
+    // $ANTLR start synpred45_InternalChartDSL
+    public final void synpred45_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:3258:2: ( ( ( rule__OpOther__Group_6_1_0__0 ) ) )
+        // InternalChartDSL.g:3258:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+        {
+        // InternalChartDSL.g:3258:2: ( ( rule__OpOther__Group_6_1_0__0 ) )
+        // InternalChartDSL.g:3259:3: ( rule__OpOther__Group_6_1_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getOpOtherAccess().getGroup_6_1_0()); 
+        }
+        // InternalChartDSL.g:3260:3: ( rule__OpOther__Group_6_1_0__0 )
+        // InternalChartDSL.g:3260: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 synpred45_InternalChartDSL
+
+    // $ANTLR start synpred46_InternalChartDSL
+    public final void synpred46_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:3264:2: ( ( '<' ) )
+        // InternalChartDSL.g:3264:2: ( '<' )
+        {
+        // InternalChartDSL.g:3264:2: ( '<' )
+        // InternalChartDSL.g:3265:3: '<'
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
+        }
+        match(input,27,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred46_InternalChartDSL
+
+    // $ANTLR start synpred59_InternalChartDSL
+    public final void synpred59_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:3477:2: ( ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) ) )
+        // InternalChartDSL.g:3477:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+        {
+        // InternalChartDSL.g:3477:2: ( ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 ) )
+        // InternalChartDSL.g:3478:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsAssignment_1_1_3_1_0()); 
+        }
+        // InternalChartDSL.g:3479:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_3_1_0 )
+        // InternalChartDSL.g:3479: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 synpred59_InternalChartDSL
+
+    // $ANTLR start synpred67_InternalChartDSL
+    public final void synpred67_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:3540:2: ( ( ( ruleXForLoopExpression ) ) )
+        // InternalChartDSL.g:3540:2: ( ( ruleXForLoopExpression ) )
+        {
+        // InternalChartDSL.g:3540:2: ( ( ruleXForLoopExpression ) )
+        // InternalChartDSL.g:3541:3: ( ruleXForLoopExpression )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXPrimaryExpressionAccess().getXForLoopExpressionParserRuleCall_7()); 
+        }
+        // InternalChartDSL.g:3542:3: ( ruleXForLoopExpression )
+        // InternalChartDSL.g:3542:4: ruleXForLoopExpression
+        {
+        pushFollow(FOLLOW_2);
+        ruleXForLoopExpression();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred67_InternalChartDSL
+
+    // $ANTLR start synpred68_InternalChartDSL
+    public final void synpred68_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:3546:2: ( ( ruleXBasicForLoopExpression ) )
+        // InternalChartDSL.g:3546:2: ( ruleXBasicForLoopExpression )
+        {
+        // InternalChartDSL.g:3546:2: ( ruleXBasicForLoopExpression )
+        // InternalChartDSL.g:3547:3: ruleXBasicForLoopExpression
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXPrimaryExpressionAccess().getXBasicForLoopExpressionParserRuleCall_8()); 
+        }
+        pushFollow(FOLLOW_2);
+        ruleXBasicForLoopExpression();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred68_InternalChartDSL
+
+    // $ANTLR start synpred81_InternalChartDSL
+    public final void synpred81_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:3669:2: ( ( ( rule__XSwitchExpression__Group_2_0__0 ) ) )
+        // InternalChartDSL.g:3669:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+        {
+        // InternalChartDSL.g:3669:2: ( ( rule__XSwitchExpression__Group_2_0__0 ) )
+        // InternalChartDSL.g:3670:3: ( rule__XSwitchExpression__Group_2_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXSwitchExpressionAccess().getGroup_2_0()); 
+        }
+        // InternalChartDSL.g:3671:3: ( rule__XSwitchExpression__Group_2_0__0 )
+        // InternalChartDSL.g:3671:4: rule__XSwitchExpression__Group_2_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XSwitchExpression__Group_2_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred81_InternalChartDSL
+
+    // $ANTLR start synpred85_InternalChartDSL
+    public final void synpred85_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:3753:2: ( ( ( rule__XVariableDeclaration__Group_2_0__0 ) ) )
+        // InternalChartDSL.g:3753:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+        {
+        // InternalChartDSL.g:3753:2: ( ( rule__XVariableDeclaration__Group_2_0__0 ) )
+        // InternalChartDSL.g:3754:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXVariableDeclarationAccess().getGroup_2_0()); 
+        }
+        // InternalChartDSL.g:3755:3: ( rule__XVariableDeclaration__Group_2_0__0 )
+        // InternalChartDSL.g:3755:4: rule__XVariableDeclaration__Group_2_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XVariableDeclaration__Group_2_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred85_InternalChartDSL
+
+    // $ANTLR start synpred86_InternalChartDSL
+    public final void synpred86_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:3774:2: ( ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) ) )
+        // InternalChartDSL.g:3774:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+        {
+        // InternalChartDSL.g:3774:2: ( ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 ) )
+        // InternalChartDSL.g:3775:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsAssignment_3_1_0()); 
+        }
+        // InternalChartDSL.g:3776:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0 )
+        // InternalChartDSL.g:3776:4: rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XFeatureCall__FeatureCallArgumentsAssignment_3_1_0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred86_InternalChartDSL
+
+    // $ANTLR start synpred92_InternalChartDSL
+    public final void synpred92_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:3855:2: ( ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) ) )
+        // InternalChartDSL.g:3855:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+        {
+        // InternalChartDSL.g:3855:2: ( ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 ) )
+        // InternalChartDSL.g:3856:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getXConstructorCallAccess().getArgumentsAssignment_4_1_0()); 
+        }
+        // InternalChartDSL.g:3857:3: ( rule__XConstructorCall__ArgumentsAssignment_4_1_0 )
+        // InternalChartDSL.g:3857:4: rule__XConstructorCall__ArgumentsAssignment_4_1_0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XConstructorCall__ArgumentsAssignment_4_1_0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred92_InternalChartDSL
+
+    // $ANTLR start synpred126_InternalChartDSL
+    public final void synpred126_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:5266:3: ( rule__ChartBubble__UnorderedGroup_2 )
+        // InternalChartDSL.g:5266:3: rule__ChartBubble__UnorderedGroup_2
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartBubble__UnorderedGroup_2();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred126_InternalChartDSL
+
+    // $ANTLR start synpred146_InternalChartDSL
+    public final void synpred146_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:8270:3: ( rule__XAssignment__Group_1_1__0 )
+        // InternalChartDSL.g:8270: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_InternalChartDSL
+
+    // $ANTLR start synpred148_InternalChartDSL
+    public final void synpred148_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:8621:3: ( rule__XOrExpression__Group_1__0 )
+        // InternalChartDSL.g:8621:3: rule__XOrExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XOrExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred148_InternalChartDSL
+
+    // $ANTLR start synpred149_InternalChartDSL
+    public final void synpred149_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:8810:3: ( rule__XAndExpression__Group_1__0 )
+        // InternalChartDSL.g:8810:3: rule__XAndExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAndExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred149_InternalChartDSL
+
+    // $ANTLR start synpred150_InternalChartDSL
+    public final void synpred150_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:8999:3: ( rule__XEqualityExpression__Group_1__0 )
+        // InternalChartDSL.g:8999:3: rule__XEqualityExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XEqualityExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred150_InternalChartDSL
+
+    // $ANTLR start synpred151_InternalChartDSL
+    public final void synpred151_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:9188:3: ( rule__XRelationalExpression__Alternatives_1 )
+        // InternalChartDSL.g:9188:3: rule__XRelationalExpression__Alternatives_1
+        {
+        pushFollow(FOLLOW_2);
+        rule__XRelationalExpression__Alternatives_1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred151_InternalChartDSL
+
+    // $ANTLR start synpred152_InternalChartDSL
+    public final void synpred152_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:9566:3: ( rule__XOtherOperatorExpression__Group_1__0 )
+        // InternalChartDSL.g:9566:3: rule__XOtherOperatorExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XOtherOperatorExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred152_InternalChartDSL
+
+    // $ANTLR start synpred153_InternalChartDSL
+    public final void synpred153_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:10079:3: ( rule__XAdditiveExpression__Group_1__0 )
+        // InternalChartDSL.g:10079:3: rule__XAdditiveExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XAdditiveExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred153_InternalChartDSL
+
+    // $ANTLR start synpred154_InternalChartDSL
+    public final void synpred154_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:10268:3: ( rule__XMultiplicativeExpression__Group_1__0 )
+        // InternalChartDSL.g:10268:3: rule__XMultiplicativeExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XMultiplicativeExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred154_InternalChartDSL
+
+    // $ANTLR start synpred155_InternalChartDSL
+    public final void synpred155_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:10538:3: ( rule__XCastedExpression__Group_1__0 )
+        // InternalChartDSL.g:10538:3: rule__XCastedExpression__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XCastedExpression__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred155_InternalChartDSL
+
+    // $ANTLR start synpred156_InternalChartDSL
+    public final void synpred156_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:10727:3: ( rule__XPostfixOperation__Group_1__0 )
+        // InternalChartDSL.g:10727:3: rule__XPostfixOperation__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XPostfixOperation__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred156_InternalChartDSL
+
+    // $ANTLR start synpred157_InternalChartDSL
+    public final void synpred157_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:10862:3: ( rule__XMemberFeatureCall__Alternatives_1 )
+        // InternalChartDSL.g:10862:3: rule__XMemberFeatureCall__Alternatives_1
+        {
+        pushFollow(FOLLOW_2);
+        rule__XMemberFeatureCall__Alternatives_1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred157_InternalChartDSL
+
+    // $ANTLR start synpred159_InternalChartDSL
+    public final void synpred159_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:11160:3: ( rule__XMemberFeatureCall__Group_1_1_3__0 )
+        // InternalChartDSL.g:11160: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_InternalChartDSL
+
+    // $ANTLR start synpred160_InternalChartDSL
+    public final void synpred160_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:11186:3: ( rule__XMemberFeatureCall__MemberCallArgumentsAssignment_1_1_4 )
+        // InternalChartDSL.g:11186: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_InternalChartDSL
+
+    // $ANTLR start synpred168_InternalChartDSL
+    public final void synpred168_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:12159:3: ( rule__XClosure__Group_1__0 )
+        // InternalChartDSL.g:12159:3: rule__XClosure__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XClosure__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred168_InternalChartDSL
+
+    // $ANTLR start synpred175_InternalChartDSL
+    public final void synpred175_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:13130:3: ( rule__XIfExpression__Group_6__0 )
+        // InternalChartDSL.g:13130:3: rule__XIfExpression__Group_6__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XIfExpression__Group_6__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred175_InternalChartDSL
+
+    // $ANTLR start synpred178_InternalChartDSL
+    public final void synpred178_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:13590:3: ( rule__XSwitchExpression__Group_2_1_0__0 )
+        // InternalChartDSL.g:13590: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_InternalChartDSL
+
+    // $ANTLR start synpred191_InternalChartDSL
+    public final void synpred191_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:15723:3: ( rule__XFeatureCall__Group_3__0 )
+        // InternalChartDSL.g:15723:3: rule__XFeatureCall__Group_3__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XFeatureCall__Group_3__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred191_InternalChartDSL
+
+    // $ANTLR start synpred192_InternalChartDSL
+    public final void synpred192_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:15749:3: ( rule__XFeatureCall__FeatureCallArgumentsAssignment_4 )
+        // InternalChartDSL.g:15749:3: rule__XFeatureCall__FeatureCallArgumentsAssignment_4
+        {
+        pushFollow(FOLLOW_2);
+        rule__XFeatureCall__FeatureCallArgumentsAssignment_4();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred192_InternalChartDSL
+
+    // $ANTLR start synpred196_InternalChartDSL
+    public final void synpred196_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:16209:3: ( rule__XConstructorCall__Group_3__0 )
+        // InternalChartDSL.g:16209:3: rule__XConstructorCall__Group_3__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XConstructorCall__Group_3__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred196_InternalChartDSL
+
+    // $ANTLR start synpred197_InternalChartDSL
+    public final void synpred197_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:16236:3: ( rule__XConstructorCall__Group_4__0 )
+        // InternalChartDSL.g:16236:3: rule__XConstructorCall__Group_4__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__XConstructorCall__Group_4__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred197_InternalChartDSL
+
+    // $ANTLR start synpred198_InternalChartDSL
+    public final void synpred198_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:16262:3: ( rule__XConstructorCall__ArgumentsAssignment_5 )
+        // InternalChartDSL.g:16262:3: rule__XConstructorCall__ArgumentsAssignment_5
+        {
+        pushFollow(FOLLOW_2);
+        rule__XConstructorCall__ArgumentsAssignment_5();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred198_InternalChartDSL
+
+    // $ANTLR start synpred203_InternalChartDSL
+    public final void synpred203_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:17153:3: ( rule__XReturnExpression__ExpressionAssignment_2 )
+        // InternalChartDSL.g:17153:3: rule__XReturnExpression__ExpressionAssignment_2
+        {
+        pushFollow(FOLLOW_2);
+        rule__XReturnExpression__ExpressionAssignment_2();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred203_InternalChartDSL
+
+    // $ANTLR start synpred204_InternalChartDSL
+    public final void synpred204_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:17295:4: ( rule__XTryCatchFinallyExpression__CatchClausesAssignment_3_0_0 )
+        // InternalChartDSL.g:17295: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_InternalChartDSL
+
+    // $ANTLR start synpred205_InternalChartDSL
+    public final void synpred205_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:17322:3: ( rule__XTryCatchFinallyExpression__Group_3_0_1__0 )
+        // InternalChartDSL.g:17322: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_InternalChartDSL
+
+    // $ANTLR start synpred206_InternalChartDSL
+    public final void synpred206_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:17835:3: ( rule__QualifiedName__Group_1__0 )
+        // InternalChartDSL.g:17835:3: rule__QualifiedName__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__QualifiedName__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred206_InternalChartDSL
+
+    // $ANTLR start synpred208_InternalChartDSL
+    public final void synpred208_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:18051:3: ( rule__JvmTypeReference__Group_0_1__0 )
+        // InternalChartDSL.g:18051: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_InternalChartDSL
+
+    // $ANTLR start synpred212_InternalChartDSL
+    public final void synpred212_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:18510:3: ( rule__JvmParameterizedTypeReference__Group_1__0 )
+        // InternalChartDSL.g:18510:3: rule__JvmParameterizedTypeReference__Group_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__JvmParameterizedTypeReference__Group_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred212_InternalChartDSL
+
+    // $ANTLR start synpred214_InternalChartDSL
+    public final void synpred214_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:18645:3: ( rule__JvmParameterizedTypeReference__Group_1_4__0 )
+        // InternalChartDSL.g:18645: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_InternalChartDSL
+
+    // $ANTLR start synpred215_InternalChartDSL
+    public final void synpred215_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:18780:3: ( rule__JvmParameterizedTypeReference__Group_1_4_2__0 )
+        // InternalChartDSL.g:18780: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_InternalChartDSL
+
+    // $ANTLR start synpred220_InternalChartDSL
+    public final void synpred220_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19578:2: ( rule__Chart__UnorderedGroup_6__0 )
+        // InternalChartDSL.g:19578:2: rule__Chart__UnorderedGroup_6__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__Chart__UnorderedGroup_6__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred220_InternalChartDSL
+
+    // $ANTLR start synpred221_InternalChartDSL
+    public final void synpred221_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19593:3: ( ({...}? => ( ( ( rule__Chart__Group_6_0__0 ) ) ) ) )
+        // InternalChartDSL.g:19593:3: ({...}? => ( ( ( rule__Chart__Group_6_0__0 ) ) ) )
+        {
+        // InternalChartDSL.g:19593:3: ({...}? => ( ( ( rule__Chart__Group_6_0__0 ) ) ) )
+        // InternalChartDSL.g:19594:4: {...}? => ( ( ( rule__Chart__Group_6_0__0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 0) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred221_InternalChartDSL", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 0)");
+        }
+        // InternalChartDSL.g:19594:101: ( ( ( rule__Chart__Group_6_0__0 ) ) )
+        // InternalChartDSL.g:19595:5: ( ( rule__Chart__Group_6_0__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getChartAccess().getUnorderedGroup_6(), 0);
+        // InternalChartDSL.g:19601:5: ( ( rule__Chart__Group_6_0__0 ) )
+        // InternalChartDSL.g:19602:6: ( rule__Chart__Group_6_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getChartAccess().getGroup_6_0()); 
+        }
+        // InternalChartDSL.g:19603:6: ( rule__Chart__Group_6_0__0 )
+        // InternalChartDSL.g:19603:7: rule__Chart__Group_6_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__Chart__Group_6_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred221_InternalChartDSL
+
+    // $ANTLR start synpred222_InternalChartDSL
+    public final void synpred222_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19637:2: ( rule__Chart__UnorderedGroup_6__1 )
+        // InternalChartDSL.g:19637:2: rule__Chart__UnorderedGroup_6__1
+        {
+        pushFollow(FOLLOW_2);
+        rule__Chart__UnorderedGroup_6__1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred222_InternalChartDSL
+
+    // $ANTLR start synpred223_InternalChartDSL
+    public final void synpred223_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19661:2: ( rule__ChartBar__UnorderedGroup_2__0 )
+        // InternalChartDSL.g:19661:2: rule__ChartBar__UnorderedGroup_2__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartBar__UnorderedGroup_2__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred223_InternalChartDSL
+
+    // $ANTLR start synpred224_InternalChartDSL
+    public final void synpred224_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19676:3: ( ({...}? => ( ( ( rule__ChartBar__ShadowAssignment_2_0 ) ) ) ) )
+        // InternalChartDSL.g:19676:3: ({...}? => ( ( ( rule__ChartBar__ShadowAssignment_2_0 ) ) ) )
+        {
+        // InternalChartDSL.g:19676:3: ({...}? => ( ( ( rule__ChartBar__ShadowAssignment_2_0 ) ) ) )
+        // InternalChartDSL.g:19677:4: {...}? => ( ( ( rule__ChartBar__ShadowAssignment_2_0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred224_InternalChartDSL", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0)");
+        }
+        // InternalChartDSL.g:19677:104: ( ( ( rule__ChartBar__ShadowAssignment_2_0 ) ) )
+        // InternalChartDSL.g:19678:5: ( ( rule__ChartBar__ShadowAssignment_2_0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0);
+        // InternalChartDSL.g:19684:5: ( ( rule__ChartBar__ShadowAssignment_2_0 ) )
+        // InternalChartDSL.g:19685:6: ( rule__ChartBar__ShadowAssignment_2_0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getChartBarAccess().getShadowAssignment_2_0()); 
+        }
+        // InternalChartDSL.g:19686:6: ( rule__ChartBar__ShadowAssignment_2_0 )
+        // InternalChartDSL.g:19686:7: rule__ChartBar__ShadowAssignment_2_0
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartBar__ShadowAssignment_2_0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred224_InternalChartDSL
+
+    // $ANTLR start synpred225_InternalChartDSL
+    public final void synpred225_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19691:3: ( ({...}? => ( ( ( rule__ChartBar__AnimatedAssignment_2_1 ) ) ) ) )
+        // InternalChartDSL.g:19691:3: ({...}? => ( ( ( rule__ChartBar__AnimatedAssignment_2_1 ) ) ) )
+        {
+        // InternalChartDSL.g:19691:3: ({...}? => ( ( ( rule__ChartBar__AnimatedAssignment_2_1 ) ) ) )
+        // InternalChartDSL.g:19692:4: {...}? => ( ( ( rule__ChartBar__AnimatedAssignment_2_1 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred225_InternalChartDSL", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1)");
+        }
+        // InternalChartDSL.g:19692:104: ( ( ( rule__ChartBar__AnimatedAssignment_2_1 ) ) )
+        // InternalChartDSL.g:19693:5: ( ( rule__ChartBar__AnimatedAssignment_2_1 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1);
+        // InternalChartDSL.g:19699:5: ( ( rule__ChartBar__AnimatedAssignment_2_1 ) )
+        // InternalChartDSL.g:19700:6: ( rule__ChartBar__AnimatedAssignment_2_1 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getChartBarAccess().getAnimatedAssignment_2_1()); 
+        }
+        // InternalChartDSL.g:19701:6: ( rule__ChartBar__AnimatedAssignment_2_1 )
+        // InternalChartDSL.g:19701:7: rule__ChartBar__AnimatedAssignment_2_1
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartBar__AnimatedAssignment_2_1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred225_InternalChartDSL
+
+    // $ANTLR start synpred226_InternalChartDSL
+    public final void synpred226_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19706:3: ( ({...}? => ( ( ( rule__ChartBar__SwappedAssignment_2_2 ) ) ) ) )
+        // InternalChartDSL.g:19706:3: ({...}? => ( ( ( rule__ChartBar__SwappedAssignment_2_2 ) ) ) )
+        {
+        // InternalChartDSL.g:19706:3: ({...}? => ( ( ( rule__ChartBar__SwappedAssignment_2_2 ) ) ) )
+        // InternalChartDSL.g:19707:4: {...}? => ( ( ( rule__ChartBar__SwappedAssignment_2_2 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred226_InternalChartDSL", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2)");
+        }
+        // InternalChartDSL.g:19707:104: ( ( ( rule__ChartBar__SwappedAssignment_2_2 ) ) )
+        // InternalChartDSL.g:19708:5: ( ( rule__ChartBar__SwappedAssignment_2_2 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2);
+        // InternalChartDSL.g:19714:5: ( ( rule__ChartBar__SwappedAssignment_2_2 ) )
+        // InternalChartDSL.g:19715:6: ( rule__ChartBar__SwappedAssignment_2_2 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getChartBarAccess().getSwappedAssignment_2_2()); 
+        }
+        // InternalChartDSL.g:19716:6: ( rule__ChartBar__SwappedAssignment_2_2 )
+        // InternalChartDSL.g:19716:7: rule__ChartBar__SwappedAssignment_2_2
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartBar__SwappedAssignment_2_2();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred226_InternalChartDSL
+
+    // $ANTLR start synpred227_InternalChartDSL
+    public final void synpred227_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19750:2: ( rule__ChartBar__UnorderedGroup_2__1 )
+        // InternalChartDSL.g:19750:2: rule__ChartBar__UnorderedGroup_2__1
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartBar__UnorderedGroup_2__1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred227_InternalChartDSL
+
+    // $ANTLR start synpred228_InternalChartDSL
+    public final void synpred228_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19762:2: ( rule__ChartBar__UnorderedGroup_2__2 )
+        // InternalChartDSL.g:19762:2: rule__ChartBar__UnorderedGroup_2__2
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartBar__UnorderedGroup_2__2();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred228_InternalChartDSL
+
+    // $ANTLR start synpred229_InternalChartDSL
+    public final void synpred229_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19774:2: ( rule__ChartBar__UnorderedGroup_2__3 )
+        // InternalChartDSL.g:19774:2: rule__ChartBar__UnorderedGroup_2__3
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartBar__UnorderedGroup_2__3();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred229_InternalChartDSL
+
+    // $ANTLR start synpred230_InternalChartDSL
+    public final void synpred230_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19798:2: ( rule__ChartLine__UnorderedGroup_2__0 )
+        // InternalChartDSL.g:19798:2: rule__ChartLine__UnorderedGroup_2__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartLine__UnorderedGroup_2__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred230_InternalChartDSL
+
+    // $ANTLR start synpred231_InternalChartDSL
+    public final void synpred231_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19813:3: ( ({...}? => ( ( ( rule__ChartLine__AnimatedAssignment_2_0 ) ) ) ) )
+        // InternalChartDSL.g:19813:3: ({...}? => ( ( ( rule__ChartLine__AnimatedAssignment_2_0 ) ) ) )
+        {
+        // InternalChartDSL.g:19813:3: ({...}? => ( ( ( rule__ChartLine__AnimatedAssignment_2_0 ) ) ) )
+        // InternalChartDSL.g:19814:4: {...}? => ( ( ( rule__ChartLine__AnimatedAssignment_2_0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred231_InternalChartDSL", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0)");
+        }
+        // InternalChartDSL.g:19814:105: ( ( ( rule__ChartLine__AnimatedAssignment_2_0 ) ) )
+        // InternalChartDSL.g:19815:5: ( ( rule__ChartLine__AnimatedAssignment_2_0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0);
+        // InternalChartDSL.g:19821:5: ( ( rule__ChartLine__AnimatedAssignment_2_0 ) )
+        // InternalChartDSL.g:19822:6: ( rule__ChartLine__AnimatedAssignment_2_0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getChartLineAccess().getAnimatedAssignment_2_0()); 
+        }
+        // InternalChartDSL.g:19823:6: ( rule__ChartLine__AnimatedAssignment_2_0 )
+        // InternalChartDSL.g:19823:7: rule__ChartLine__AnimatedAssignment_2_0
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartLine__AnimatedAssignment_2_0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred231_InternalChartDSL
+
+    // $ANTLR start synpred232_InternalChartDSL
+    public final void synpred232_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19828:3: ( ({...}? => ( ( ( rule__ChartLine__ShowMarkerAssignment_2_1 ) ) ) ) )
+        // InternalChartDSL.g:19828:3: ({...}? => ( ( ( rule__ChartLine__ShowMarkerAssignment_2_1 ) ) ) )
+        {
+        // InternalChartDSL.g:19828:3: ({...}? => ( ( ( rule__ChartLine__ShowMarkerAssignment_2_1 ) ) ) )
+        // InternalChartDSL.g:19829:4: {...}? => ( ( ( rule__ChartLine__ShowMarkerAssignment_2_1 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred232_InternalChartDSL", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1)");
+        }
+        // InternalChartDSL.g:19829:105: ( ( ( rule__ChartLine__ShowMarkerAssignment_2_1 ) ) )
+        // InternalChartDSL.g:19830:5: ( ( rule__ChartLine__ShowMarkerAssignment_2_1 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1);
+        // InternalChartDSL.g:19836:5: ( ( rule__ChartLine__ShowMarkerAssignment_2_1 ) )
+        // InternalChartDSL.g:19837:6: ( rule__ChartLine__ShowMarkerAssignment_2_1 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getChartLineAccess().getShowMarkerAssignment_2_1()); 
+        }
+        // InternalChartDSL.g:19838:6: ( rule__ChartLine__ShowMarkerAssignment_2_1 )
+        // InternalChartDSL.g:19838:7: rule__ChartLine__ShowMarkerAssignment_2_1
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartLine__ShowMarkerAssignment_2_1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred232_InternalChartDSL
+
+    // $ANTLR start synpred233_InternalChartDSL
+    public final void synpred233_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19843:3: ( ({...}? => ( ( ( rule__ChartLine__TrendLineAssignment_2_2 ) ) ) ) )
+        // InternalChartDSL.g:19843:3: ({...}? => ( ( ( rule__ChartLine__TrendLineAssignment_2_2 ) ) ) )
+        {
+        // InternalChartDSL.g:19843:3: ({...}? => ( ( ( rule__ChartLine__TrendLineAssignment_2_2 ) ) ) )
+        // InternalChartDSL.g:19844:4: {...}? => ( ( ( rule__ChartLine__TrendLineAssignment_2_2 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred233_InternalChartDSL", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2)");
+        }
+        // InternalChartDSL.g:19844:105: ( ( ( rule__ChartLine__TrendLineAssignment_2_2 ) ) )
+        // InternalChartDSL.g:19845:5: ( ( rule__ChartLine__TrendLineAssignment_2_2 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2);
+        // InternalChartDSL.g:19851:5: ( ( rule__ChartLine__TrendLineAssignment_2_2 ) )
+        // InternalChartDSL.g:19852:6: ( rule__ChartLine__TrendLineAssignment_2_2 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getChartLineAccess().getTrendLineAssignment_2_2()); 
+        }
+        // InternalChartDSL.g:19853:6: ( rule__ChartLine__TrendLineAssignment_2_2 )
+        // InternalChartDSL.g:19853:7: rule__ChartLine__TrendLineAssignment_2_2
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartLine__TrendLineAssignment_2_2();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred233_InternalChartDSL
+
+    // $ANTLR start synpred234_InternalChartDSL
+    public final void synpred234_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19858:3: ( ({...}? => ( ( ( rule__ChartLine__Group_2_3__0 ) ) ) ) )
+        // InternalChartDSL.g:19858:3: ({...}? => ( ( ( rule__ChartLine__Group_2_3__0 ) ) ) )
+        {
+        // InternalChartDSL.g:19858:3: ({...}? => ( ( ( rule__ChartLine__Group_2_3__0 ) ) ) )
+        // InternalChartDSL.g:19859:4: {...}? => ( ( ( rule__ChartLine__Group_2_3__0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred234_InternalChartDSL", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3)");
+        }
+        // InternalChartDSL.g:19859:105: ( ( ( rule__ChartLine__Group_2_3__0 ) ) )
+        // InternalChartDSL.g:19860:5: ( ( rule__ChartLine__Group_2_3__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3);
+        // InternalChartDSL.g:19866:5: ( ( rule__ChartLine__Group_2_3__0 ) )
+        // InternalChartDSL.g:19867:6: ( rule__ChartLine__Group_2_3__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getChartLineAccess().getGroup_2_3()); 
+        }
+        // InternalChartDSL.g:19868:6: ( rule__ChartLine__Group_2_3__0 )
+        // InternalChartDSL.g:19868:7: rule__ChartLine__Group_2_3__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartLine__Group_2_3__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred234_InternalChartDSL
+
+    // $ANTLR start synpred235_InternalChartDSL
+    public final void synpred235_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19873:3: ( ({...}? => ( ( ( rule__ChartLine__FillToZeroAssignment_2_4 ) ) ) ) )
+        // InternalChartDSL.g:19873:3: ({...}? => ( ( ( rule__ChartLine__FillToZeroAssignment_2_4 ) ) ) )
+        {
+        // InternalChartDSL.g:19873:3: ({...}? => ( ( ( rule__ChartLine__FillToZeroAssignment_2_4 ) ) ) )
+        // InternalChartDSL.g:19874:4: {...}? => ( ( ( rule__ChartLine__FillToZeroAssignment_2_4 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred235_InternalChartDSL", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4)");
+        }
+        // InternalChartDSL.g:19874:105: ( ( ( rule__ChartLine__FillToZeroAssignment_2_4 ) ) )
+        // InternalChartDSL.g:19875:5: ( ( rule__ChartLine__FillToZeroAssignment_2_4 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4);
+        // InternalChartDSL.g:19881:5: ( ( rule__ChartLine__FillToZeroAssignment_2_4 ) )
+        // InternalChartDSL.g:19882:6: ( rule__ChartLine__FillToZeroAssignment_2_4 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getChartLineAccess().getFillToZeroAssignment_2_4()); 
+        }
+        // InternalChartDSL.g:19883:6: ( rule__ChartLine__FillToZeroAssignment_2_4 )
+        // InternalChartDSL.g:19883:7: rule__ChartLine__FillToZeroAssignment_2_4
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartLine__FillToZeroAssignment_2_4();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred235_InternalChartDSL
+
+    // $ANTLR start synpred236_InternalChartDSL
+    public final void synpred236_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19917:2: ( rule__ChartLine__UnorderedGroup_2__1 )
+        // InternalChartDSL.g:19917:2: rule__ChartLine__UnorderedGroup_2__1
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartLine__UnorderedGroup_2__1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred236_InternalChartDSL
+
+    // $ANTLR start synpred237_InternalChartDSL
+    public final void synpred237_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19929:2: ( rule__ChartLine__UnorderedGroup_2__2 )
+        // InternalChartDSL.g:19929:2: rule__ChartLine__UnorderedGroup_2__2
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartLine__UnorderedGroup_2__2();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred237_InternalChartDSL
+
+    // $ANTLR start synpred238_InternalChartDSL
+    public final void synpred238_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19941:2: ( rule__ChartLine__UnorderedGroup_2__3 )
+        // InternalChartDSL.g:19941:2: rule__ChartLine__UnorderedGroup_2__3
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartLine__UnorderedGroup_2__3();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred238_InternalChartDSL
+
+    // $ANTLR start synpred239_InternalChartDSL
+    public final void synpred239_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19953:2: ( rule__ChartLine__UnorderedGroup_2__4 )
+        // InternalChartDSL.g:19953:2: rule__ChartLine__UnorderedGroup_2__4
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartLine__UnorderedGroup_2__4();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred239_InternalChartDSL
+
+    // $ANTLR start synpred240_InternalChartDSL
+    public final void synpred240_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:19965:2: ( rule__ChartLine__UnorderedGroup_2__5 )
+        // InternalChartDSL.g:19965:2: rule__ChartLine__UnorderedGroup_2__5
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartLine__UnorderedGroup_2__5();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred240_InternalChartDSL
+
+    // $ANTLR start synpred241_InternalChartDSL
+    public final void synpred241_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:20004:3: ( ({...}? => ( ( ( rule__ChartBubble__Group_2_0__0 ) ) ) ) )
+        // InternalChartDSL.g:20004:3: ({...}? => ( ( ( rule__ChartBubble__Group_2_0__0 ) ) ) )
+        {
+        // InternalChartDSL.g:20004:3: ({...}? => ( ( ( rule__ChartBubble__Group_2_0__0 ) ) ) )
+        // InternalChartDSL.g:20005:4: {...}? => ( ( ( rule__ChartBubble__Group_2_0__0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred241_InternalChartDSL", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0)");
+        }
+        // InternalChartDSL.g:20005:107: ( ( ( rule__ChartBubble__Group_2_0__0 ) ) )
+        // InternalChartDSL.g:20006:5: ( ( rule__ChartBubble__Group_2_0__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0);
+        // InternalChartDSL.g:20012:5: ( ( rule__ChartBubble__Group_2_0__0 ) )
+        // InternalChartDSL.g:20013:6: ( rule__ChartBubble__Group_2_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getChartBubbleAccess().getGroup_2_0()); 
+        }
+        // InternalChartDSL.g:20014:6: ( rule__ChartBubble__Group_2_0__0 )
+        // InternalChartDSL.g:20014:7: rule__ChartBubble__Group_2_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartBubble__Group_2_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred241_InternalChartDSL
+
+    // $ANTLR start synpred242_InternalChartDSL
+    public final void synpred242_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:20048:2: ( rule__ChartBubble__UnorderedGroup_2__1 )
+        // InternalChartDSL.g:20048:2: rule__ChartBubble__UnorderedGroup_2__1
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartBubble__UnorderedGroup_2__1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred242_InternalChartDSL
+
+    // $ANTLR start synpred243_InternalChartDSL
+    public final void synpred243_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:20072:2: ( rule__ChartGauge__UnorderedGroup_2__0 )
+        // InternalChartDSL.g:20072:2: rule__ChartGauge__UnorderedGroup_2__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartGauge__UnorderedGroup_2__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred243_InternalChartDSL
+
+    // $ANTLR start synpred244_InternalChartDSL
+    public final void synpred244_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:20087:3: ( ({...}? => ( ( ( rule__ChartGauge__Group_2_0__0 ) ) ) ) )
+        // InternalChartDSL.g:20087:3: ({...}? => ( ( ( rule__ChartGauge__Group_2_0__0 ) ) ) )
+        {
+        // InternalChartDSL.g:20087:3: ({...}? => ( ( ( rule__ChartGauge__Group_2_0__0 ) ) ) )
+        // InternalChartDSL.g:20088:4: {...}? => ( ( ( rule__ChartGauge__Group_2_0__0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred244_InternalChartDSL", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0)");
+        }
+        // InternalChartDSL.g:20088:106: ( ( ( rule__ChartGauge__Group_2_0__0 ) ) )
+        // InternalChartDSL.g:20089:5: ( ( rule__ChartGauge__Group_2_0__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0);
+        // InternalChartDSL.g:20095:5: ( ( rule__ChartGauge__Group_2_0__0 ) )
+        // InternalChartDSL.g:20096:6: ( rule__ChartGauge__Group_2_0__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getChartGaugeAccess().getGroup_2_0()); 
+        }
+        // InternalChartDSL.g:20097:6: ( rule__ChartGauge__Group_2_0__0 )
+        // InternalChartDSL.g:20097:7: rule__ChartGauge__Group_2_0__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartGauge__Group_2_0__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred244_InternalChartDSL
+
+    // $ANTLR start synpred245_InternalChartDSL
+    public final void synpred245_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:20102:3: ( ({...}? => ( ( ( rule__ChartGauge__Group_2_1__0 ) ) ) ) )
+        // InternalChartDSL.g:20102:3: ({...}? => ( ( ( rule__ChartGauge__Group_2_1__0 ) ) ) )
+        {
+        // InternalChartDSL.g:20102:3: ({...}? => ( ( ( rule__ChartGauge__Group_2_1__0 ) ) ) )
+        // InternalChartDSL.g:20103:4: {...}? => ( ( ( rule__ChartGauge__Group_2_1__0 ) ) )
+        {
+        if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1) ) {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            throw new FailedPredicateException(input, "synpred245_InternalChartDSL", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1)");
+        }
+        // InternalChartDSL.g:20103:106: ( ( ( rule__ChartGauge__Group_2_1__0 ) ) )
+        // InternalChartDSL.g:20104:5: ( ( rule__ChartGauge__Group_2_1__0 ) )
+        {
+        getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1);
+        // InternalChartDSL.g:20110:5: ( ( rule__ChartGauge__Group_2_1__0 ) )
+        // InternalChartDSL.g:20111:6: ( rule__ChartGauge__Group_2_1__0 )
+        {
+        if ( state.backtracking==0 ) {
+           before(grammarAccess.getChartGaugeAccess().getGroup_2_1()); 
+        }
+        // InternalChartDSL.g:20112:6: ( rule__ChartGauge__Group_2_1__0 )
+        // InternalChartDSL.g:20112:7: rule__ChartGauge__Group_2_1__0
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartGauge__Group_2_1__0();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred245_InternalChartDSL
+
+    // $ANTLR start synpred246_InternalChartDSL
+    public final void synpred246_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:20146:2: ( rule__ChartGauge__UnorderedGroup_2__1 )
+        // InternalChartDSL.g:20146:2: rule__ChartGauge__UnorderedGroup_2__1
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartGauge__UnorderedGroup_2__1();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred246_InternalChartDSL
+
+    // $ANTLR start synpred247_InternalChartDSL
+    public final void synpred247_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:20158:2: ( rule__ChartGauge__UnorderedGroup_2__2 )
+        // InternalChartDSL.g:20158:2: rule__ChartGauge__UnorderedGroup_2__2
+        {
+        pushFollow(FOLLOW_2);
+        rule__ChartGauge__UnorderedGroup_2__2();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred247_InternalChartDSL
+
+    // Delegated rules
+
+    public final boolean synpred241_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred241_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred208_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred19_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred197_InternalChartDSL_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 synpred224_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred224_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred154_InternalChartDSL_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 synpred225_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred225_InternalChartDSL_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 synpred232_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred232_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred198_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred215_InternalChartDSL_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 synpred234_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred234_InternalChartDSL_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 synpred242_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred242_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred18_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred45_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred155_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred146_InternalChartDSL_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 synpred233_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred233_InternalChartDSL_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 synpred222_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred222_InternalChartDSL_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 synpred68_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred68_InternalChartDSL_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 synpred227_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred227_InternalChartDSL_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 synpred235_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred235_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred214_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred156_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred151_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred206_InternalChartDSL_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 synpred243_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred243_InternalChartDSL_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 synpred230_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred230_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred81_InternalChartDSL_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 synpred240_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred240_InternalChartDSL_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 synpred86_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred86_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred153_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred148_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred203_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred159_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred192_InternalChartDSL_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 synpred229_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred229_InternalChartDSL_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 synpred238_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred238_InternalChartDSL_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 synpred245_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred245_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred175_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred204_InternalChartDSL_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 synpred247_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred247_InternalChartDSL_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 synpred228_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred228_InternalChartDSL_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 synpred221_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred221_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred150_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred168_InternalChartDSL_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 synpred237_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred237_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred212_InternalChartDSL_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 synpred220_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred220_InternalChartDSL_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 synpred92_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred92_InternalChartDSL_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 synpred246_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred246_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred178_InternalChartDSL_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 synpred85_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred85_InternalChartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred152_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred152_InternalChartDSL_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 synpred46_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred46_InternalChartDSL_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 synpred236_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred236_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred20_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred149_InternalChartDSL_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 synpred67_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred67_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred160_InternalChartDSL_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 synpred226_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred226_InternalChartDSL_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 synpred223_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred223_InternalChartDSL_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 synpred59_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred59_InternalChartDSL_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 synpred239_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred239_InternalChartDSL_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 synpred126_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred126_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred196_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred157_InternalChartDSL_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 synpred244_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred244_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred191_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred205_InternalChartDSL_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 synpred231_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred231_InternalChartDSL_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 DFA8 dfa8 = new DFA8(this);
+    protected DFA10 dfa10 = new DFA10(this);
+    protected DFA11 dfa11 = new DFA11(this);
+    protected DFA12 dfa12 = new DFA12(this);
+    protected DFA19 dfa19 = new DFA19(this);
+    protected DFA27 dfa27 = new DFA27(this);
+    protected DFA30 dfa30 = new DFA30(this);
+    protected DFA31 dfa31 = new DFA31(this);
+    protected DFA34 dfa34 = new DFA34(this);
+    protected DFA39 dfa39 = new DFA39(this);
+    protected DFA42 dfa42 = new DFA42(this);
+    protected DFA84 dfa84 = new DFA84(this);
+    protected DFA90 dfa90 = new DFA90(this);
+    protected DFA97 dfa97 = new DFA97(this);
+    protected DFA98 dfa98 = new DFA98(this);
+    protected DFA106 dfa106 = new DFA106(this);
+    protected DFA116 dfa116 = new DFA116(this);
+    protected DFA129 dfa129 = new DFA129(this);
+    protected DFA130 dfa130 = new DFA130(this);
+    protected DFA134 dfa134 = new DFA134(this);
+    protected DFA135 dfa135 = new DFA135(this);
+    protected DFA136 dfa136 = new DFA136(this);
+    protected DFA141 dfa141 = new DFA141(this);
+    protected DFA150 dfa150 = new DFA150(this);
+    protected DFA153 dfa153 = new DFA153(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\5\1\uffff\1\53\1\uffff\1\5\2\uffff\1\53";
+    static final String dfa_4s = "\1\u0095\1\uffff\1\136\1\uffff\1\44\2\uffff\1\136";
+    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\50\uffff\1\1\146\uffff\1\3",
+            "",
+            "\1\4\3\uffff\1\5\27\uffff\1\5\26\uffff\1\5",
+            "",
+            "\1\7\36\uffff\1\6",
+            "",
+            "",
+            "\1\4\3\uffff\1\5\27\uffff\1\5\26\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 DFA8 extends DFA {
+
+        public DFA8(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 8;
+            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 "2872: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\u009a\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\2\1\1\3\2\22\uffff\1\2\6\uffff\2\2\4\uffff\1\2\4\uffff\6\2\25\uffff\1\2\26\uffff\2\2\3\uffff\2\2\1\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\42\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 DFA10 extends DFA {
+
+        public DFA10(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 10;
+            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 "2926: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 LA10_1 = input.LA(1);
+
+                         
+                        int index10_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred18_InternalChartDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index10_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 10, _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\25\uffff\1\2\26\uffff\2\2\3\uffff\1\1\1\2\1\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\42\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_14 = unpackEncodedStringArray(dfa_14s);
+
+    class DFA11 extends DFA {
+
+        public DFA11(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 11;
+            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 "2947: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 LA11_1 = input.LA(1);
+
+                         
+                        int index11_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred19_InternalChartDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index11_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 11, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA12 extends DFA {
+
+        public DFA12(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 12;
+            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 "2968: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 LA12_1 = input.LA(1);
+
+                         
+                        int index12_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred20_InternalChartDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index12_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 12, _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 DFA19 extends DFA {
+
+        public DFA19(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 19;
+            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 "3169: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\5\1\uffff\5\4\1\uffff";
+    static final String dfa_24s = "\1\u0097\2\61\1\uffff\5\u009a\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\152\uffff\1\2\1\3",
+            "\1\4\25\uffff\1\3\21\uffff\1\5\1\6\1\7\1\10\1\3",
+            "\1\4\25\uffff\1\3\21\uffff\1\5\1\6\1\7\1\10\1\3",
+            "",
+            "\5\3\4\uffff\1\11\45\3\25\uffff\2\3\1\uffff\1\3\22\uffff\1\3\1\uffff\31\3\35\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\25\uffff\2\3\1\uffff\1\3\22\uffff\1\3\1\uffff\31\3\35\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\25\uffff\2\3\1\uffff\1\3\22\uffff\1\3\1\uffff\31\3\35\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\25\uffff\2\3\1\uffff\1\3\22\uffff\1\3\1\uffff\31\3\35\uffff\2\3\1\uffff\2\3",
+            "\5\3\4\uffff\1\11\45\3\25\uffff\2\3\1\uffff\1\3\22\uffff\1\3\1\uffff\31\3\35\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 DFA27 extends DFA {
+
+        public DFA27(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 27;
+            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 "3403: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\u009a\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\5\1\1\3\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\4\uffff\6\5\25\uffff\1\5\27\uffff\1\2\3\uffff\2\5\1\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\40\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 DFA30 extends DFA {
+
+        public DFA30(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 30;
+            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 "3472: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 LA30_1 = input.LA(1);
+
+                         
+                        int index30_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred59_InternalChartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index30_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA30_2 = input.LA(1);
+
+                         
+                        int index30_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred59_InternalChartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index30_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 30, _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\u009a\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\14\1\5\3\14\22\uffff\1\5\21\uffff\5\5\1\14\25\uffff\1\2\27\uffff\1\35\3\uffff\2\14\1\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\42\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 DFA31 extends DFA {
+
+        public DFA31(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 31;
+            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 "3493: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 LA31_23 = input.LA(1);
+
+                         
+                        int index31_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred67_InternalChartDSL()) ) {s = 30;}
+
+                        else if ( (synpred68_InternalChartDSL()) ) {s = 31;}
+
+                         
+                        input.seek(index31_23);
+                        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_39s = {
+            "\5\2\22\uffff\1\2\3\uffff\1\2\2\uffff\2\2\4\uffff\1\2\4\uffff\6\2\25\uffff\1\2\27\uffff\1\1\3\uffff\2\2\1\uffff\1\2\1\uffff\1\2\3\uffff\11\2\1\uffff\1\2\42\uffff\1\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_39 = unpackEncodedStringArray(dfa_39s);
+
+    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_9;
+            this.max = dfa_10;
+            this.accept = dfa_11;
+            this.special = dfa_12;
+            this.transition = dfa_39;
+        }
+        public String getDescription() {
+            return "3664: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 LA34_1 = input.LA(1);
+
+                         
+                        int index34_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred81_InternalChartDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index34_1);
+                        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 DFA39 extends DFA {
+
+        public DFA39(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 39;
+            this.eot = dfa_8;
+            this.eof = dfa_8;
+            this.min = dfa_28;
+            this.max = dfa_29;
+            this.accept = dfa_30;
+            this.special = dfa_31;
+            this.transition = dfa_32;
+        }
+        public String getDescription() {
+            return "3769: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 LA39_1 = input.LA(1);
+
+                         
+                        int index39_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred86_InternalChartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index39_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA39_2 = input.LA(1);
+
+                         
+                        int index39_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred86_InternalChartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index39_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 39, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA42 extends DFA {
+
+        public DFA42(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 42;
+            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 "3850: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 LA42_1 = input.LA(1);
+
+                         
+                        int index42_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred92_InternalChartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index42_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA42_2 = input.LA(1);
+
+                         
+                        int index42_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred92_InternalChartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index42_2);
+                        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_40s = "\1\10\11\uffff";
+    static final String dfa_41s = "\1\4\7\0\2\uffff";
+    static final String dfa_42s = "\1\u009a\7\0\2\uffff";
+    static final String dfa_43s = "\10\uffff\1\2\1\1";
+    static final String dfa_44s = "\1\uffff\1\5\1\3\1\1\1\0\1\6\1\2\1\4\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\25\uffff\2\10\1\uffff\1\10\22\uffff\1\10\1\uffff\31\10\35\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 DFA84 extends DFA {
+
+        public DFA84(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 84;
+            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 "8270: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 LA84_4 = input.LA(1);
+
+                         
+                        int index84_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalChartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index84_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA84_3 = input.LA(1);
+
+                         
+                        int index84_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalChartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index84_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA84_6 = input.LA(1);
+
+                         
+                        int index84_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalChartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index84_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA84_2 = input.LA(1);
+
+                         
+                        int index84_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalChartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index84_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA84_7 = input.LA(1);
+
+                         
+                        int index84_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalChartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index84_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA84_1 = input.LA(1);
+
+                         
+                        int index84_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalChartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index84_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA84_5 = input.LA(1);
+
+                         
+                        int index84_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred146_InternalChartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index84_5);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 84, _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\u009a\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\3\1\0\1\5\1\1\1\4\1\6\1\7\1\2\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\25\uffff\2\1\1\uffff\1\1\22\uffff\1\1\1\uffff\31\1\35\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 DFA90 extends DFA {
+
+        public DFA90(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 90;
+            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 9566: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 LA90_3 = input.LA(1);
+
+                         
+                        int index90_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalChartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index90_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA90_5 = input.LA(1);
+
+                         
+                        int index90_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalChartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index90_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA90_9 = input.LA(1);
+
+                         
+                        int index90_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalChartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index90_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA90_2 = input.LA(1);
+
+                         
+                        int index90_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalChartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index90_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA90_6 = input.LA(1);
+
+                         
+                        int index90_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalChartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index90_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA90_4 = input.LA(1);
+
+                         
+                        int index90_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalChartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index90_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA90_7 = input.LA(1);
+
+                         
+                        int index90_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalChartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index90_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA90_8 = input.LA(1);
+
+                         
+                        int index90_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred152_InternalChartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index90_8);
+                        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_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\u009a\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\25\uffff\2\2\1\uffff\1\2\22\uffff\1\2\1\uffff\1\1\30\2\35\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 DFA97 extends DFA {
+
+        public DFA97(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 97;
+            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 "11160: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 LA97_1 = input.LA(1);
+
+                         
+                        int index97_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred159_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index97_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 97, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_59s = {
+            "\5\2\5\uffff\45\2\25\uffff\2\2\1\uffff\1\2\22\uffff\1\2\1\uffff\5\2\1\1\23\2\35\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_59 = unpackEncodedStringArray(dfa_59s);
+
+    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_59;
+        }
+        public String getDescription() {
+            return "11186: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 LA98_1 = input.LA(1);
+
+                         
+                        int index98_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred160_InternalChartDSL()) ) {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_60s = "\46\uffff";
+    static final String dfa_61s = "\1\4\2\0\43\uffff";
+    static final String dfa_62s = "\1\u009a\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\5\1\1\3\5\22\uffff\1\5\3\uffff\1\3\2\uffff\2\5\4\uffff\1\5\3\uffff\7\5\25\uffff\1\5\27\uffff\1\2\2\uffff\3\5\1\uffff\1\5\1\uffff\1\5\3\uffff\11\5\1\uffff\1\5\40\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 DFA106 extends DFA {
+
+        public DFA106(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 106;
+            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 "12159: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 LA106_1 = input.LA(1);
+
+                         
+                        int index106_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred168_InternalChartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index106_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA106_2 = input.LA(1);
+
+                         
+                        int index106_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred168_InternalChartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index106_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 106, _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\u009a\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\4\1\1\3\4\22\uffff\1\4\3\uffff\1\3\2\uffff\2\4\4\uffff\1\4\4\uffff\6\4\25\uffff\1\4\27\uffff\1\2\3\uffff\2\4\1\uffff\1\4\1\uffff\1\4\3\uffff\11\4\1\uffff\1\4\42\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 DFA116 extends DFA {
+
+        public DFA116(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 116;
+            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 "13590: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 LA116_1 = input.LA(1);
+
+                         
+                        int index116_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred178_InternalChartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index116_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA116_2 = input.LA(1);
+
+                         
+                        int index116_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred178_InternalChartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index116_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 116, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA129 extends DFA {
+
+        public DFA129(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 129;
+            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 "15723: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 LA129_1 = input.LA(1);
+
+                         
+                        int index129_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred191_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index129_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 129, _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_59;
+        }
+        public String getDescription() {
+            return "15749: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 LA130_1 = input.LA(1);
+
+                         
+                        int index130_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred192_InternalChartDSL()) ) {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;
+        }
+    }
+    static final String[] dfa_72s = {
+            "\5\2\5\uffff\15\2\1\1\27\2\25\uffff\2\2\1\uffff\1\2\22\uffff\1\2\1\uffff\31\2\35\uffff\2\2\1\uffff\2\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_72 = unpackEncodedStringArray(dfa_72s);
+
+    class DFA134 extends DFA {
+
+        public DFA134(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 134;
+            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 "16209: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 LA134_1 = input.LA(1);
+
+                         
+                        int index134_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred196_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index134_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 134, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class 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_58;
+        }
+        public String getDescription() {
+            return "16236: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 LA135_1 = input.LA(1);
+
+                         
+                        int index135_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred197_InternalChartDSL()) ) {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_59;
+        }
+        public String getDescription() {
+            return "16262: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 LA136_1 = input.LA(1);
+
+                         
+                        int index136_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred198_InternalChartDSL()) ) {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;
+        }
+    }
+    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\u009a\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\27\1\1\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\25\uffff\1\12\1\41\1\uffff\1\41\22\uffff\1\41\1\uffff\1\40\3\41\1\17\1\20\1\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\35\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 DFA141 extends DFA {
+
+        public DFA141(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 141;
+            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 "17153: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 LA141_1 = input.LA(1);
+
+                         
+                        int index141_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA141_2 = input.LA(1);
+
+                         
+                        int index141_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA141_3 = input.LA(1);
+
+                         
+                        int index141_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA141_4 = input.LA(1);
+
+                         
+                        int index141_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA141_5 = input.LA(1);
+
+                         
+                        int index141_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA141_6 = input.LA(1);
+
+                         
+                        int index141_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA141_7 = input.LA(1);
+
+                         
+                        int index141_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA141_8 = input.LA(1);
+
+                         
+                        int index141_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA141_9 = input.LA(1);
+
+                         
+                        int index141_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA141_10 = input.LA(1);
+
+                         
+                        int index141_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA141_11 = input.LA(1);
+
+                         
+                        int index141_11 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_11);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA141_12 = input.LA(1);
+
+                         
+                        int index141_12 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_12);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA141_13 = input.LA(1);
+
+                         
+                        int index141_13 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_13);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA141_14 = input.LA(1);
+
+                         
+                        int index141_14 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_14);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA141_15 = input.LA(1);
+
+                         
+                        int index141_15 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_15);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA141_16 = input.LA(1);
+
+                         
+                        int index141_16 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_16);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA141_17 = input.LA(1);
+
+                         
+                        int index141_17 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_17);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA141_18 = input.LA(1);
+
+                         
+                        int index141_18 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_18);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA141_19 = input.LA(1);
+
+                         
+                        int index141_19 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_19);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA141_20 = input.LA(1);
+
+                         
+                        int index141_20 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_20);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 20 : 
+                        int LA141_21 = input.LA(1);
+
+                         
+                        int index141_21 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_21);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 21 : 
+                        int LA141_22 = input.LA(1);
+
+                         
+                        int index141_22 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_22);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 22 : 
+                        int LA141_23 = input.LA(1);
+
+                         
+                        int index141_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_23);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 23 : 
+                        int LA141_24 = input.LA(1);
+
+                         
+                        int index141_24 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_24);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 24 : 
+                        int LA141_25 = input.LA(1);
+
+                         
+                        int index141_25 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_25);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 25 : 
+                        int LA141_26 = input.LA(1);
+
+                         
+                        int index141_26 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_26);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 26 : 
+                        int LA141_27 = input.LA(1);
+
+                         
+                        int index141_27 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_27);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 27 : 
+                        int LA141_28 = input.LA(1);
+
+                         
+                        int index141_28 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_28);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 28 : 
+                        int LA141_29 = input.LA(1);
+
+                         
+                        int index141_29 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_29);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 29 : 
+                        int LA141_30 = input.LA(1);
+
+                         
+                        int index141_30 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_30);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 30 : 
+                        int LA141_31 = input.LA(1);
+
+                         
+                        int index141_31 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_31);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 31 : 
+                        int LA141_32 = input.LA(1);
+
+                         
+                        int index141_32 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred203_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index141_32);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 141, _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\u009a\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\25\uffff\2\2\1\uffff\1\2\22\uffff\1\2\1\uffff\31\2\1\uffff\1\2\33\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 DFA150 extends DFA {
+
+        public DFA150(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 150;
+            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 "18510: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 LA150_1 = input.LA(1);
+
+                         
+                        int index150_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred212_InternalChartDSL()) ) {s = 78;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index150_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 150, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA153 extends DFA {
+
+        public DFA153(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 153;
+            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 "18780: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 LA153_1 = input.LA(1);
+
+                         
+                        int index153_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred215_InternalChartDSL()) ) {s = 78;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index153_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 153, _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[]{0x0000000000000022L});
+    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
+    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000600L});
+    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000400L});
+    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000000000L,0x0800000000000800L});
+    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0000000000000000L,0x000000000027E000L});
+    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000000000000L,0x3000000000000000L});
+    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000000000080L});
+    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000000000000000L,0x0000000000800000L});
+    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000000000000L,0xC000000000000000L,0x0000000000000003L});
+    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000000000000000L,0x0000000000004000L});
+    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000000000000000L,0x8000000000000000L,0x00000000000000DCL});
+    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000000000000000L,0x0000000002000000L,0x0000000000000020L});
+    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000000000000L,0x0000000000008000L});
+    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0000000000000000L,0x0000000000010000L});
+    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0x0000000000000000L,0x0000000000020000L});
+    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000E00L});
+    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x00000000000001C0L});
+    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000007000L});
+    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400200L});
+    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
+    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000018000L});
+    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x0000000800000080L});
+    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x0000000000000000L,0x0000000020000000L});
+    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x0000000000000000L,0x0000000007000200L});
+    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000000000000002L,0x0000000007000000L});
+    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0078000000000000L});
+    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000020000L});
+    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000040000L});
+    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0380000000000000L});
+    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0xFC00000000000000L,0x0000000000000003L});
+    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0008000000000000L,0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000000000L,0x0000000008000000L});
+    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000000000L,0x000000000000007CL});
+    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000800000000000L});
+    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x0000400000000020L,0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
+    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0001000000000020L});
+    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000001000000020L});
+    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
+    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
+    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0007E10C080001F0L,0x00BFE2B380000100L,0x0000000004000000L});
+    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0000000000000000L,0x0000000400000000L});
+    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0000000000000002L,0x0000000400000000L});
+    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0007E10C080001F0L,0x00BFE2B180000100L,0x0000000004000000L});
+    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0000000000002000L});
+    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0007E10C080001F0L,0x00BFE2B980000100L,0x0000000004000000L});
+    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
+    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000000000000000L,0x0000002000000000L});
+    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0001E00000000020L});
+    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x000000000C1F0000L});
+    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x0000000008000000L});
+    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x0000000006000000L});
+    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x0000000000004000L});
+    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x0000000000004002L});
+    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x0000000000008002L});
+    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x0000000001E00000L});
+    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x0000000001E00002L});
+    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x000000000E000000L,0x0000004000000000L});
+    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x000000000E000002L,0x0000004000000000L});
+    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x0000000080000020L,0x0000000100000000L});
+    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x0000000000000000L,0x0000004000000000L});
+    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x00000003FC000000L});
+    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x00000003FC000002L});
+    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x0000000040000000L});
+    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000000004000000L});
+    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x0000000088000000L});
+    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000000C00000000L});
+    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x0000000C00000002L});
+    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x000000F000000000L});
+    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x000000F000000002L});
+    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x0000010C00000000L});
+    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000800L});
+    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000800L});
+    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x0000060000000000L});
+    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0000080000000000L,0x0000000000000000L,0x0000000000C00000L});
+    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x0000080000000002L,0x0000000000000000L,0x0000000000C00000L});
+    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000080000000000L,0x0000000000000000L,0x0000000000400000L});
+    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x0003E00008000020L});
+    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0000000000000000L,0x0000002100000000L});
+    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x0000000080000020L,0x0200000100000000L});
+    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x0000000004000000L,0x0000000400000000L});
+    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0007E10C880001F0L,0x00BFE2B380000100L,0x0000000005000000L});
+    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0007E10C080001F0L,0x00BFE2B180000300L,0x0000000004000000L});
+    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x0007F10C880001F0L,0x00BFE2B180000100L,0x0000000007000000L});
+    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x0000000000000000L,0x0000000800000000L});
+    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0000000080000020L,0x0000000100000000L,0x0000000001000000L});
+    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0007F10C080001F2L,0x00BFE2B180000100L,0x0000000006000000L});
+    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0000000000000000L,0x0000000200000000L});
+    public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0000000000000000L,0x0000008000000000L});
+    public static final BitSet FOLLOW_108 = new BitSet(new long[]{0x0000000000000000L,0x0000010000000000L});
+    public static final BitSet FOLLOW_109 = new BitSet(new long[]{0x0000000000000000L,0x0000020000000000L});
+    public static final BitSet FOLLOW_110 = new BitSet(new long[]{0x0007E10C880001F0L,0x00BFE2B180000100L,0x0000000004000000L});
+    public static final BitSet FOLLOW_111 = new BitSet(new long[]{0x0000000080000020L,0x00001C0500000200L});
+    public static final BitSet FOLLOW_112 = new BitSet(new long[]{0x0000000080000022L,0x0000140500000000L});
+    public static final BitSet FOLLOW_113 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
+    public static final BitSet FOLLOW_114 = new BitSet(new long[]{0x0000000080000020L,0x0000140500000000L});
+    public static final BitSet FOLLOW_115 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000000L});
+    public static final BitSet FOLLOW_116 = new BitSet(new long[]{0x0007F10C080001F0L,0x00BFE2B1C0000100L,0x0000000006000000L});
+    public static final BitSet FOLLOW_117 = new BitSet(new long[]{0x0007E10C080001F0L,0x00BFE2B1C0000100L,0x0000000004000000L});
+    public static final BitSet FOLLOW_118 = new BitSet(new long[]{0x0007F10C080001F0L,0x00BFE2B180000100L,0x0000000006000000L});
+    public static final BitSet FOLLOW_119 = new BitSet(new long[]{0x0000000000000000L,0x0000400000000000L});
+    public static final BitSet FOLLOW_120 = new BitSet(new long[]{0x0000000000000000L,0x0000800000000000L});
+    public static final BitSet FOLLOW_121 = new BitSet(new long[]{0x0007F10C080001F0L,0x00BFE2B180000300L,0x0000000006000000L});
+    public static final BitSet FOLLOW_122 = new BitSet(new long[]{0x0000100000000000L,0x0000000000000000L,0x0000000002000000L});
+    public static final BitSet FOLLOW_123 = new BitSet(new long[]{0x0000000000000000L,0x0001000000000000L});
+    public static final BitSet FOLLOW_124 = new BitSet(new long[]{0x0000000008000000L,0x0000002100000000L});
+    public static final BitSet FOLLOW_125 = new BitSet(new long[]{0x0004000000000000L,0x0000000000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_126 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_127 = new BitSet(new long[]{0x00040000000001D0L,0x0006003000000000L,0x0000000004000000L});
+    public static final BitSet FOLLOW_128 = new BitSet(new long[]{0x0000000000000000L,0x0000002200000000L});
+    public static final BitSet FOLLOW_129 = new BitSet(new long[]{0x0000000000000002L,0x0000002000000000L});
+    public static final BitSet FOLLOW_130 = new BitSet(new long[]{0x0000000000000000L,0x0008000000000000L});
+    public static final BitSet FOLLOW_131 = new BitSet(new long[]{0x0000000000000000L,0x0010000000000000L});
+    public static final BitSet FOLLOW_132 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
+    public static final BitSet FOLLOW_133 = new BitSet(new long[]{0x0000000000000000L,0x0140000000000000L});
+    public static final BitSet FOLLOW_134 = new BitSet(new long[]{0x0000000000000000L,0x0040000000000000L});
+    public static final BitSet FOLLOW_135 = new BitSet(new long[]{0x0000000000000002L,0x0100000000000000L});
+    public static final BitSet FOLLOW_136 = new BitSet(new long[]{0x0000000000000000L,0x0080000000000000L});
+    public static final BitSet FOLLOW_137 = new BitSet(new long[]{0x0000080000000000L});
+    public static final BitSet FOLLOW_138 = new BitSet(new long[]{0x0000080000000002L});
+    public static final BitSet FOLLOW_139 = new BitSet(new long[]{0x0000000000000180L});
+    public static final BitSet FOLLOW_140 = new BitSet(new long[]{0x0000000080000020L,0x0000000300000000L});
+    public static final BitSet FOLLOW_141 = new BitSet(new long[]{0x0002200000000000L});
+    public static final BitSet FOLLOW_142 = new BitSet(new long[]{0x0000000000000000L,0x0400000000000000L});
+    public static final BitSet FOLLOW_143 = new BitSet(new long[]{0x0000000000000002L,0x0400000000000000L});
+    public static final BitSet FOLLOW_144 = new BitSet(new long[]{0x0000001000000000L});
+    public static final BitSet FOLLOW_145 = new BitSet(new long[]{0x0000000000000002L,0x3000000000000000L});
+    public static final BitSet FOLLOW_146 = new BitSet(new long[]{0x0000000000000002L,0xC000000000000000L,0x0000000000000003L});
+    public static final BitSet FOLLOW_147 = new BitSet(new long[]{0x0000000000000002L,0x8000000000000000L,0x00000000000000DCL});
+    public static final BitSet FOLLOW_148 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000E00L});
+    public static final BitSet FOLLOW_149 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000007000L});
+
+}
diff --git a/org.eclipse.osbp.xtext.chart.ide/src/org/eclipse/osbp/xtext/chart/ide/ChartDSLIdeModule.java b/org.eclipse.osbp.xtext.chart.ide/src/org/eclipse/osbp/xtext/chart/ide/ChartDSLIdeModule.java
new file mode 100644
index 0000000..a8e4d41
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ide/src/org/eclipse/osbp/xtext/chart/ide/ChartDSLIdeModule.java
@@ -0,0 +1,11 @@
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.osbp.xtext.chart.ide;
+
+
+/**
+ * Use this class to register ide components.
+ */
+public class ChartDSLIdeModule extends AbstractChartDSLIdeModule {
+}
diff --git a/org.eclipse.osbp.xtext.chart.ide/src/org/eclipse/osbp/xtext/chart/ide/ChartDSLIdeSetup.java b/org.eclipse.osbp.xtext.chart.ide/src/org/eclipse/osbp/xtext/chart/ide/ChartDSLIdeSetup.java
new file mode 100644
index 0000000..6c00e0d
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ide/src/org/eclipse/osbp/xtext/chart/ide/ChartDSLIdeSetup.java
@@ -0,0 +1,22 @@
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.osbp.xtext.chart.ide;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import org.eclipse.osbp.xtext.chart.ChartDSLRuntimeModule;
+import org.eclipse.osbp.xtext.chart.ChartDSLStandaloneSetup;
+import org.eclipse.xtext.util.Modules2;
+
+/**
+ * Initialization support for running Xtext languages as language servers.
+ */
+public class ChartDSLIdeSetup extends ChartDSLStandaloneSetup {
+
+	@Override
+	public Injector createInjector() {
+		return Guice.createInjector(Modules2.mixin(new ChartDSLRuntimeModule(), new ChartDSLIdeModule()));
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.chart.sdk/.classpath b/org.eclipse.osbp.xtext.chart.sdk/.classpath
new file mode 100644
index 0000000..af1430b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.sdk/.classpath
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" output="target/classes" path="src/main/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="src" output="target/test-classes" path="src/test/java">
+		<attributes>
+			<attribute name="optional" value="true"/>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
+		<attributes>
+			<attribute name="maven.pomderived" value="true"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/org.eclipse.osbp.xtext.chart.sdk/.project b/org.eclipse.osbp.xtext.chart.sdk/.project
index 1399d85..4887533 100644
--- a/org.eclipse.osbp.xtext.chart.sdk/.project
+++ b/org.eclipse.osbp.xtext.chart.sdk/.project
@@ -35,6 +35,11 @@
 			<arguments>
 			</arguments>
 		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.babel.editor.rbeBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
 	</buildSpec>
 	<natures>
 		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
@@ -42,5 +47,6 @@
 		<nature>org.eclipse.m2e.core.maven2Nature</nature>
 		<nature>org.eclipse.pde.FeatureNature</nature>
 		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.babel.editor.rbeNature</nature>
 	</natures>
 </projectDescription>
diff --git a/org.eclipse.osbp.xtext.chart.sdk/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.chart.sdk/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.sdk/.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.chart.sdk/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.xtext.chart.sdk/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..13b3428
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.sdk/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,13 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/org.eclipse.osbp.xtext.chart.sdk/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.chart.sdk/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.sdk/.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.chart.sdk/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.chart.sdk/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..0933f8c
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.sdk/.settings/org.eclipse.xtend.core.Xtend.prefs
@@ -0,0 +1,10 @@
+//outlet.DEFAULT_OUTPUT.sourceFolder.src/test/java.directory=src/test/generated-sources/xtend
+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.chart.tests/.classpath b/org.eclipse.osbp.xtext.chart.tests/.classpath
new file mode 100644
index 0000000..b4d2d11
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.tests/.gitignore b/org.eclipse.osbp.xtext.chart.tests/.gitignore
new file mode 100644
index 0000000..68c4b10
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.tests/.gitignore
@@ -0,0 +1,6 @@
+/bin/
+
+#/emf-gen/
+#/src-gen/
+#/xtend-gen/
+/target/
diff --git a/org.eclipse.osbp.xtext.chart.tests/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.chart.tests/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.tests/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.xtext.chart.tests/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.tests/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.chart.tests/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.tests/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.chart.tests/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.tests/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.chart.tests/META-INF/MANIFEST.MF
index 539aac3..dced400 100644
--- a/org.eclipse.osbp.xtext.chart.tests/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.xtext.chart.tests/META-INF/MANIFEST.MF
@@ -9,9 +9,12 @@
  org.eclipse.osbp.xtext.chart;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.chart.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
+ org.objectweb.asm;bundle-version="[5.0.1,6.0.0)";resolution:=optional,
+ 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",
@@ -22,4 +25,4 @@
  org.hamcrest.core,
  javax.validation
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Export-Package: org.eclipse.osbp.xtext.chart;version="0.9.0"
+Export-Package: org.eclipse.osbp.xtext.chart.tests;x-internal=true
diff --git a/org.eclipse.osbp.xtext.chart.tests/src-gen/org/eclipse/osbp/xtext/chart/tests/ChartDSLInjectorProvider.java b/org.eclipse.osbp.xtext.chart.tests/src-gen/org/eclipse/osbp/xtext/chart/tests/ChartDSLInjectorProvider.java
new file mode 100644
index 0000000..d28c3e6
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.tests/src-gen/org/eclipse/osbp/xtext/chart/tests/ChartDSLInjectorProvider.java
@@ -0,0 +1,79 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * generated by Xtext 2.11.0
+ *
+ */
+
+package org.eclipse.osbp.xtext.chart.tests;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import org.eclipse.osbp.xtext.chart.ChartDSLRuntimeModule;
+import org.eclipse.osbp.xtext.chart.ChartDSLStandaloneSetup;
+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 ChartDSLInjectorProvider 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 ChartDSLStandaloneSetup() {
+			@Override
+			public Injector createInjector() {
+				return Guice.createInjector(createRuntimeModule());
+			}
+		}.createInjectorAndDoEMFRegistration();
+	}
+
+	protected ChartDSLRuntimeModule createRuntimeModule() {
+		// make it work also with Maven/Tycho and OSGI
+		// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=493672
+		return new ChartDSLRuntimeModule() {
+			@Override
+			public ClassLoader bindClassLoaderToInstance() {
+				return ChartDSLInjectorProvider.class
+						.getClassLoader();
+			}
+		};
+	}
+
+	@Override
+	public void restoreRegistry() {
+		stateBeforeInjectorCreation.restoreGlobalState();
+	}
+
+	@Override
+	public void setupRegistry() {
+		getInjector();
+		stateAfterInjectorCreation.restoreGlobalState();
+	}
+}
diff --git a/org.eclipse.osbp.xtext.chart.tests/src/org/eclipse/osbp/xtext/chart/tests/ChartDSLParsingTest.xtend b/org.eclipse.osbp.xtext.chart.tests/src/org/eclipse/osbp/xtext/chart/tests/ChartDSLParsingTest.xtend
new file mode 100644
index 0000000..ef3ef34
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.tests/src/org/eclipse/osbp/xtext/chart/tests/ChartDSLParsingTest.xtend
@@ -0,0 +1,29 @@
+/*
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.osbp.xtext.chart.tests
+
+import com.google.inject.Inject
+import org.eclipse.osbp.xtext.chart.ChartModel
+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(ChartDSLInjectorProvider)
+class ChartDSLParsingTest {
+	@Inject
+	ParseHelper<ChartModel> 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.chart.tests/xtend-gen/org/eclipse/osbp/xtext/chart/tests/ChartDSLParsingTest.java b/org.eclipse.osbp.xtext.chart.tests/xtend-gen/org/eclipse/osbp/xtext/chart/tests/ChartDSLParsingTest.java
new file mode 100644
index 0000000..a886d21
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.tests/xtend-gen/org/eclipse/osbp/xtext/chart/tests/ChartDSLParsingTest.java
@@ -0,0 +1,38 @@
+/**
+ * generated by Xtext 2.11.0
+ */
+package org.eclipse.osbp.xtext.chart.tests;
+
+import com.google.inject.Inject;
+import org.eclipse.osbp.xtext.chart.ChartModel;
+import org.eclipse.osbp.xtext.chart.tests.ChartDSLInjectorProvider;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.testing.InjectWith;
+import org.eclipse.xtext.testing.XtextRunner;
+import org.eclipse.xtext.testing.util.ParseHelper;
+import org.eclipse.xtext.xbase.lib.Exceptions;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(XtextRunner.class)
+@InjectWith(ChartDSLInjectorProvider.class)
+@SuppressWarnings("all")
+public class ChartDSLParsingTest {
+  @Inject
+  private ParseHelper<ChartModel> parseHelper;
+  
+  @Test
+  public void loadModel() {
+    try {
+      StringConcatenation _builder = new StringConcatenation();
+      _builder.append("Hello Xtext!");
+      _builder.newLine();
+      final ChartModel result = this.parseHelper.parse(_builder);
+      Assert.assertNotNull(result);
+      Assert.assertTrue(result.eResource().getErrors().isEmpty());
+    } catch (Throwable _e) {
+      throw Exceptions.sneakyThrow(_e);
+    }
+  }
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/.classpath b/org.eclipse.osbp.xtext.chart.ui/.classpath
new file mode 100644
index 0000000..0377d77
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.ui/.gitignore b/org.eclipse.osbp.xtext.chart.ui/.gitignore
new file mode 100644
index 0000000..fa691f8
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/.gitignore
@@ -0,0 +1,9 @@
+/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/
diff --git a/org.eclipse.osbp.xtext.chart.ui/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.chart.ui/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.ui/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.xtext.chart.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.ui/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.chart.ui/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.ui/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.chart.ui/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.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.chart.ui/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.chart.ui/META-INF/MANIFEST.MF
index af8b9b2..1068468 100644
--- a/org.eclipse.osbp.xtext.chart.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.xtext.chart.ui/META-INF/MANIFEST.MF
@@ -9,31 +9,33 @@
  org.apache.log4j;bundle-version="1.2.15",
  org.apache.xerces;bundle-version="2.9.0",
  com.google.inject;bundle-version="3.0.0",
- org.eclipse.xtext.ui;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtext.ui.shared;bundle-version="[2.7.3,2.8.0)",
- org.eclipse.xtext.builder;bundle-version="[2.7.3,2.8.0)",
- 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.ui;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.ui.shared;bundle-version="[2.11.0,2.12.0)",
+ org.eclipse.xtext.builder;bundle-version="[2.11.0,2.12.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.ui;bundle-version="[2.11.0,2.12.0)",
  org.eclipse.emf.ecore.xcore,
  org.eclipse.ui.editors,
  org.eclipse.ui,
  org.antlr.runtime,
- org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.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.xtext.chart;bundle-version="[0.9.0,0.10.0)",
- org.eclipse.osbp.xtext.basic.ui;bundle-version="[0.9.0,0.10.0)"
+ org.eclipse.osbp.xtext.chart.ide;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.basic.ui;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.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: javax.validation,
  org.apache.log4j
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Export-Package: org.eclipse.osbp.xtext.chart.ui;version="0.9.0",
  org.eclipse.osbp.xtext.chart.ui.contentassist;version="0.9.0",
- org.eclipse.osbp.xtext.chart.ui.contentassist.antlr;version="0.9.0",
- org.eclipse.osbp.xtext.chart.ui.contentassist.antlr.internal;version="0.9.0",
  org.eclipse.osbp.xtext.chart.ui.internal;version="0.9.0",
  org.eclipse.osbp.xtext.chart.ui.labeling;version="0.9.0",
  org.eclipse.osbp.xtext.chart.ui.outline;version="0.9.0",
  org.eclipse.osbp.xtext.chart.ui.quickfix;version="0.9.0"
-Bundle-Activator: org.eclipse.osbp.xtext.chart.ui.internal.ChartDSLActivator
+Bundle-Activator: org.eclipse.osbp.xtext.chart.ui.internal.ChartActivator
+Bundle-ClassPath: src/,src-gen/,xtend-gen/,.
diff --git a/org.eclipse.osbp.xtext.chart.ui/build.properties b/org.eclipse.osbp.xtext.chart.ui/build.properties
index ed572cc..9603ed5 100644
--- a/org.eclipse.osbp.xtext.chart.ui/build.properties
+++ b/org.eclipse.osbp.xtext.chart.ui/build.properties
@@ -1,7 +1,11 @@
 source.. = src/,\
           src-gen/,\
           xtend-gen/
-bin.includes = about.properties,  about.mappings,  about.ini,  about.html,  META-INF/,\
+bin.includes = about.properties,\
+               about.mappings,\
+               about.ini,\
+               about.html,\
+               META-INF/,\
                .,\
                plugin.xml,\
                .classpath,\
@@ -11,7 +15,10 @@
                i18n/,\
                icons/,\
                LICENSE.txt,\
-               license.html
+               license.html,\
+               src/,\
+               src-gen/,\
+               xtend-gen/
 src.includes = about.properties,  about.mappings,  about.ini,  about.html,  icons/,\
                LICENSE.txt,\
                license.html
diff --git a/org.eclipse.osbp.xtext.chart.ui/icons/LICENSE.txt b/org.eclipse.osbp.xtext.chart.ui/icons/LICENSE.txt
index 8c32fde..0b4722c 100644
--- a/org.eclipse.osbp.xtext.chart.ui/icons/LICENSE.txt
+++ b/org.eclipse.osbp.xtext.chart.ui/icons/LICENSE.txt
@@ -23,7 +23,5 @@
 dsl_import.png
 dsl_option.png
 dsl_range.png
-logo_osbee.png
-os-bee-logo-2016-cmyk_transparent.png
 model.png
 package.gif
diff --git a/org.eclipse.osbp.xtext.chart.ui/plugin.xml b/org.eclipse.osbp.xtext.chart.ui/plugin.xml
index 9459709..a370cd2 100644
--- a/org.eclipse.osbp.xtext.chart.ui/plugin.xml
+++ b/org.eclipse.osbp.xtext.chart.ui/plugin.xml
@@ -529,4 +529,34 @@
     </provider>
   </extension>
 
+    <!-- Organize imports  -->
+    <extension
+        point="org.eclipse.ui.handlers">
+        <handler
+            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.osbp.xtext.oxtype.ui.imports.OXTypeOrganizeImportsHandler"
+            commandId="org.eclipse.xtext.xbase.ui.organizeImports">
+               <activeWhen>
+                <reference
+                    definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.Editor.opened">
+                    </reference>
+                </visibleWhen>
+            </command>  
+        </menuContribution>
+    </extension>
+
 </plugin>
diff --git a/org.eclipse.osbp.xtext.chart.ui/plugin.xml_gen b/org.eclipse.osbp.xtext.chart.ui/plugin.xml_gen
index 72ead83..831990e 100644
--- a/org.eclipse.osbp.xtext.chart.ui/plugin.xml_gen
+++ b/org.eclipse.osbp.xtext.chart.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.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
-            contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
-            default="true"
-            extensions="chart"
-            id="org.eclipse.osbp.xtext.chart.ChartDSL"
-            matchingStrategy="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.editor.JavaEditorInputMatcher"
-            name="ChartDSL Editor">
-        </editor>
-    </extension>
-    <extension
-        point="org.eclipse.ui.handlers">
-        <handler
-            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
-            commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
-            <activeWhen>
-                <reference
-                    definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.Editor.opened">
-                </reference>
-            </activeWhen>
-        </handler>
-        <handler
-            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
-            commandId="org.eclipse.osbp.xtext.chart.ChartDSL.validate">
-         <activeWhen>
-            <reference
-                    definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.Editor.opened">
-            </reference>
-         </activeWhen>
-      	</handler>
-      	<!-- copy qualified name -->
-        <handler
-            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory: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.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.XtextEditor"
+			contributorClass="org.eclipse.ui.editors.text.TextEditorActionContributor"
+			default="true"
+			extensions="chart"
+			id="org.eclipse.osbp.xtext.chart.ChartDSL"
+			matchingStrategy="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.editor.JavaEditorInputMatcher"
+			name="ChartDSL Editor">
+		</editor>
+	</extension>
+	<extension
+		point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclarationHandler"
+			commandId="org.eclipse.xtext.ui.editor.hyperlinking.OpenDeclaration">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.Editor.opened">
+				</reference>
+			</activeWhen>
+		</handler>
+		<handler
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.handler.ValidateActionHandler"
+			commandId="org.eclipse.osbp.xtext.chart.ChartDSL.validate">
+		<activeWhen>
+			<reference
+					definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.Editor.opened">
+			</reference>
+		</activeWhen>
+		</handler>
+		<!-- copy qualified name -->
+		<handler
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedNameHandler"
+			commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.EditorCopyQualifiedName">
+			<activeWhen>
 				<reference definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.Editor.opened" />
-            </activeWhen>
-        </handler>
-        <handler
-            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
-            commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
-            <activeWhen>
-            	<and>
-            		<reference definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.XtextEditor.opened" />
-	                <iterate>
+			</activeWhen>
+		</handler>
+		<handler
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedNameHandler"
+			commandId="org.eclipse.xtext.ui.editor.copyqualifiedname.OutlineCopyQualifiedName">
+			<activeWhen>
+				<and>
+					<reference definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.Editor.opened">
-            <and>
-                <reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
-                <with variable="activeEditor">
-                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
-                        value="org.eclipse.osbp.xtext.chart.ChartDSL" 
-                        forcePluginActivation="true"/>
-                </with>        
-            </and>
-        </definition>
-        <definition id="org.eclipse.osbp.xtext.chart.ChartDSL.XtextEditor.opened">
-            <and>
-                <reference definitionId="isXtextEditorActive"/>
-                <with variable="activeEditor">
-                    <test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName" 
-                        value="org.eclipse.osbp.xtext.chart.ChartDSL" 
-                        forcePluginActivation="true"/>
-                </with>        
-            </and>
-        </definition>
-    </extension>
-    <extension
-            point="org.eclipse.ui.preferencePages">
-        <page
-            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
-            id="org.eclipse.osbp.xtext.chart.ChartDSL"
-            name="ChartDSL">
-            <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
-        </page>
-        <page
-            category="org.eclipse.osbp.xtext.chart.ChartDSL"
-            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
-            id="org.eclipse.osbp.xtext.chart.ChartDSL.coloring"
-            name="Syntax Coloring">
-            <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
-        </page>
-        <page
-            category="org.eclipse.osbp.xtext.chart.ChartDSL"
-            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
-            id="org.eclipse.osbp.xtext.chart.ChartDSL.templates"
-            name="Templates">
-            <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
-        </page>
-    </extension>
-    <extension
-            point="org.eclipse.ui.propertyPages">
-        <page
-            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
-            id="org.eclipse.osbp.xtext.chart.ChartDSL"
-            name="ChartDSL">
-            <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
-            <enabledWhen>
-	            <adapt type="org.eclipse.core.resources.IProject"/>
+			</activeWhen>
+		</handler>
+	</extension>
+	<extension point="org.eclipse.core.expressions.definitions">
+		<definition id="org.eclipse.osbp.xtext.chart.ChartDSL.Editor.opened">
+			<and>
+				<reference definitionId="isActiveEditorAnInstanceOfXtextEditor"/>
+				<with variable="activeEditor">
+					<test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName"
+						value="org.eclipse.osbp.xtext.chart.ChartDSL"
+						forcePluginActivation="true"/>
+				</with>
+			</and>
+		</definition>
+		<definition id="org.eclipse.osbp.xtext.chart.ChartDSL.XtextEditor.opened">
+			<and>
+				<reference definitionId="isXtextEditorActive"/>
+				<with variable="activeEditor">
+					<test property="org.eclipse.xtext.ui.editor.XtextEditor.languageName"
+						value="org.eclipse.osbp.xtext.chart.ChartDSL"
+						forcePluginActivation="true"/>
+				</with>
+			</and>
+		</definition>
+	</extension>
+	<extension
+			point="org.eclipse.ui.preferencePages">
+		<page
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+			id="org.eclipse.osbp.xtext.chart.ChartDSL"
+			name="ChartDSL">
+			<keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+		</page>
+		<page
+			category="org.eclipse.osbp.xtext.chart.ChartDSL"
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.syntaxcoloring.SyntaxColoringPreferencePage"
+			id="org.eclipse.osbp.xtext.chart.ChartDSL.coloring"
+			name="Syntax Coloring">
+			<keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+		</page>
+		<page
+			category="org.eclipse.osbp.xtext.chart.ChartDSL"
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.templates.XtextTemplatePreferencePage"
+			id="org.eclipse.osbp.xtext.chart.ChartDSL.templates"
+			name="Templates">
+			<keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+		</page>
+	</extension>
+	<extension
+			point="org.eclipse.ui.propertyPages">
+		<page
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.preferences.LanguageRootPreferencePage"
+			id="org.eclipse.osbp.xtext.chart.ChartDSL"
+			name="ChartDSL">
+			<keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+			<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.chart.ui.keyword_ChartDSL"
-            label="ChartDSL"/>
-    </extension>
-    <extension
-         point="org.eclipse.ui.commands">
-      <command
-            description="Trigger expensive validation"
-            id="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.validate"
-                 style="push"
-                 tooltip="Trigger expensive validation">
-            <visibleWhen checkEnabled="false">
-                <reference
-                    definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.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.chart.ChartDSL.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.chart.ui.keyword_ChartDSL"
+			label="ChartDSL"/>
+	</extension>
+	<extension
+		point="org.eclipse.ui.commands">
+	<command
+			description="Trigger expensive validation"
+			id="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.validate"
+				 style="push"
+				 tooltip="Trigger expensive validation">
+			<visibleWhen checkEnabled="false">
+				<reference
+					definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.XtextEditor.opened" />
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.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.chart.ChartDSL.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.chart.ChartDSL.Editor.opened">
-                	</reference>
-            	</visibleWhen>
+					<reference definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.Editor.opened">
+					</reference>
+				</visibleWhen>
 			</command>
 		</menuContribution>
 	</extension>
 	<extension point="org.eclipse.ui.handlers">
-	    <handler
-            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
-            commandId="org.eclipse.xtext.ui.editor.FindReferences">
-            <activeWhen>
-                <reference
-                    definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.Editor.opened">
-                </reference>
-            </activeWhen>
-        </handler>
-    </extension>   
-
-<!-- adding resource factories -->
-
+		<handler
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.findrefs.FindReferencesHandler"
+			commandId="org.eclipse.xtext.ui.editor.FindReferences">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
-            uriExtension="chart">
-        </resourceServiceProvider>
-    </extension>
-
-
+		<resourceServiceProvider
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.resource.IResourceUIServiceProvider"
+			uriExtension="chart">
+		</resourceServiceProvider>
+	</extension>
 	<!-- marker definitions for org.eclipse.osbp.xtext.chart.ChartDSL -->
 	<extension
-	        id="chartdsl.check.fast"
-	        name="ChartDSL Problem"
-	        point="org.eclipse.core.resources.markers">
-	    <super type="org.eclipse.xtext.ui.check.fast"/>
-	    <persistent value="true"/>
+			id="chartdsl.check.fast"
+			name="ChartDSL Problem"
+			point="org.eclipse.core.resources.markers">
+		<super type="org.eclipse.xtext.ui.check.fast"/>
+		<persistent value="true"/>
 	</extension>
 	<extension
-	        id="chartdsl.check.normal"
-	        name="ChartDSL Problem"
-	        point="org.eclipse.core.resources.markers">
-	    <super type="org.eclipse.xtext.ui.check.normal"/>
-	    <persistent value="true"/>
+			id="chartdsl.check.normal"
+			name="ChartDSL Problem"
+			point="org.eclipse.core.resources.markers">
+		<super type="org.eclipse.xtext.ui.check.normal"/>
+		<persistent value="true"/>
 	</extension>
 	<extension
-	        id="chartdsl.check.expensive"
-	        name="ChartDSL Problem"
-	        point="org.eclipse.core.resources.markers">
-	    <super type="org.eclipse.xtext.ui.check.expensive"/>
-	    <persistent value="true"/>
+			id="chartdsl.check.expensive"
+			name="ChartDSL 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.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
-            fileExtensions="chart"
-            >
-      </participant>
-   </extension>
-   <extension
-            point="org.eclipse.ui.preferencePages">
-        <page
-            category="org.eclipse.osbp.xtext.chart.ChartDSL"
-            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
-            id="org.eclipse.osbp.xtext.chart.ChartDSL.compiler.preferencePage"
-            name="Compiler">
-            <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
-        </page>
-    </extension>
-    <extension
-            point="org.eclipse.ui.propertyPages">
-        <page
-            category="org.eclipse.osbp.xtext.chart.ChartDSL"
-            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
-            id="org.eclipse.osbp.xtext.chart.ChartDSL.compiler.propertyPage"
-            name="Compiler">
-            <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
-            <enabledWhen>
-	            <adapt type="org.eclipse.core.resources.IProject"/>
+	<extension point="org.eclipse.xtext.builder.participant">
+		<participant
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.builder.IXtextBuilderParticipant"
+			fileExtensions="chart"/>
+	</extension>
+	<extension point="org.eclipse.ui.preferencePages">
+		<page
+			category="org.eclipse.osbp.xtext.chart.ChartDSL"
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+			id="org.eclipse.osbp.xtext.chart.ChartDSL.compiler.preferencePage"
+			name="Compiler">
+			<keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+		</page>
+	</extension>
+	<extension point="org.eclipse.ui.propertyPages">
+		<page
+			category="org.eclipse.osbp.xtext.chart.ChartDSL"
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.builder.preferences.BuilderPreferencePage"
+			id="org.eclipse.osbp.xtext.chart.ChartDSL.compiler.propertyPage"
+			name="Compiler">
+			<keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+			<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.chart.ChartDSL.OpenGeneratedCode"
+				style="push">
+				<visibleWhen checkEnabled="false">
+					<reference definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.Editor.opened" />
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.generator.trace.OpenGeneratedFileHandler"
+			commandId="org.eclipse.xtext.ui.OpenGeneratedFileCommand">
+			<activeWhen>
+				<reference definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL -->
-    <extension
-            point="org.eclipse.ui.ide.markerResolution">
-        <markerResolutionGenerator
-            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.osbp.xtext.chart.ui.chartdsl.check.fast">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-        </markerResolutionGenerator>
-        <markerResolutionGenerator
-            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.osbp.xtext.chart.ui.chartdsl.check.normal">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-        </markerResolutionGenerator>
-        <markerResolutionGenerator
-            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
-            markerType="org.eclipse.osbp.xtext.chart.ui.chartdsl.check.expensive">
-            <attribute
-                name="FIXABLE_KEY"
-                value="true">
-            </attribute>
-        </markerResolutionGenerator>
-    </extension>
-   	<!-- Rename Refactoring -->
+	<!-- quickfix marker resolution generator for org.eclipse.osbp.xtext.chart.ChartDSL -->
+	<extension
+			point="org.eclipse.ui.ide.markerResolution">
+		<markerResolutionGenerator
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.osbp.xtext.chart.ui.chartdsl.check.fast">
+			<attribute
+				name="FIXABLE_KEY"
+				value="true">
+			</attribute>
+		</markerResolutionGenerator>
+		<markerResolutionGenerator
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.osbp.xtext.chart.ui.chartdsl.check.normal">
+			<attribute
+				name="FIXABLE_KEY"
+				value="true">
+			</attribute>
+		</markerResolutionGenerator>
+		<markerResolutionGenerator
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.quickfix.MarkerResolutionGenerator"
+			markerType="org.eclipse.osbp.xtext.chart.ui.chartdsl.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.chart.ui.ChartDSLExecutableExtensionFactory: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.chart.ChartDSL.Editor.opened">
-               </reference>
-            </visibleWhen>
-         </command>
-      </menuContribution>
-   </extension>
-   <extension point="org.eclipse.ui.preferencePages">
-	    <page
-	        category="org.eclipse.osbp.xtext.chart.ChartDSL"
-	        class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
-	        id="org.eclipse.osbp.xtext.chart.ChartDSL.refactoring"
-	        name="Refactoring">
-	        <keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
-	    </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.chart.ChartDSL.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.chart.ChartDSL"
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.refactoring.ui.RefactoringPreferencePage"
+			id="org.eclipse.osbp.xtext.chart.ChartDSL.refactoring"
+			name="Refactoring">
+			<keywordReference id="org.eclipse.osbp.xtext.chart.ui.keyword_ChartDSL"/>
+		</page>
+	</extension>
+	<!-- Type Hierarchy  -->
+	<extension point="org.eclipse.ui.handlers">
 		<handler 
 			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory: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.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.imports.OrganizeImportsHandler"
+			commandId="org.eclipse.xtext.xbase.ui.organizeImports">
+			<activeWhen>
+				<reference
+					definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.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.chart.ui.ChartDSLExecutableExtensionFactory: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.chart.ui.ChartDSLExecutableExtensionFactory: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.chart.ChartDSL" 
-                          id="org.eclipse.osbp.xtext.chart.ChartDSL.rulerActions">
-	     <action
-	             label="Not Used"
-	             class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
-	             style="push"
-	             actionID="RulerDoubleClick"
-	             id="org.eclipse.osbp.xtext.chart.ChartDSL.doubleClickBreakpointAction"/>
-	  </editorContribution>
-   </extension>
-   <extension point="org.eclipse.ui.popupMenus">
-      <viewerContribution
-         targetID="org.eclipse.osbp.xtext.chart.ChartDSL.RulerContext"
-         id="org.eclipse.osbp.xtext.chart.ChartDSL.RulerPopupActions">
-         <action
-            label="Toggle Breakpoint"
-            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
-            menubarPath="debug"
-            id="org.eclipse.osbp.xtext.chart.ChartDSL.rulerContextMenu.toggleBreakpointAction">
-         </action>
-         <action
-            label="Not used"
-            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerEnableDisableBreakpointActionDelegate"
-            menubarPath="debug"
-            id="org.eclipse.osbp.xtext.chart.ChartDSL.rulerContextMenu.enableDisableBreakpointAction">
-         </action>
-         <action
-           label="Breakpoint Properties"
-           helpContextId="breakpoint_properties_action_context"
-           class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.jdt.debug.ui.actions.JavaBreakpointPropertiesRulerActionDelegate"
-           menubarPath="group.properties"
-           id="org.eclipse.osbp.xtext.chart.ChartDSL.rulerContextMenu.openBreapointPropertiesAction">
-         </action>
-      </viewerContribution>
-   </extension>
-    <!-- Introduce Local Variable Refactoring -->
+	<extension point="org.eclipse.core.runtime.adapters">
+		<factory class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory: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.chart.ChartDSL" 
+			id="org.eclipse.osbp.xtext.chart.ChartDSL.rulerActions">
+			<action
+				label="Not Used"
+	 			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+				style="push"
+				actionID="RulerDoubleClick"
+				id="org.eclipse.osbp.xtext.chart.ChartDSL.doubleClickBreakpointAction"/>
+		</editorContribution>
+	</extension>
+	<extension point="org.eclipse.ui.popupMenus">
+		<viewerContribution
+			targetID="org.eclipse.osbp.xtext.chart.ChartDSL.RulerContext"
+			id="org.eclipse.osbp.xtext.chart.ChartDSL.RulerPopupActions">
+			<action
+				label="Toggle Breakpoint"
+				class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerToggleBreakpointActionDelegate"
+				menubarPath="debug"
+				id="org.eclipse.osbp.xtext.chart.ChartDSL.rulerContextMenu.toggleBreakpointAction">
+			</action>
+			<action
+				label="Not used"
+				class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.debug.ui.actions.RulerEnableDisableBreakpointActionDelegate"
+				menubarPath="debug"
+				id="org.eclipse.osbp.xtext.chart.ChartDSL.rulerContextMenu.enableDisableBreakpointAction">
+			</action>
+			<action
+				label="Breakpoint Properties"
+				helpContextId="breakpoint_properties_action_context"
+				class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.jdt.debug.ui.actions.JavaBreakpointPropertiesRulerActionDelegate"
+				menubarPath="group.properties"
+				id="org.eclipse.osbp.xtext.chart.ChartDSL.rulerContextMenu.openBreapointPropertiesAction">
+			</action>
+		</viewerContribution>
+	</extension>
+	<!-- Introduce Local Variable Refactoring -->
 	<extension point="org.eclipse.ui.handlers">
 		<handler 
 			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory: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.chart.ChartDSL.Editor.opened">
-               </reference>
-            </visibleWhen>
-         </command>
-      </menuContribution>
-   </extension>  
-   <!-- Open implementation -->
-   <extension point="org.eclipse.ui.handlers">
-      <handler
-            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory: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.chart.ChartDSL.Editor.opened">
+					</reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<!-- Open implementation -->
+	<extension point="org.eclipse.ui.handlers">
+		<handler
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.xbase.ui.navigation.OpenImplementationHandler"
+			commandId="org.eclipse.xtext.xbase.ui.OpenImplementationCommand">
+			<activeWhen>
 				<reference
 					definitionId="org.eclipse.osbp.xtext.chart.ChartDSL.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.chart.ChartDSL.Editor.opened">
-              </reference>
-		</visibleWhen>
-         </command>
-      </menuContribution>
-   </extension>
-
-  <extension point="org.eclipse.compare.contentViewers">
-    <viewer id="org.eclipse.osbp.xtext.chart.ChartDSL.compare.contentViewers"
-            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
-            extensions="chart">
-    </viewer>
-  </extension>
-  <extension point="org.eclipse.compare.contentMergeViewers">
-    <viewer id="org.eclipse.osbp.xtext.chart.ChartDSL.compare.contentMergeViewers"
-            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
-            extensions="chart" label="ChartDSL Compare">
-     </viewer>
-  </extension>
-  <extension point="org.eclipse.ui.editors.documentProviders">
-    <provider id="org.eclipse.osbp.xtext.chart.ChartDSL.editors.documentProviders"
-            class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
-            extensions="chart">
-    </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.chart.ChartDSL.Editor.opened">
+					</reference>
+				</visibleWhen>
+			</command>
+		</menuContribution>
+	</extension>
+	<extension point="org.eclipse.compare.contentViewers">
+		<viewer id="org.eclipse.osbp.xtext.chart.ChartDSL.compare.contentViewers"
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+			extensions="chart">
+		</viewer>
+	</extension>
+	<extension point="org.eclipse.compare.contentMergeViewers">
+		<viewer id="org.eclipse.osbp.xtext.chart.ChartDSL.compare.contentMergeViewers"
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.compare.InjectableViewerCreator"
+			extensions="chart" label="ChartDSL Compare">
+		</viewer>
+	</extension>
+	<extension point="org.eclipse.ui.editors.documentProviders">
+		<provider id="org.eclipse.osbp.xtext.chart.ChartDSL.editors.documentProviders"
+			class="org.eclipse.osbp.xtext.chart.ui.ChartDSLExecutableExtensionFactory:org.eclipse.xtext.ui.editor.model.XtextDocumentProvider"
+			extensions="chart">
+		</provider>
+	</extension>
+	<extension point="org.eclipse.team.core.fileTypes">
+		<fileTypes
+			extension="chart"
+			type="text">
+		</fileTypes>
+	</extension>
 </plugin>
diff --git a/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/AbstractChartDSLUiModule.java b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/AbstractChartDSLUiModule.java
index 65def2f..0e8c7a6 100644
--- a/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/AbstractChartDSLUiModule.java
+++ b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/AbstractChartDSLUiModule.java
@@ -10,365 +10,399 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.chart.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.chart.ide.contentassist.antlr.ChartDSLParser;
+import org.eclipse.osbp.xtext.chart.ide.contentassist.antlr.PartialChartDSLContentAssistParser;
+import org.eclipse.osbp.xtext.chart.ide.contentassist.antlr.internal.InternalChartDSLLexer;
+import org.eclipse.osbp.xtext.chart.ui.contentassist.ChartDSLProposalProvider;
+import org.eclipse.osbp.xtext.chart.ui.labeling.ChartDSLDescriptionLabelProvider;
+import org.eclipse.osbp.xtext.chart.ui.labeling.ChartDSLLabelProvider;
+import org.eclipse.osbp.xtext.chart.ui.outline.ChartDSLOutlineTreeProvider;
+import org.eclipse.osbp.xtext.chart.ui.quickfix.ChartDSLQuickfixProvider;
+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.chart.ui.ChartDSLUiModule}
+ * Manual modifications go to {@link ChartDSLUiModule}.
  */
 @SuppressWarnings("all")
-public abstract class AbstractChartDSLUiModule extends DefaultUiModule {
-	
+public abstract class AbstractChartDSLUiModule extends DefaultXbaseWithAnnotationsUiModule {
+
 	public AbstractChartDSLUiModule(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.chart.parser.antlr.internal.InternalChartDSLLexer.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(InternalChartDSLLexer.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.chart.parser.antlr.internal.InternalChartDSLLexer.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 ChartDSLParser.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(InternalChartDSLLexer.class).toProvider(LexerProvider.create(InternalChartDSLLexer.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.chart.ui.labeling.ChartDSLLabelProvider.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.chart.ui.labeling.ChartDSLDescriptionLabelProvider.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.chart.ui.outline.ChartDSLOutlineTreeProvider.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.chart.ui.outline.ChartDSLOutlineTreeProvider.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.chart.ui.quickfix.ChartDSLQuickfixProvider.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.chart.ui.contentassist.ChartDSLProposalProvider.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.labeling.LabelProviderFragment2
+	public Class<? extends ILabelProvider> bindILabelProvider() {
+		return ChartDSLLabelProvider.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(ChartDSLDescriptionLabelProvider.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.chart.ui.contentassist.antlr.ChartDSLParser.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.outline.OutlineTreeProviderFragment2
+	public Class<? extends IOutlineTreeProvider> bindIOutlineTreeProvider() {
+		return ChartDSLOutlineTreeProvider.class;
 	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrUiGeneratorFragment
-	public void configureContentAssistLexerProvider(com.google.inject.Binder binder) {
-		binder.bind(org.eclipse.osbp.xtext.chart.ui.contentassist.antlr.internal.InternalChartDSLLexer.class).toProvider(org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.xtext.chart.ui.contentassist.antlr.internal.InternalChartDSLLexer.class));
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.outline.OutlineTreeProviderFragment2
+	public Class<? extends IOutlineTreeStructureProvider> bindIOutlineTreeStructureProvider() {
+		return ChartDSLOutlineTreeProvider.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.chart.ui.contentassist.antlr.internal.InternalChartDSLLexer.class);
+	
+	// contributed by org.eclipse.xtext.xtext.generator.ui.quickfix.QuickfixProviderFragment2
+	public Class<? extends IssueResolutionProvider> bindIssueResolutionProvider() {
+		return ChartDSLQuickfixProvider.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 ChartDSLProposalProvider.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 PartialChartDSLContentAssistParser.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.chart.ui.contentassist.antlr.PartialChartDSLContentAssistParser.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.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/ChartDSLExecutableExtensionFactory.java b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/ChartDSLExecutableExtensionFactory.java
index 1b14f2f..a476c08 100644
--- a/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/ChartDSLExecutableExtensionFactory.java
+++ b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/ChartDSLExecutableExtensionFactory.java
@@ -10,16 +10,17 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.chart.ui;
 
+import com.google.inject.Injector;
+import org.eclipse.osbp.xtext.chart.ui.internal.ChartActivator;
 import org.eclipse.xtext.ui.guice.AbstractGuiceAwareExecutableExtensionFactory;
 import org.osgi.framework.Bundle;
 
-import com.google.inject.Injector;
-
-import org.eclipse.osbp.xtext.chart.ui.internal.ChartDSLActivator;
-
 /**
  * This class was generated. Customizations should only happen in a newly
  * introduced subclass. 
@@ -28,12 +29,12 @@
 
 	@Override
 	protected Bundle getBundle() {
-		return ChartDSLActivator.getInstance().getBundle();
+		return ChartActivator.getInstance().getBundle();
 	}
 	
 	@Override
 	protected Injector getInjector() {
-		return ChartDSLActivator.getInstance().getInjector(ChartDSLActivator.ORG_ECLIPSE_OSBP_XTEXT_CHART_CHARTDSL);
+		return ChartActivator.getInstance().getInjector(ChartActivator.ORG_ECLIPSE_OSBP_XTEXT_CHART_CHARTDSL);
 	}
 	
 }
diff --git a/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/AbstractChartDSLProposalProvider.java b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/AbstractChartDSLProposalProvider.java
index e8b9bce..f7fab97 100644
--- a/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/AbstractChartDSLProposalProvider.java
+++ b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/AbstractChartDSLProposalProvider.java
@@ -10,31 +10,36 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.chart.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 AbstractChartDSLProposalProvider extends org.eclipse.xtext.xbase.annotations.ui.contentassist.XbaseWithAnnotationsProposalProvider {
-		
+public abstract class AbstractChartDSLProposalProvider extends OXtypeProposalProvider {
+
+	public void completeChartModel_ImportSection(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
+	}
 	public void completeChartModel_Packages(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
 	public void completeChartPackage_Name(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeChartPackage_Imports(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
-	}
 	public void completeChartPackage_Charts(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
@@ -56,6 +61,9 @@
 	public void completeChart_PollingTime(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
+	public void completeChart_SelectById(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
+		// subclasses may override
+	}
 	public void completeChart_Source(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
@@ -185,10 +193,7 @@
 	public void completeChartSegmentColor_Rgb(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
 	}
-	public void completeChartImport_ImportedNamespace(EObject model, Assignment assignment, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		completeRuleCall(((RuleCall)assignment.getTerminal()), context, acceptor);
-	}
-    
+
 	public void complete_ChartModel(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
@@ -249,15 +254,9 @@
 	public void complete_ChartSegmentColor(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_ChartImport(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		// subclasses may override
-	}
 	public void complete_SignedNumber(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
-	public void complete_ChartQualifiedNameWithWildCard(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		// subclasses may override
-	}
 	public void complete_TRANSLATABLESTRING(EObject model, RuleCall ruleCall, ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
 		// subclasses may override
 	}
diff --git a/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/internal/ChartActivator.java b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/internal/ChartActivator.java
new file mode 100644
index 0000000..5981ba1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/src-gen/org/eclipse/osbp/xtext/chart/ui/internal/ChartActivator.java
@@ -0,0 +1,106 @@
+/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * generated by Xtext 2.11.0
+ *
+ */
+
+package org.eclipse.osbp.xtext.chart.ui.internal;
+
+import com.google.common.collect.Maps;
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.Module;
+import java.util.Collections;
+import java.util.Map;
+import org.apache.log4j.Logger;
+import org.eclipse.osbp.xtext.chart.ChartDSLRuntimeModule;
+import org.eclipse.osbp.xtext.chart.ui.ChartDSLUiModule;
+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 ChartActivator extends AbstractUIPlugin {
+
+	public static final String ORG_ECLIPSE_OSBP_XTEXT_CHART_CHARTDSL = "org.eclipse.osbp.xtext.chart.ChartDSL";
+	
+	private static final Logger logger = Logger.getLogger(ChartActivator.class);
+	
+	private static ChartActivator INSTANCE;
+	
+	private Map<String, Injector> injectors = Collections.synchronizedMap(Maps.<String, Injector> newHashMapWithExpectedSize(1));
+	
+	@Override
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		INSTANCE = this;
+	}
+	
+	@Override
+	public void stop(BundleContext context) throws Exception {
+		injectors.clear();
+		INSTANCE = null;
+		super.stop(context);
+	}
+	
+	public static ChartActivator getInstance() {
+		return INSTANCE;
+	}
+	
+	public Injector getInjector(String language) {
+		synchronized (injectors) {
+			Injector injector = injectors.get(language);
+			if (injector == null) {
+				injectors.put(language, injector = createInjector(language));
+			}
+			return injector;
+		}
+	}
+	
+	protected Injector createInjector(String language) {
+		try {
+			Module runtimeModule = getRuntimeModule(language);
+			Module sharedStateModule = getSharedStateModule();
+			Module uiModule = getUiModule(language);
+			Module mergedModule = Modules2.mixin(runtimeModule, sharedStateModule, uiModule);
+			return Guice.createInjector(mergedModule);
+		} catch (Exception e) {
+			logger.error("Failed to create injector for " + language);
+			logger.error(e.getMessage(), e);
+			throw new RuntimeException("Failed to create injector for " + language, e);
+		}
+	}
+	
+	protected Module getRuntimeModule(String grammar) {
+		if (ORG_ECLIPSE_OSBP_XTEXT_CHART_CHARTDSL.equals(grammar)) {
+			return new ChartDSLRuntimeModule();
+		}
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getUiModule(String grammar) {
+		if (ORG_ECLIPSE_OSBP_XTEXT_CHART_CHARTDSL.equals(grammar)) {
+			return new ChartDSLUiModule(this);
+		}
+		throw new IllegalArgumentException(grammar);
+	}
+	
+	protected Module getSharedStateModule() {
+		return new SharedStateModule();
+	}
+	
+}
diff --git a/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLDocumentationTranslator.java b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLDocumentationTranslator.java
index 77da719..d591f97 100644
--- a/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLDocumentationTranslator.java
+++ b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLDocumentationTranslator.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 ChartDSLDocumentationTranslator 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.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLUiModule.java b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLUiModule.java
index 6724db0..62a57d0 100644
--- a/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLUiModule.java
+++ b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/ChartDSLUiModule.java
@@ -11,41 +11,69 @@
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
  */
- package org.eclipse.osbp.xtext.chart.ui;
+package org.eclipse.osbp.xtext.chart.ui;
 
+import org.eclipse.osbp.xtext.basic.ui.BasicDSLUiModuleHelper;
+import org.eclipse.osbp.xtext.oxtype.imports.IUnresolvedEObjectResolver;
+import org.eclipse.osbp.xtext.oxtype.ui.contentassist.OXTypeReplacingAppendable;
+import org.eclipse.osbp.xtext.oxtype.ui.contentassist.OXtypeProposalProvider;
+import org.eclipse.osbp.xtext.oxtype.ui.imports.InteractiveUnresolvedEClassResolver;
+import org.eclipse.osbp.xtext.oxtype.ui.quickfix.CustomJavaTypeQuickfixes;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.ui.editor.contentassist.AbstractJavaBasedContentProposalProvider;
 import org.eclipse.xtext.ui.editor.hover.IEObjectHover;
 import org.eclipse.xtext.ui.editor.hover.IEObjectHoverProvider;
 import org.eclipse.xtext.ui.editor.hover.html.IEObjectHoverDocumentationProvider;
+import org.eclipse.xtext.xbase.ui.contentassist.ReplacingAppendable;
+import org.eclipse.xtext.xbase.ui.quickfix.JavaTypeQuickfixes;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.eclipse.osbp.xtext.basic.ui.BasicDSLUiModuleHelper;
-
 /**
  * Use this class to register components to be used within the IDE.
  */
-public class ChartDSLUiModule extends org.eclipse.osbp.xtext.chart.ui.AbstractChartDSLUiModule {
-	
-	private static Logger LOGGER = LoggerFactory.getLogger(ChartDSLUiModule.class);
-	
+public class ChartDSLUiModule extends
+		org.eclipse.osbp.xtext.chart.ui.AbstractChartDSLUiModule {
+
+	private static Logger LOGGER = LoggerFactory
+			.getLogger(ChartDSLUiModule.class);
+
 	public ChartDSLUiModule(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 ChartDSLEObjectHover.class;
+		return ChartDSLEObjectHover.class;
 	}
-	
+
 	@Override
 	public Class<? extends IEObjectHoverProvider> bindIEObjectHoverProvider() {
-	    return ChartDSLEObjectHoverProvider.class;
+		return ChartDSLEObjectHoverProvider.class;
 	}
-	
+
 	@Override
 	public Class<? extends IEObjectHoverDocumentationProvider> bindIEObjectHoverDocumentationProvider() {
-	     return ChartDSLEObjectHoverDocumentationProvider.class;
+		return ChartDSLEObjectHoverDocumentationProvider.class;
 	}
+
+	@SuppressWarnings("restriction")
+	public Class<? extends ReplacingAppendable.Factory> bindReplacingAppendable$Factory() {
+		return OXTypeReplacingAppendable.Factory.class;
+	}
+
+	public Class<? extends IUnresolvedEObjectResolver> bindIUnresolvedEObjectResolver() {
+		return InteractiveUnresolvedEClassResolver.class;
+	}
+
+	public Class<? extends JavaTypeQuickfixes> bindJavaTypeQuickfixes() {
+		return CustomJavaTypeQuickfixes.class;
+	}
+
 }
diff --git a/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/contentassist/ChartDSLProposalProvider.xtend b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/contentassist/ChartDSLProposalProvider.xtend
index 13b138b..e6a6b2f 100644
--- a/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/contentassist/ChartDSLProposalProvider.xtend
+++ b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/contentassist/ChartDSLProposalProvider.xtend
@@ -116,11 +116,6 @@
 		providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this)
 	}
 
-	override public void complete_ChartQualifiedNameWithWildCard(EObject model, RuleCall ruleCall,
-		ContentAssistContext context, ICompletionProposalAcceptor acceptor) {
-		providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this)
-	}
-
 	override public void completeChartAxis_Angle(EObject model, Assignment assignment, ContentAssistContext context,
 		ICompletionProposalAcceptor acceptor) {
 		var ruleCall = (assignment.getTerminal() as RuleCall)
diff --git a/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/quickfix/ChartDSLQuickfixProvider.xtend b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/quickfix/ChartDSLQuickfixProvider.xtend
index 627c129..1e5e6ec 100644
--- a/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/quickfix/ChartDSLQuickfixProvider.xtend
+++ b/org.eclipse.osbp.xtext.chart.ui/src/org/eclipse/osbp/xtext/chart/ui/quickfix/ChartDSLQuickfixProvider.xtend
@@ -14,27 +14,26 @@
  *  This copyright notice shows up in the generated Java code
  *
  */
- 
 package org.eclipse.osbp.xtext.chart.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 ChartDSLQuickfixProvider extends org.eclipse.xtext.xbase.annotations.ui.quickfix.XbaseWithAnnotationsQuickfixProvider {
-
-//	@Fix(MyDslValidator::INVALID_NAME)
-//	def capitalizeName(Issue issue, IssueResolutionAcceptor acceptor) {
-//		acceptor.accept(issue, 'Capitalize name', 'Capitalize the name.', 'upcase.png') [
-//			context |
-//			val xtextDocument = context.xtextDocument
-//			val firstLetter = xtextDocument.get(issue.offset, 1)
-//			xtextDocument.replace(issue.offset, 1, firstLetter.toUpperCase)
-//		]
-//	}
+class ChartDSLQuickfixProvider 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.chart.ui/xtend-gen/.gitignore b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/.gitignore
new file mode 100644
index 0000000..0254163
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/.gitignore
@@ -0,0 +1,5 @@
+/.ChartDSLDescriptionLabelProvider.xtendbin
+/.ChartDSLLabelProvider.xtendbin
+/.ChartDSLOutlineTreeProvider.xtendbin
+/.ChartDSLProposalProvider.xtendbin
+/.ChartDSLQuickfixProvider.xtendbin
diff --git a/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/.gitignore b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/.gitignore
new file mode 100644
index 0000000..41e9bea
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/.gitignore
@@ -0,0 +1,2 @@
+/ChartDSLProposalProvider.java
+/MyReplacementTextApplier.java
diff --git a/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/ChartDSLProposalProvider.java b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/ChartDSLProposalProvider.java
index 16f0120..353a1bb 100644
--- a/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/ChartDSLProposalProvider.java
+++ b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/ChartDSLProposalProvider.java
@@ -19,7 +19,6 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.jface.text.contentassist.ICompletionProposal;
 import org.eclipse.jface.viewers.StyledString;
-import org.eclipse.osbp.xtext.basic.ui.BasicDSLDocumentationTranslator;
 import org.eclipse.osbp.xtext.basic.ui.contentassist.BasicDSLProposalProviderHelper;
 import org.eclipse.osbp.xtext.chart.ChartAxis;
 import org.eclipse.osbp.xtext.chart.ui.ChartDSLDocumentationTranslator;
@@ -42,18 +41,21 @@
   @Inject
   private BasicDSLProposalProviderHelper providerHelper;
   
+  @Override
   protected StyledString getKeywordDisplayString(final Keyword keyword) {
-    BasicDSLDocumentationTranslator _instance = ChartDSLDocumentationTranslator.instance();
-    return BasicDSLProposalProviderHelper.getKeywordDisplayString(keyword, _instance);
+    return BasicDSLProposalProviderHelper.getKeywordDisplayString(keyword, 
+      ChartDSLDocumentationTranslator.instance());
   }
   
   /**
    * This override will enable 1 length non letter characters as keyword.
    */
+  @Override
   protected boolean isKeywordWorthyToPropose(final Keyword keyword) {
     return true;
   }
   
+  @Override
   public void completeChartSegmentColor_Rgb(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
     this.colorPickerProposal(model, assignment, context, acceptor);
   }
@@ -68,32 +70,21 @@
       pickColor.setTextApplier(applier);
     }
     acceptor.accept(pickColor);
-    ICompletionProposal _createCompletionProposal_1 = this.createCompletionProposal("\"230,128,64\" /* orange */", "orange", null, context);
-    acceptor.accept(_createCompletionProposal_1);
-    ICompletionProposal _createCompletionProposal_2 = this.createCompletionProposal("\"255,182,182\" /* light red */", "light red", null, context);
-    acceptor.accept(_createCompletionProposal_2);
-    ICompletionProposal _createCompletionProposal_3 = this.createCompletionProposal("\"255,0,0\" /* red */", "red", null, context);
-    acceptor.accept(_createCompletionProposal_3);
-    ICompletionProposal _createCompletionProposal_4 = this.createCompletionProposal("\"204,102,102\" /* dark red */", "dark red", null, context);
-    acceptor.accept(_createCompletionProposal_4);
-    ICompletionProposal _createCompletionProposal_5 = this.createCompletionProposal("\"255,255,128\" /*light yellow */", "light yellow", null, context);
-    acceptor.accept(_createCompletionProposal_5);
-    ICompletionProposal _createCompletionProposal_6 = this.createCompletionProposal("\"255,255,0\" /* yellow */", "yellow", null, context);
-    acceptor.accept(_createCompletionProposal_6);
-    ICompletionProposal _createCompletionProposal_7 = this.createCompletionProposal("\"128,128,0\" /* dark yellow */", "dark yellow", null, context);
-    acceptor.accept(_createCompletionProposal_7);
-    ICompletionProposal _createCompletionProposal_8 = this.createCompletionProposal("\"102,204,102\" /* light green */", "light green", null, context);
-    acceptor.accept(_createCompletionProposal_8);
-    ICompletionProposal _createCompletionProposal_9 = this.createCompletionProposal("\"0,255,0\" /* green */", "green", null, context);
-    acceptor.accept(_createCompletionProposal_9);
-    ICompletionProposal _createCompletionProposal_10 = this.createCompletionProposal("\"147,183,95\" /* dark green */", "dark green", null, context);
-    acceptor.accept(_createCompletionProposal_10);
-    ICompletionProposal _createCompletionProposal_11 = this.createCompletionProposal("\"0,0,0\" /* black */", "black", null, context);
-    acceptor.accept(_createCompletionProposal_11);
-    ICompletionProposal _createCompletionProposal_12 = this.createCompletionProposal("\"255,255,255\" /* white */", "white", null, context);
-    acceptor.accept(_createCompletionProposal_12);
+    acceptor.accept(this.createCompletionProposal("\"230,128,64\" /* orange */", "orange", null, context));
+    acceptor.accept(this.createCompletionProposal("\"255,182,182\" /* light red */", "light red", null, context));
+    acceptor.accept(this.createCompletionProposal("\"255,0,0\" /* red */", "red", null, context));
+    acceptor.accept(this.createCompletionProposal("\"204,102,102\" /* dark red */", "dark red", null, context));
+    acceptor.accept(this.createCompletionProposal("\"255,255,128\" /*light yellow */", "light yellow", null, context));
+    acceptor.accept(this.createCompletionProposal("\"255,255,0\" /* yellow */", "yellow", null, context));
+    acceptor.accept(this.createCompletionProposal("\"128,128,0\" /* dark yellow */", "dark yellow", null, context));
+    acceptor.accept(this.createCompletionProposal("\"102,204,102\" /* light green */", "light green", null, context));
+    acceptor.accept(this.createCompletionProposal("\"0,255,0\" /* green */", "green", null, context));
+    acceptor.accept(this.createCompletionProposal("\"147,183,95\" /* dark green */", "dark green", null, context));
+    acceptor.accept(this.createCompletionProposal("\"0,0,0\" /* black */", "black", null, context));
+    acceptor.accept(this.createCompletionProposal("\"255,255,255\" /* white */", "white", null, context));
   }
   
+  @Override
   protected boolean isValidProposal(final String proposal, final String prefix, final ContentAssistContext context) {
     boolean result = super.isValidProposal(proposal, prefix, context);
     EObject _currentModel = context.getCurrentModel();
@@ -103,14 +94,12 @@
     return result;
   }
   
+  @Override
   public void complete_QualifiedName(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
     this.providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this);
   }
   
-  public void complete_ChartQualifiedNameWithWildCard(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
-    this.providerHelper.complete_PackageName(model, ruleCall, context, acceptor, this);
-  }
-  
+  @Override
   public void completeChartAxis_Angle(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
     AbstractElement _terminal = assignment.getTerminal();
     RuleCall ruleCall = ((RuleCall) _terminal);
@@ -118,28 +107,34 @@
     this.providerHelper.createIntProposal(context, acceptor, ruleCall, feature, 0, "value between -360 and 360", this);
   }
   
+  @Override
   public void completeChartBubble_MultiplierValue(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
     AbstractElement _terminal = assignment.getTerminal();
     this.providerHelper.createNumberProposal(context, acceptor, ((RuleCall) _terminal), this);
   }
   
+  @Override
   public void completeChartNumberInterval_NumberIntervalValue(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
     AbstractElement _terminal = assignment.getTerminal();
     this.provider.complete_INT(model, ((RuleCall) _terminal), context, acceptor);
   }
   
+  @Override
   public void complete_INT(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
     this.provider.complete_INT(model, ruleCall, context, acceptor);
   }
   
+  @Override
   public void complete_ID(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
     this.provider.complete_ID(model, ruleCall, context, acceptor);
   }
   
+  @Override
   public void complete_TRANSLATABLESTRING(final EObject model, final RuleCall ruleCall, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
     this.provider.complete_STRING(model, ruleCall, context, acceptor);
   }
   
+  @Override
   public void completeChartGauge_LabelValue(final EObject model, final Assignment assignment, final ContentAssistContext context, final ICompletionProposalAcceptor acceptor) {
     AbstractElement _terminal = assignment.getTerminal();
     this.provider.complete_STRING(model, ((RuleCall) _terminal), context, acceptor);
diff --git a/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/MyReplacementTextApplier.java b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/MyReplacementTextApplier.java
index 109359a..c61dcd8 100644
--- a/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/MyReplacementTextApplier.java
+++ b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/contentassist/MyReplacementTextApplier.java
@@ -14,8 +14,6 @@
  */
 package org.eclipse.osbp.xtext.chart.ui.contentassist;
 
-import org.eclipse.jface.text.ITextViewer;
-import org.eclipse.swt.custom.StyledText;
 import org.eclipse.swt.graphics.RGB;
 import org.eclipse.swt.widgets.ColorDialog;
 import org.eclipse.swt.widgets.Display;
@@ -32,21 +30,13 @@
     return this.context = context;
   }
   
+  @Override
   public String getActualReplacementString(final ConfigurableCompletionProposal proposal) {
-    ITextViewer _viewer = this.context.getViewer();
-    StyledText _textWidget = _viewer.getTextWidget();
-    Display display = _textWidget.getDisplay();
+    Display display = this.context.getViewer().getTextWidget().getDisplay();
     Shell _activeShell = display.getActiveShell();
     ColorDialog colorDialog = new ColorDialog(_activeShell);
     RGB newColor = colorDialog.open();
-    String _string = Integer.valueOf(newColor.red).toString();
-    String _concat = "\"".concat(_string);
-    String _concat_1 = _concat.concat(",");
-    String _string_1 = Integer.valueOf(newColor.green).toString();
-    String _concat_2 = _concat_1.concat(_string_1);
-    String _concat_3 = _concat_2.concat(",");
-    String _string_2 = Integer.valueOf(newColor.blue).toString();
-    String _concat_4 = _concat_3.concat(_string_2);
-    return _concat_4.concat("\"");
+    return "\"".concat(Integer.valueOf(newColor.red).toString()).concat(",").concat(Integer.valueOf(newColor.green).toString()).concat(",").concat(
+      Integer.valueOf(newColor.blue).toString()).concat("\"");
   }
 }
diff --git a/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/labeling/.gitignore b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/labeling/.gitignore
new file mode 100644
index 0000000..1ee2759
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/labeling/.gitignore
@@ -0,0 +1,2 @@
+/ChartDSLDescriptionLabelProvider.java
+/ChartDSLLabelProvider.java
diff --git a/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/labeling/ChartDSLLabelProvider.java b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/labeling/ChartDSLLabelProvider.java
index 950fd3d..290e075 100644
--- a/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/labeling/ChartDSLLabelProvider.java
+++ b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/labeling/ChartDSLLabelProvider.java
@@ -34,7 +34,6 @@
 import org.eclipse.osbp.xtext.chart.ChartRangeElement;
 import org.eclipse.osbp.xtext.chart.ChartSegmentColor;
 import org.eclipse.osbp.xtext.chart.ChartTree;
-import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
 
 /**
  * Provides labels for a EObjects.
@@ -48,15 +47,13 @@
     super(delegate);
   }
   
+  @Override
   public Object text(final Object o) {
     Object _switchResult = null;
     boolean _matched = false;
-    if (!_matched) {
-      if (o instanceof Chart) {
-        _matched=true;
-        String _name = ((Chart) o).getName();
-        _switchResult = this.generateText(o, "chart", _name);
-      }
+    if (o instanceof Chart) {
+      _matched=true;
+      _switchResult = this.generateText(o, "chart", ((Chart) o).getName());
     }
     if (!_matched) {
       if (o instanceof ChartBar) {
@@ -109,9 +106,7 @@
     if (!_matched) {
       if (o instanceof ChartSegmentColor) {
         _matched=true;
-        String _rgb = ((ChartSegmentColor) o).getRgb();
-        String _format = String.format("RGB(%s)", _rgb);
-        _switchResult = this.generateText(o, "segment color", _format);
+        _switchResult = this.generateText(o, "segment color", String.format("RGB(%s)", ((ChartSegmentColor) o).getRgb()));
       }
     }
     if (!_matched) {
@@ -123,9 +118,7 @@
     if (!_matched) {
       if (o instanceof ChartDatamart) {
         _matched=true;
-        DatamartDefinition _datamartRef = ((ChartDatamart) o).getDatamartRef();
-        String _name = _datamartRef.getName();
-        _switchResult = this.generateText(o, "datamart", _name);
+        _switchResult = this.generateText(o, "datamart", ((ChartDatamart) o).getDatamartRef().getName());
       }
     }
     if (!_matched) {
@@ -152,77 +145,66 @@
     return _switchResult;
   }
   
+  @Override
   public Object image(final Object o) {
     Object _switchResult = null;
     boolean _matched = false;
-    if (!_matched) {
-      if (o instanceof ChartModel) {
-        _matched=true;
-        Class<? extends BasicDSLLabelProvider> _class = super.getClass();
-        _switchResult = this.getInternalImage("model.png", _class);
-      }
+    if (o instanceof ChartModel) {
+      _matched=true;
+      _switchResult = this.getInternalImage("model.png", super.getClass());
     }
     if (!_matched) {
       if (o instanceof Chart) {
         _matched=true;
-        Class<? extends ChartDSLLabelProvider> _class = this.getClass();
-        _switchResult = this.getInternalImage("dsl_chart.png", _class);
+        _switchResult = this.getInternalImage("dsl_chart.png", this.getClass());
       }
     }
     if (!_matched) {
       if (o instanceof ChartSegmentColor) {
         _matched=true;
-        String _rgb = ((ChartSegmentColor) o).getRgb();
-        _switchResult = this.getColorOutlineImage(_rgb, true);
+        _switchResult = this.getColorOutlineImage(((ChartSegmentColor) o).getRgb(), true);
       }
     }
     if (!_matched) {
       if (o instanceof ChartOption) {
         _matched=true;
-        Class<? extends ChartDSLLabelProvider> _class = this.getClass();
-        _switchResult = this.getInternalImage("dsl_option.png", _class);
+        _switchResult = this.getInternalImage("dsl_option.png", this.getClass());
       }
     }
     if (!_matched) {
       if (o instanceof ChartInterval) {
         _matched=true;
-        Class<? extends ChartDSLLabelProvider> _class = this.getClass();
-        _switchResult = this.getInternalImage("chart_interval.png", _class);
+        _switchResult = this.getInternalImage("chart_interval.png", this.getClass());
       }
     }
     if (!_matched) {
       if (o instanceof ChartRangeElement) {
         _matched=true;
-        Class<? extends ChartDSLLabelProvider> _class = this.getClass();
-        _switchResult = this.getInternalImage("dsl_range.png", _class);
+        _switchResult = this.getInternalImage("dsl_range.png", this.getClass());
       }
     }
     if (!_matched) {
       if (o instanceof ChartDatamart) {
         _matched=true;
-        Class<? extends ChartDSLLabelProvider> _class = this.getClass();
-        _switchResult = this.getInternalImage("dsl_datamart.png", _class);
+        _switchResult = this.getInternalImage("dsl_datamart.png", this.getClass());
       }
     }
     if (!_matched) {
       if (o instanceof ChartAxis) {
         _matched=true;
-        Class<? extends ChartDSLLabelProvider> _class = this.getClass();
-        _switchResult = this.getInternalImage("chart_axis.png", _class);
+        _switchResult = this.getInternalImage("chart_axis.png", this.getClass());
       }
     }
     if (!_matched) {
       if (o instanceof ChartLegend) {
         _matched=true;
-        Class<? extends ChartDSLLabelProvider> _class = this.getClass();
-        _switchResult = this.getInternalImage("chart_legend.png", _class);
+        _switchResult = this.getInternalImage("chart_legend.png", this.getClass());
       }
     }
     if (!_matched) {
       if (o instanceof ChartHighlighter) {
         _matched=true;
-        Class<? extends ChartDSLLabelProvider> _class = this.getClass();
-        _switchResult = this.getInternalImage("chart_tooltip.png", _class);
+        _switchResult = this.getInternalImage("chart_tooltip.png", this.getClass());
       }
     }
     if (!_matched) {
diff --git a/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/outline/.gitignore b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/outline/.gitignore
new file mode 100644
index 0000000..9802693
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/outline/.gitignore
@@ -0,0 +1 @@
+/ChartDSLOutlineTreeProvider.java
diff --git a/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/quickfix/.gitignore b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/quickfix/.gitignore
new file mode 100644
index 0000000..e1da51e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/quickfix/.gitignore
@@ -0,0 +1 @@
+/ChartDSLQuickfixProvider.java
diff --git a/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/quickfix/ChartDSLQuickfixProvider.java b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/quickfix/ChartDSLQuickfixProvider.java
index 9121f0c..d9a136d 100644
--- a/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/quickfix/ChartDSLQuickfixProvider.java
+++ b/org.eclipse.osbp.xtext.chart.ui/xtend-gen/org/eclipse/osbp/xtext/chart/ui/quickfix/ChartDSLQuickfixProvider.java
@@ -14,7 +14,7 @@
  */
 package org.eclipse.osbp.xtext.chart.ui.quickfix;
 
-import org.eclipse.xtext.xbase.annotations.ui.quickfix.XbaseWithAnnotationsQuickfixProvider;
+import org.eclipse.osbp.xtext.oxtype.ui.quickfix.OXtypeQuickfixProvider;
 
 /**
  * Custom quickfixes.
@@ -22,5 +22,5 @@
  * see http://www.eclipse.org/Xtext/documentation.html#quickfixes
  */
 @SuppressWarnings("all")
-public class ChartDSLQuickfixProvider extends XbaseWithAnnotationsQuickfixProvider {
+public class ChartDSLQuickfixProvider extends OXtypeQuickfixProvider {
 }
diff --git a/org.eclipse.osbp.xtext.chart/.classpath b/org.eclipse.osbp.xtext.chart/.classpath
new file mode 100644
index 0000000..f279e60
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/.classpath
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="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.chart/.gitignore b/org.eclipse.osbp.xtext.chart/.gitignore
new file mode 100644
index 0000000..1850fd1
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/.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.chart/.settings/com.vaadin.integration.eclipse.prefs b/org.eclipse.osbp.xtext.chart/.settings/com.vaadin.integration.eclipse.prefs
new file mode 100644
index 0000000..724dece
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/.settings/com.vaadin.integration.eclipse.prefs
@@ -0,0 +1,3 @@
+com.vaadin.integration.eclipse.mavenLatestVersionsUpgrade=["7.7.7"]
+com.vaadin.integration.eclipse.previousCompileAction=widgetset
+eclipse.preferences.version=1
diff --git a/org.eclipse.osbp.xtext.chart/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.xtext.chart/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..99f26c0
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/.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.chart/.settings/org.eclipse.emf.ecore.xcore.Xcore.prefs b/org.eclipse.osbp.xtext.chart/.settings/org.eclipse.emf.ecore.xcore.Xcore.prefs
new file mode 100644
index 0000000..5e53854
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/.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.chart/.settings/org.eclipse.jdt.core.prefs b/org.eclipse.osbp.xtext.chart/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/.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.chart/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.xtext.chart/.settings/org.eclipse.m2e.core.prefs
new file mode 100644
index 0000000..f897a7f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/.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.chart/.settings/org.eclipse.xtend.core.Xtend.prefs b/org.eclipse.osbp.xtext.chart/.settings/org.eclipse.xtend.core.Xtend.prefs
new file mode 100644
index 0000000..19e3115
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/.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.chart/META-INF/MANIFEST.MF b/org.eclipse.osbp.xtext.chart/META-INF/MANIFEST.MF
index 5acd909..6ec5b03 100644
--- a/org.eclipse.osbp.xtext.chart/META-INF/MANIFEST.MF
+++ b/org.eclipse.osbp.xtext.chart/META-INF/MANIFEST.MF
@@ -2,7 +2,6 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: org.eclipse.osbp.xtext.chart
 Bundle-Vendor: Eclipse OSBP
- Germany)
 Bundle-Localization: plugin
 Bundle-Version: 0.9.0.qualifier
 Bundle-ClassPath: .
@@ -10,28 +9,28 @@
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.slf4j.api;bundle-version="1.7.2",
  org.apache.xerces;bundle-version="2.9.0",
- org.eclipse.xtext;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.generator;bundle-version="[2.7.3,2.8.0)";resolution:=optional,
+ org.eclipse.xtext;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.generator;bundle-version="[2.11.0,2.12.0)";resolution:=optional,
  org.apache.commons.logging;bundle-version="1.0.4",
  org.eclipse.osgi.services;bundle-version="3.4.0",
  org.eclipse.emf.codegen.ecore,
  org.eclipse.emf.mwe.utils,
- org.eclipse.xtext.util;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.util;bundle-version="[2.11.0,2.12.0)",
  org.eclipse.core.runtime,
  org.eclipse.emf.ecore;visibility:=reexport,
  org.eclipse.emf.common,
- org.eclipse.emf.mwe2.launch;resolution:=optional,
+ org.eclipse.emf.mwe2.launch;bundle-version="[2.9.0,2.10.0)";resolution:=optional,
  org.antlr.runtime,
- org.eclipse.xtext.common.types;bundle-version="[2.7.3,2.8.0)";visibility:=reexport,
- org.eclipse.osbp.xtext.authorizationdsl;visibility:=reexport,
- org.eclipse.xtext.xbase.lib;bundle-version="[2.7.3,2.8.0)",
+ org.eclipse.xtext.common.types;bundle-version="[2.11.0,2.12.0)";visibility:=reexport,
+ org.eclipse.osbp.xtext.authorizationdsl;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.osbp.dsl.dto.xtext;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
+ org.eclipse.xtext.xbase.lib;bundle-version="[2.11.0,2.12.0)",
  org.eclipse.emf.ecore.xcore.lib,
  org.eclipse.bpmn2;visibility:=reexport,
- org.eclipse.osbp.dsl.dto.xtext;visibility:=reexport,
- com.vaadin.shared;bundle-version="[7.5.7,7.7.0)",
- com.vaadin.client;bundle-version="[7.5.7,7.7.0)",
- com.vaadin.server;bundle-version="[7.5.7,7.7.0)",
+ com.vaadin.shared;bundle-version="[7.7.6,7.8.0)",
+ com.vaadin.client;bundle-version="[7.7.6,7.8.0)",
+ com.vaadin.server;bundle-version="[7.7.6,7.8.0)",
  refresher.osgi;bundle-version="[1.2.3.7,1.2.4)",
  org.eclipse.e4.core.contexts,
  org.eclipse.e4.ui.model.workbench,
@@ -40,23 +39,20 @@
  org.eclipse.emf.ecore.xcore,
  org.objectweb.asm;bundle-version="[5.0.1,6.0.0)",
  dCharts.osgi;bundle-version="1.7.0",
- org.eclipse.core.databinding,
+ org.eclipse.core.databinding;bundle-version="[1.6.0,1.7.0)",
  org.eclipse.e4.core.di;bundle-version="1.4.0",
  org.eclipse.e4.core.di.extensions;bundle-version="0.12.0",
- org.eclipse.core.databinding.beans,
+ org.eclipse.core.databinding.beans;bundle-version="[1.3.100,1.4.0)",
  org.eclipse.osbp.dsl.entity.xtext;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
  org.eclipse.osbp.runtime.common;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.runtime.web.vaadin.databinding;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.dsl.common.xtext;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
- org.eclipse.osbp.xtext.functionlibrarydsl;visibility:=reexport,
- 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.utils;bundle-version="[0.9.0,0.10.0)",
+ org.eclipse.osbp.xtext.functionlibrarydsl;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
  org.eclipse.osbp.osgi.hybrid.api;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.utils.ui;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.i18n;bundle-version="[0.9.0,0.10.0)",
  org.eclipse.osbp.xtext.datamartdsl;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
- org.eclipse.osbp.xtext.blip;visibility:=reexport,
+ org.eclipse.osbp.xtext.blip;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
  org.eclipse.osbp.xtext.cubedsl;bundle-version="[0.9.0,0.10.0)";visibility:=reexport,
  org.eclipse.osbp.dsl.mwe;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
  org.eclipse.osbp.xtext.basic;bundle-version="[0.9.0,0.10.0)";resolution:=optional,
@@ -67,27 +63,35 @@
  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)"
-Import-Package: javax.validation,
+ 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,
+ mondrian.osgi;bundle-version="3.5.0",
+ org.jsoup;bundle-version="1.8.3"
+Import-Package: com.vaadin.ui,
+ javax.validation,
  javax.validation.constraints,
  org.apache.log4j,
  org.eclipse.e4.core.di.extensions,
+ org.eclipse.e4.ui.di,
  org.eclipse.osbp.ui.api.datamart;version="0.9.0",
+ org.eclipse.osbp.ui.api.e4;version="0.9.0",
  org.eclipse.osbp.ui.api.layout;version="0.9.0",
  org.eclipse.osbp.ui.api.metadata;version="0.9.0",
+ org.eclipse.osbp.ui.api.themes;version="0.9.0",
  org.eclipse.osbp.ui.api.user;version="0.9.0",
  org.osgi.service.event
 Bundle-RequiredExecutionEnvironment: JavaSE-1.8
 Export-Package: org.eclipse.osbp.xtext.chart;version="0.9.0",
- org.eclipse.osbp.xtext.chart.impl;version="0.9.0",
- org.eclipse.osbp.xtext.chart.util;version="0.9.0",
  org.eclipse.osbp.xtext.chart.formatting;version="0.9.0",
+ org.eclipse.osbp.xtext.chart.impl;version="0.9.0",
  org.eclipse.osbp.xtext.chart.jvmmodel;version="0.9.0",
  org.eclipse.osbp.xtext.chart.parser.antlr;version="0.9.0",
  org.eclipse.osbp.xtext.chart.parser.antlr.internal;version="0.9.0",
  org.eclipse.osbp.xtext.chart.scoping;version="0.9.0",
  org.eclipse.osbp.xtext.chart.serializer;version="0.9.0",
  org.eclipse.osbp.xtext.chart.services;version="0.9.0",
+ org.eclipse.osbp.xtext.chart.util;version="0.9.0",
  org.eclipse.osbp.xtext.chart.validation;version="0.9.0",
  org.eclipse.osbp.xtext.chart.valueconverter;version="0.9.0"
 Bundle-Activator: org.eclipse.osbp.xtext.chart.Activator
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/Chart.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/Chart.java
index 8db6a66..a015f4a 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/Chart.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/Chart.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -21,7 +21,9 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.Chart#isSelectById <em>Select By Id</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.Chart#isDescription <em>Description</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.Chart#getDescriptionValue <em>Description Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.Chart#isPolling <em>Polling</em>}</li>
@@ -29,7 +31,6 @@
  *   <li>{@link org.eclipse.osbp.xtext.chart.Chart#getCharttype <em>Charttype</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.Chart#getSource <em>Source</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChart()
  * @model
@@ -37,6 +38,32 @@
  */
 public interface Chart extends ChartBase {
 	/**
+	 * Returns the value of the '<em><b>Select By Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Select By Id</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Select By Id</em>' attribute.
+	 * @see #setSelectById(boolean)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChart_SelectById()
+	 * @model unique="false"
+	 * @generated
+	 */
+	boolean isSelectById();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.Chart#isSelectById <em>Select By Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Select By Id</em>' attribute.
+	 * @see #isSelectById()
+	 * @generated
+	 */
+	void setSelectById(boolean value);
+
+	/**
 	 * Returns the value of the '<em><b>Description</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <p>
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartAxis.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartAxis.java
index ec7a0a2..1812c5e 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartAxis.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartAxis.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -22,13 +22,13 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartAxis#getAxis <em>Axis</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartAxis#getRenderType <em>Render Type</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartAxis#isShortLabel <em>Short Label</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartAxis#getAngle <em>Angle</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartAxis()
  * @model
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBar.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBar.java
index 66b8732..d0e5ccb 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBar.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBar.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -21,13 +21,13 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartBar#isShadow <em>Shadow</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartBar#isAnimated <em>Animated</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartBar#isSwapped <em>Swapped</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartBar#isStacked <em>Stacked</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartBar()
  * @model
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBase.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBase.java
index f26a8ff..d1c7bb2 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBase.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBase.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -21,10 +21,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartBase#getName <em>Name</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartBase()
  * @model
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBubble.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBubble.java
index ffbd2c7..47d03a8 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBubble.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartBubble.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -21,13 +21,13 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartBubble#isMultiplier <em>Multiplier</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartBubble#getMultiplierValue <em>Multiplier Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartBubble#isGradient <em>Gradient</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartBubble#isTransparent <em>Transparent</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartBubble()
  * @model
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDSLFactory.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDSLFactory.java
index bff1514..87e4ab1 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDSLFactory.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDSLFactory.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDSLPackage.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDSLPackage.java
index f85d3cc..809420e 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDSLPackage.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDSLPackage.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -37,7 +37,7 @@
  * <!-- end-user-doc -->
  * @see org.eclipse.osbp.xtext.chart.ChartDSLFactory
  * @model kind="package"
- *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='chart' modelName='ChartDSL' prefix='ChartDSL' 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\tChristophe Loetz (Loetz GmbH&Co.KG) - Initial implementation \r\n ' basePackage='org.eclipse.osbp.xtext'"
+ *        annotation="http://www.eclipse.org/emf/2002/GenModel fileExtensions='chart' modelName='ChartDSL' prefix='ChartDSL' loadInitialization='false' literalsInterface='true' copyrightText='Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)\r\n All rights reserved. This program and the accompanying materials \r\n are made available under the terms of the Eclipse Public License v1.0 \r\n which accompanies this distribution, and is available at \r\n http://www.eclipse.org/legal/epl-v10.html \r\n\r\n Based on ideas from Xtext, Xtend, Xcore\r\n  \r\n Contributors:  \r\n \t\tJoerg Riegel - Initial implementation \r\n ' basePackage='org.eclipse.osbp.xtext'"
  *        annotation="http://www.eclipse.org/emf/2002/Ecore rootPackage='chartdsl'"
  * @generated
  */
@@ -85,13 +85,22 @@
 	int CHART_MODEL = 0;
 
 	/**
+	 * The feature id for the '<em><b>Import Section</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART_MODEL__IMPORT_SECTION = 0;
+
+	/**
 	 * The feature id for the '<em><b>Packages</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int CHART_MODEL__PACKAGES = 0;
+	int CHART_MODEL__PACKAGES = 1;
 
 	/**
 	 * The number of structural features of the '<em>Chart Model</em>' class.
@@ -100,7 +109,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CHART_MODEL_FEATURE_COUNT = 1;
+	int CHART_MODEL_FEATURE_COUNT = 2;
 
 	/**
 	 * The number of operations of the '<em>Chart Model</em>' class.
@@ -214,15 +223,6 @@
 	int CHART_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 CHART_PACKAGE__IMPORTS = OSBPTypesPackage.LPACKAGE__IMPORTS;
-
-	/**
 	 * The feature id for the '<em><b>Charts</b></em>' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -247,7 +247,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CHART_PACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT = OSBPTypesPackage.LPACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT;
+	int CHART_PACKAGE___ERESOLVE_PROXY__OBJECT = OSBPTypesPackage.LPACKAGE___ERESOLVE_PROXY__INTERNALEOBJECT;
 
 	/**
 	 * The number of operations of the '<em>Chart Package</em>' class.
@@ -278,13 +278,22 @@
 	int CHART__NAME = CHART_BASE__NAME;
 
 	/**
+	 * The feature id for the '<em><b>Select By Id</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CHART__SELECT_BY_ID = CHART_BASE_FEATURE_COUNT + 0;
+
+	/**
 	 * The feature id for the '<em><b>Description</b></em>' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @generated
 	 * @ordered
 	 */
-	int CHART__DESCRIPTION = CHART_BASE_FEATURE_COUNT + 0;
+	int CHART__DESCRIPTION = CHART_BASE_FEATURE_COUNT + 1;
 
 	/**
 	 * The feature id for the '<em><b>Description Value</b></em>' attribute.
@@ -293,7 +302,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CHART__DESCRIPTION_VALUE = CHART_BASE_FEATURE_COUNT + 1;
+	int CHART__DESCRIPTION_VALUE = CHART_BASE_FEATURE_COUNT + 2;
 
 	/**
 	 * The feature id for the '<em><b>Polling</b></em>' attribute.
@@ -302,7 +311,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CHART__POLLING = CHART_BASE_FEATURE_COUNT + 2;
+	int CHART__POLLING = CHART_BASE_FEATURE_COUNT + 3;
 
 	/**
 	 * The feature id for the '<em><b>Polling Time</b></em>' attribute.
@@ -311,7 +320,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CHART__POLLING_TIME = CHART_BASE_FEATURE_COUNT + 3;
+	int CHART__POLLING_TIME = CHART_BASE_FEATURE_COUNT + 4;
 
 	/**
 	 * The feature id for the '<em><b>Charttype</b></em>' containment reference.
@@ -320,7 +329,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CHART__CHARTTYPE = CHART_BASE_FEATURE_COUNT + 4;
+	int CHART__CHARTTYPE = CHART_BASE_FEATURE_COUNT + 5;
 
 	/**
 	 * The feature id for the '<em><b>Source</b></em>' containment reference.
@@ -329,7 +338,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CHART__SOURCE = CHART_BASE_FEATURE_COUNT + 5;
+	int CHART__SOURCE = CHART_BASE_FEATURE_COUNT + 6;
 
 	/**
 	 * The number of structural features of the '<em>Chart</em>' class.
@@ -338,7 +347,7 @@
 	 * @generated
 	 * @ordered
 	 */
-	int CHART_FEATURE_COUNT = CHART_BASE_FEATURE_COUNT + 6;
+	int CHART_FEATURE_COUNT = CHART_BASE_FEATURE_COUNT + 7;
 
 	/**
 	 * The operation id for the '<em>EResolve Proxy</em>' operation.
@@ -1427,6 +1436,17 @@
 	EClass getChartModel();
 
 	/**
+	 * Returns the meta object for the containment reference '{@link org.eclipse.osbp.xtext.chart.ChartModel#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.chart.ChartModel#getImportSection()
+	 * @see #getChartModel()
+	 * @generated
+	 */
+	EReference getChartModel_ImportSection();
+
+	/**
 	 * Returns the meta object for the containment reference list '{@link org.eclipse.osbp.xtext.chart.ChartModel#getPackages <em>Packages</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -1510,6 +1530,17 @@
 	EClass getChart();
 
 	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.Chart#isSelectById <em>Select By Id</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Select By Id</em>'.
+	 * @see org.eclipse.osbp.xtext.chart.Chart#isSelectById()
+	 * @see #getChart()
+	 * @generated
+	 */
+	EAttribute getChart_SelectById();
+
+	/**
 	 * Returns the meta object for the attribute '{@link org.eclipse.osbp.xtext.chart.Chart#isDescription <em>Description</em>}'.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -2292,6 +2323,14 @@
 		EClass CHART_MODEL = eINSTANCE.getChartModel();
 
 		/**
+		 * The meta object literal for the '<em><b>Import Section</b></em>' containment reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference CHART_MODEL__IMPORT_SECTION = eINSTANCE.getChartModel_ImportSection();
+
+		/**
 		 * The meta object literal for the '<em><b>Packages</b></em>' containment reference list feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
@@ -2364,6 +2403,14 @@
 		EClass CHART = eINSTANCE.getChart();
 
 		/**
+		 * The meta object literal for the '<em><b>Select By Id</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CHART__SELECT_BY_ID = eINSTANCE.getChart_SelectById();
+
+		/**
 		 * The meta object literal for the '<em><b>Description</b></em>' attribute feature.
 		 * <!-- begin-user-doc -->
 		 * <!-- end-user-doc -->
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDatamart.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDatamart.java
index 46a6133..a119427 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDatamart.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDatamart.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -24,11 +24,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartDatamart#getDatamartRef <em>Datamart Ref</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartDatamart#getElements <em>Elements</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartDatamart()
  * @model
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDonut.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDonut.java
index 3ebcb09..31ccf03 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDonut.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartDonut.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartElement.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartElement.java
index 2875fdc..fbbb771 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartElement.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartElement.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartGauge.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartGauge.java
index aa15119..51466db 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartGauge.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartGauge.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -22,6 +22,7 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartGauge#isLabeled <em>Labeled</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartGauge#getLabelValue <em>Label Value</em>}</li>
@@ -31,7 +32,6 @@
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartGauge#isHasIntervals <em>Has Intervals</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartGauge#getIntervals <em>Intervals</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartGauge()
  * @model
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartHighlighter.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartHighlighter.java
index d927117..3271bf7 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartHighlighter.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartHighlighter.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -21,12 +21,12 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartHighlighter#getLocation <em>Location</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartHighlighter#isTooltipAlways <em>Tooltip Always</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartHighlighter#isInsideChart <em>Inside Chart</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartHighlighter()
  * @model
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartInterval.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartInterval.java
index 56018f7..319f0d5 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartInterval.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartInterval.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLazyResolver.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLazyResolver.java
index 5ac2f90..113b293 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLazyResolver.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLazyResolver.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -31,7 +31,7 @@
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
 	 * @model unique="false" proxyDataType="org.eclipse.osbp.xtext.chart.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.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLegend.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLegend.java
index 2935476..33f8809 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLegend.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLegend.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -21,13 +21,13 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartLegend#getPlacement <em>Placement</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartLegend#isToggle <em>Toggle</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartLegend#isReplot <em>Replot</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartLegend#getToggleType <em>Toggle Type</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartLegend()
  * @model
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLine.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLine.java
index 2b4819f..921abeb 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLine.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartLine.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -21,6 +21,7 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartLine#isAnimated <em>Animated</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartLine#isShowMarker <em>Show Marker</em>}</li>
@@ -31,7 +32,6 @@
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartLine#isFillToZero <em>Fill To Zero</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartLine#isFillArea <em>Fill Area</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartLine()
  * @model
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartModel.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartModel.java
index c4d56e9..fa17d3d 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartModel.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartModel.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -17,6 +17,8 @@
 
 import org.eclipse.emf.ecore.EObject;
 
+import org.eclipse.xtext.xtype.XImportSection;
+
 /**
  * <!-- begin-user-doc -->
  * A representation of the model object '<em><b>Chart Model</b></em>'.
@@ -24,10 +26,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.ChartModel#getImportSection <em>Import Section</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartModel#getPackages <em>Packages</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartModel()
  * @model
@@ -35,6 +38,32 @@
  */
 public interface ChartModel extends EObject {
 	/**
+	 * Returns the value of the '<em><b>Import Section</b></em>' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Import Section</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Import Section</em>' containment reference.
+	 * @see #setImportSection(XImportSection)
+	 * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartModel_ImportSection()
+	 * @model containment="true"
+	 * @generated
+	 */
+	XImportSection getImportSection();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.osbp.xtext.chart.ChartModel#getImportSection <em>Import Section</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Import Section</em>' containment reference.
+	 * @see #getImportSection()
+	 * @generated
+	 */
+	void setImportSection(XImportSection value);
+
+	/**
 	 * Returns the value of the '<em><b>Packages</b></em>' containment reference list.
 	 * The list contents are of type {@link org.eclipse.osbp.xtext.chart.ChartPackage}.
 	 * <!-- begin-user-doc -->
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartNumberInterval.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartNumberInterval.java
index b8f6c3e..a07fdbe 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartNumberInterval.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartNumberInterval.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -21,11 +21,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartNumberInterval#getNumberIntervalValue <em>Number Interval Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartNumberInterval#getNumberRange <em>Number Range</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartNumberInterval()
  * @model
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartOption.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartOption.java
index d291af9..95f82e7 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartOption.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartOption.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartPackage.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartPackage.java
index 1d42d2f..a74d8dc 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartPackage.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartPackage.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -24,10 +24,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartPackage#getCharts <em>Charts</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartPackage()
  * @model
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartPie.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartPie.java
index 36b2449..a63d72a 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartPie.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartPie.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -21,10 +21,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartPie#isEmpty <em>Empty</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartPie()
  * @model
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartRangeElement.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartRangeElement.java
index f0e6caf..9e84db9 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartRangeElement.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartRangeElement.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartSegmentColor.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartSegmentColor.java
index cf0a7f3..698bfce 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartSegmentColor.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartSegmentColor.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -21,10 +21,10 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartSegmentColor#getRgb <em>Rgb</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartSegmentColor()
  * @model
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartTree.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartTree.java
index fb49f7f..c99c1e8 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartTree.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ChartTree.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -21,11 +21,11 @@
  *
  * <p>
  * The following features are supported:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartTree#isMap <em>Map</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.ChartTree#isCollapsible <em>Collapsible</em>}</li>
  * </ul>
- * </p>
  *
  * @see org.eclipse.osbp.xtext.chart.ChartDSLPackage#getChartTree()
  * @model
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/LegendPlacementEnum.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/LegendPlacementEnum.java
index 2a67e3b..c2923a6 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/LegendPlacementEnum.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/LegendPlacementEnum.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -155,6 +155,8 @@
 	 * Returns the '<em><b>Legend Placement 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 LegendPlacementEnum get(String literal) {
@@ -171,6 +173,8 @@
 	 * Returns the '<em><b>Legend Placement 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 LegendPlacementEnum getByName(String name) {
@@ -187,6 +191,8 @@
 	 * Returns the '<em><b>Legend Placement 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 LegendPlacementEnum get(int value) {
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/RenderTypeEnum.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/RenderTypeEnum.java
index af3ab3d..1edf849 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/RenderTypeEnum.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/RenderTypeEnum.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -181,6 +181,8 @@
 	 * Returns the '<em><b>Render Type 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 RenderTypeEnum get(String literal) {
@@ -197,6 +199,8 @@
 	 * Returns the '<em><b>Render Type 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 RenderTypeEnum getByName(String name) {
@@ -213,6 +217,8 @@
 	 * Returns the '<em><b>Render Type 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 RenderTypeEnum get(int value) {
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ToggleTypeEnum.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ToggleTypeEnum.java
index ed26bdc..860a5f2 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ToggleTypeEnum.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/ToggleTypeEnum.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -129,6 +129,8 @@
 	 * Returns the '<em><b>Toggle Type 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 ToggleTypeEnum get(String literal) {
@@ -145,6 +147,8 @@
 	 * Returns the '<em><b>Toggle Type 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 ToggleTypeEnum getByName(String name) {
@@ -161,6 +165,8 @@
 	 * Returns the '<em><b>Toggle Type 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 ToggleTypeEnum get(int value) {
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/TooltipLocationEnum.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/TooltipLocationEnum.java
index b8729d6..474d3dc 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/TooltipLocationEnum.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/TooltipLocationEnum.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart;
@@ -259,6 +259,8 @@
 	 * Returns the '<em><b>Tooltip Location 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 TooltipLocationEnum get(String literal) {
@@ -275,6 +277,8 @@
 	 * Returns the '<em><b>Tooltip Location 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 TooltipLocationEnum getByName(String name) {
@@ -291,6 +295,8 @@
 	 * Returns the '<em><b>Tooltip Location 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 TooltipLocationEnum get(int value) {
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartAxisImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartAxisImpl.java
index 37863da..794cb63 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartAxisImpl.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartAxisImpl.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.impl;
@@ -32,13 +32,13 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartAxisImpl#getAxis <em>Axis</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartAxisImpl#getRenderType <em>Render Type</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartAxisImpl#isShortLabel <em>Short Label</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartAxisImpl#getAngle <em>Angle</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBarImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBarImpl.java
index 7b968c6..08ff347 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBarImpl.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBarImpl.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.impl;
@@ -28,13 +28,13 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartBarImpl#isShadow <em>Shadow</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartBarImpl#isAnimated <em>Animated</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartBarImpl#isSwapped <em>Swapped</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartBarImpl#isStacked <em>Stacked</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBaseImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBaseImpl.java
index 519c0af..d284e01 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBaseImpl.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBaseImpl.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.impl;
@@ -28,10 +28,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartBaseImpl#getName <em>Name</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBubbleImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBubbleImpl.java
index 5cdc07c..f6e1fe1 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBubbleImpl.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartBubbleImpl.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.impl;
@@ -28,13 +28,13 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartBubbleImpl#isMultiplier <em>Multiplier</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartBubbleImpl#getMultiplierValue <em>Multiplier Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartBubbleImpl#isGradient <em>Gradient</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartBubbleImpl#isTransparent <em>Transparent</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDSLFactoryImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDSLFactoryImpl.java
index 8ce67e7..44d7528 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDSLFactoryImpl.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDSLFactoryImpl.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.impl;
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDSLPackageImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDSLPackageImpl.java
index 69d13d4..818e76f 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDSLPackageImpl.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDSLPackageImpl.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.impl;
@@ -58,6 +58,8 @@
 
 import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
 
+import org.eclipse.xtext.xtype.XtypePackage;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model <b>Package</b>.
@@ -332,7 +334,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EReference getChartModel_Packages() {
+	public EReference getChartModel_ImportSection() {
 		return (EReference)chartModelEClass.getEStructuralFeatures().get(0);
 	}
 
@@ -341,6 +343,15 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EReference getChartModel_Packages() {
+		return (EReference)chartModelEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EClass getChartLazyResolver() {
 		return chartLazyResolverEClass;
 	}
@@ -404,7 +415,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getChart_Description() {
+	public EAttribute getChart_SelectById() {
 		return (EAttribute)chartEClass.getEStructuralFeatures().get(0);
 	}
 
@@ -413,7 +424,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getChart_DescriptionValue() {
+	public EAttribute getChart_Description() {
 		return (EAttribute)chartEClass.getEStructuralFeatures().get(1);
 	}
 
@@ -422,7 +433,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getChart_Polling() {
+	public EAttribute getChart_DescriptionValue() {
 		return (EAttribute)chartEClass.getEStructuralFeatures().get(2);
 	}
 
@@ -431,7 +442,7 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
-	public EAttribute getChart_PollingTime() {
+	public EAttribute getChart_Polling() {
 		return (EAttribute)chartEClass.getEStructuralFeatures().get(3);
 	}
 
@@ -440,8 +451,17 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public EAttribute getChart_PollingTime() {
+		return (EAttribute)chartEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EReference getChart_Charttype() {
-		return (EReference)chartEClass.getEStructuralFeatures().get(4);
+		return (EReference)chartEClass.getEStructuralFeatures().get(5);
 	}
 
 	/**
@@ -450,7 +470,7 @@
 	 * @generated
 	 */
 	public EReference getChart_Source() {
-		return (EReference)chartEClass.getEStructuralFeatures().get(5);
+		return (EReference)chartEClass.getEStructuralFeatures().get(6);
 	}
 
 	/**
@@ -1058,6 +1078,7 @@
 
 		// Create classes and their features
 		chartModelEClass = createEClass(CHART_MODEL);
+		createEReference(chartModelEClass, CHART_MODEL__IMPORT_SECTION);
 		createEReference(chartModelEClass, CHART_MODEL__PACKAGES);
 
 		chartLazyResolverEClass = createEClass(CHART_LAZY_RESOLVER);
@@ -1070,6 +1091,7 @@
 		createEReference(chartPackageEClass, CHART_PACKAGE__CHARTS);
 
 		chartEClass = createEClass(CHART);
+		createEAttribute(chartEClass, CHART__SELECT_BY_ID);
 		createEAttribute(chartEClass, CHART__DESCRIPTION);
 		createEAttribute(chartEClass, CHART__DESCRIPTION_VALUE);
 		createEAttribute(chartEClass, CHART__POLLING);
@@ -1187,6 +1209,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);
 		DatamartDSLPackage theDatamartDSLPackage = (DatamartDSLPackage)EPackage.Registry.INSTANCE.getEPackage(DatamartDSLPackage.eNS_URI);
@@ -1219,6 +1242,7 @@
 
 		// Initialize classes, features, and operations; add parameters
 		initEClass(chartModelEClass, ChartModel.class, "ChartModel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getChartModel_ImportSection(), theXtypePackage.getXImportSection(), null, "importSection", null, 0, 1, ChartModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEReference(getChartModel_Packages(), this.getChartPackage(), null, "packages", null, 0, -1, ChartModel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(chartLazyResolverEClass, ChartLazyResolver.class, "ChartLazyResolver", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
@@ -1233,6 +1257,7 @@
 		initEReference(getChartPackage_Charts(), this.getChart(), null, "charts", null, 0, -1, ChartPackage.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 
 		initEClass(chartEClass, Chart.class, "Chart", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getChart_SelectById(), theEcorePackage.getEBoolean(), "selectById", null, 0, 1, Chart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getChart_Description(), theEcorePackage.getEBoolean(), "description", null, 0, 1, Chart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getChart_DescriptionValue(), theEcorePackage.getEString(), "descriptionValue", null, 0, 1, Chart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
 		initEAttribute(getChart_Polling(), theEcorePackage.getEBoolean(), "polling", null, 0, 1, Chart.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDatamartImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDatamartImpl.java
index b547021..7453ffc 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDatamartImpl.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDatamartImpl.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.impl;
@@ -40,11 +40,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartDatamartImpl#getDatamartRef <em>Datamart Ref</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartDatamartImpl#getElements <em>Elements</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDonutImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDonutImpl.java
index a96c449..d4c1002 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDonutImpl.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartDonutImpl.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.impl;
@@ -22,8 +22,6 @@
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Chart Donut</b></em>'.
  * <!-- end-user-doc -->
- * <p>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartGaugeImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartGaugeImpl.java
index 043a331..1ec196f 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartGaugeImpl.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartGaugeImpl.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.impl;
@@ -38,6 +38,7 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartGaugeImpl#isLabeled <em>Labeled</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartGaugeImpl#getLabelValue <em>Label Value</em>}</li>
@@ -47,7 +48,6 @@
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartGaugeImpl#isHasIntervals <em>Has Intervals</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartGaugeImpl#getIntervals <em>Intervals</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartHighlighterImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartHighlighterImpl.java
index b095b8b..7236179 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartHighlighterImpl.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartHighlighterImpl.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.impl;
@@ -29,12 +29,12 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartHighlighterImpl#getLocation <em>Location</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartHighlighterImpl#isTooltipAlways <em>Tooltip Always</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartHighlighterImpl#isInsideChart <em>Inside Chart</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartImpl.java
index 1491ffa..70f21ec 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartImpl.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartImpl.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.impl;
@@ -32,7 +32,9 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartImpl#isSelectById <em>Select By Id</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartImpl#isDescription <em>Description</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartImpl#getDescriptionValue <em>Description Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartImpl#isPolling <em>Polling</em>}</li>
@@ -40,12 +42,31 @@
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartImpl#getCharttype <em>Charttype</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartImpl#getSource <em>Source</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
 public class ChartImpl extends ChartBaseImpl implements Chart {
 	/**
+	 * The default value of the '{@link #isSelectById() <em>Select By Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSelectById()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean SELECT_BY_ID_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isSelectById() <em>Select By Id</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSelectById()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean selectById = SELECT_BY_ID_EDEFAULT;
+
+	/**
 	 * The default value of the '{@link #isDescription() <em>Description</em>}' attribute.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -169,6 +190,27 @@
 	 * <!-- end-user-doc -->
 	 * @generated
 	 */
+	public boolean isSelectById() {
+		return selectById;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setSelectById(boolean newSelectById) {
+		boolean oldSelectById = selectById;
+		selectById = newSelectById;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART__SELECT_BY_ID, oldSelectById, selectById));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public boolean isDescription() {
 		return description;
 	}
@@ -358,6 +400,8 @@
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case ChartDSLPackage.CHART__SELECT_BY_ID:
+				return isSelectById();
 			case ChartDSLPackage.CHART__DESCRIPTION:
 				return isDescription();
 			case ChartDSLPackage.CHART__DESCRIPTION_VALUE:
@@ -382,6 +426,9 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case ChartDSLPackage.CHART__SELECT_BY_ID:
+				setSelectById((Boolean)newValue);
+				return;
 			case ChartDSLPackage.CHART__DESCRIPTION:
 				setDescription((Boolean)newValue);
 				return;
@@ -412,6 +459,9 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case ChartDSLPackage.CHART__SELECT_BY_ID:
+				setSelectById(SELECT_BY_ID_EDEFAULT);
+				return;
 			case ChartDSLPackage.CHART__DESCRIPTION:
 				setDescription(DESCRIPTION_EDEFAULT);
 				return;
@@ -442,6 +492,8 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case ChartDSLPackage.CHART__SELECT_BY_ID:
+				return selectById != SELECT_BY_ID_EDEFAULT;
 			case ChartDSLPackage.CHART__DESCRIPTION:
 				return description != DESCRIPTION_EDEFAULT;
 			case ChartDSLPackage.CHART__DESCRIPTION_VALUE:
@@ -468,7 +520,9 @@
 		if (eIsProxy()) return super.toString();
 
 		StringBuffer result = new StringBuffer(super.toString());
-		result.append(" (description: ");
+		result.append(" (selectById: ");
+		result.append(selectById);
+		result.append(", description: ");
 		result.append(description);
 		result.append(", descriptionValue: ");
 		result.append(descriptionValue);
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLazyResolverImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLazyResolverImpl.java
index 6474dd6..43d30a9 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLazyResolverImpl.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLazyResolverImpl.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.impl;
@@ -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.chart.ChartDSLPackage;
 import org.eclipse.osbp.xtext.chart.ChartLazyResolver;
 
+import org.eclipse.osbp.xtext.oxtype.resource.EcoreUtil3;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Chart 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.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLegendImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLegendImpl.java
index a1086e7..93b927c 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLegendImpl.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLegendImpl.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.impl;
@@ -30,13 +30,13 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartLegendImpl#getPlacement <em>Placement</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartLegendImpl#isToggle <em>Toggle</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartLegendImpl#isReplot <em>Replot</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartLegendImpl#getToggleType <em>Toggle Type</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLineImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLineImpl.java
index 674909d..9b589ab 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLineImpl.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartLineImpl.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.impl;
@@ -28,6 +28,7 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartLineImpl#isAnimated <em>Animated</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartLineImpl#isShowMarker <em>Show Marker</em>}</li>
@@ -38,7 +39,6 @@
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartLineImpl#isFillToZero <em>Fill To Zero</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartLineImpl#isFillArea <em>Fill Area</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartModelImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartModelImpl.java
index 5668d93..b8428a0 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartModelImpl.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartModelImpl.java
@@ -8,13 +8,14 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.impl;
 
 import java.util.Collection;
 
+import org.eclipse.emf.common.notify.Notification;
 import org.eclipse.emf.common.notify.NotificationChain;
 
 import org.eclipse.emf.common.util.EList;
@@ -22,6 +23,7 @@
 import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.InternalEObject;
 
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
 import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
 
 import org.eclipse.emf.ecore.util.EObjectContainmentEList;
@@ -31,21 +33,34 @@
 import org.eclipse.osbp.xtext.chart.ChartModel;
 import org.eclipse.osbp.xtext.chart.ChartPackage;
 
+import org.eclipse.xtext.xtype.XImportSection;
+
 /**
  * <!-- begin-user-doc -->
  * An implementation of the model object '<em><b>Chart Model</b></em>'.
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
+ *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartModelImpl#getImportSection <em>Import Section</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartModelImpl#getPackages <em>Packages</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
 public class ChartModelImpl extends MinimalEObjectImpl.Container implements ChartModel {
 	/**
+	 * The cached value of the '{@link #getImportSection() <em>Import Section</em>}' containment reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getImportSection()
+	 * @generated
+	 * @ordered
+	 */
+	protected XImportSection importSection;
+
+	/**
 	 * The cached value of the '{@link #getPackages() <em>Packages</em>}' containment reference list.
 	 * <!-- begin-user-doc -->
 	 * <!-- end-user-doc -->
@@ -79,6 +94,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, ChartDSLPackage.CHART_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 - ChartDSLPackage.CHART_MODEL__IMPORT_SECTION, null, msgs);
+			if (newImportSection != null)
+				msgs = ((InternalEObject)newImportSection).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ChartDSLPackage.CHART_MODEL__IMPORT_SECTION, null, msgs);
+			msgs = basicSetImportSection(newImportSection, msgs);
+			if (msgs != null) msgs.dispatch();
+		}
+		else if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ChartDSLPackage.CHART_MODEL__IMPORT_SECTION, newImportSection, newImportSection));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
 	public EList<ChartPackage> getPackages() {
 		if (packages == null) {
 			packages = new EObjectContainmentEList<ChartPackage>(ChartPackage.class, this, ChartDSLPackage.CHART_MODEL__PACKAGES);
@@ -94,6 +152,8 @@
 	@Override
 	public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
 		switch (featureID) {
+			case ChartDSLPackage.CHART_MODEL__IMPORT_SECTION:
+				return basicSetImportSection(null, msgs);
 			case ChartDSLPackage.CHART_MODEL__PACKAGES:
 				return ((InternalEList<?>)getPackages()).basicRemove(otherEnd, msgs);
 		}
@@ -108,6 +168,8 @@
 	@Override
 	public Object eGet(int featureID, boolean resolve, boolean coreType) {
 		switch (featureID) {
+			case ChartDSLPackage.CHART_MODEL__IMPORT_SECTION:
+				return getImportSection();
 			case ChartDSLPackage.CHART_MODEL__PACKAGES:
 				return getPackages();
 		}
@@ -123,6 +185,9 @@
 	@Override
 	public void eSet(int featureID, Object newValue) {
 		switch (featureID) {
+			case ChartDSLPackage.CHART_MODEL__IMPORT_SECTION:
+				setImportSection((XImportSection)newValue);
+				return;
 			case ChartDSLPackage.CHART_MODEL__PACKAGES:
 				getPackages().clear();
 				getPackages().addAll((Collection<? extends ChartPackage>)newValue);
@@ -139,6 +204,9 @@
 	@Override
 	public void eUnset(int featureID) {
 		switch (featureID) {
+			case ChartDSLPackage.CHART_MODEL__IMPORT_SECTION:
+				setImportSection((XImportSection)null);
+				return;
 			case ChartDSLPackage.CHART_MODEL__PACKAGES:
 				getPackages().clear();
 				return;
@@ -154,6 +222,8 @@
 	@Override
 	public boolean eIsSet(int featureID) {
 		switch (featureID) {
+			case ChartDSLPackage.CHART_MODEL__IMPORT_SECTION:
+				return importSection != null;
 			case ChartDSLPackage.CHART_MODEL__PACKAGES:
 				return packages != null && !packages.isEmpty();
 		}
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartNumberIntervalImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartNumberIntervalImpl.java
index 8078f8f..bbc0c67 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartNumberIntervalImpl.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartNumberIntervalImpl.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.impl;
@@ -31,11 +31,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartNumberIntervalImpl#getNumberIntervalValue <em>Number Interval Value</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartNumberIntervalImpl#getNumberRange <em>Number Range</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartPackageImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartPackageImpl.java
index cf47acc..1aba41f 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartPackageImpl.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartPackageImpl.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.impl;
@@ -37,10 +37,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartPackageImpl#getCharts <em>Charts</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartPieImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartPieImpl.java
index 6788134..7229115 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartPieImpl.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartPieImpl.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.impl;
@@ -28,10 +28,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartPieImpl#isEmpty <em>Empty</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartSegmentColorImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartSegmentColorImpl.java
index 2c58f26..61e2707 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartSegmentColorImpl.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartSegmentColorImpl.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.impl;
@@ -28,10 +28,10 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartSegmentColorImpl#getRgb <em>Rgb</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartTreeImpl.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartTreeImpl.java
index fbfc5d4..e5cbe84 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartTreeImpl.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/impl/ChartTreeImpl.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.impl;
@@ -28,11 +28,11 @@
  * <!-- end-user-doc -->
  * <p>
  * The following features are implemented:
+ * </p>
  * <ul>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartTreeImpl#isMap <em>Map</em>}</li>
  *   <li>{@link org.eclipse.osbp.xtext.chart.impl.ChartTreeImpl#isCollapsible <em>Collapsible</em>}</li>
  * </ul>
- * </p>
  *
  * @generated
  */
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/util/ChartDSLAdapterFactory.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/util/ChartDSLAdapterFactory.java
index f54fdce..52fabda 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/util/ChartDSLAdapterFactory.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/util/ChartDSLAdapterFactory.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.util;
diff --git a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/util/ChartDSLSwitch.java b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/util/ChartDSLSwitch.java
index 67e39dc..be07cc6 100644
--- a/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/util/ChartDSLSwitch.java
+++ b/org.eclipse.osbp.xtext.chart/emf-gen/org/eclipse/osbp/xtext/chart/util/ChartDSLSwitch.java
@@ -8,7 +8,7 @@
  *  Based on ideas from Xtext, Xtend, Xcore
  *   
  *  Contributors:  
- *  		Christophe Loetz (Loetz GmbH&Co.KG) - Initial implementation 
+ *  		Joerg Riegel - Initial implementation 
  *  
  */
 package org.eclipse.osbp.xtext.chart.util;
@@ -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.chart/model/ChartDSL.xcore b/org.eclipse.osbp.xtext.chart/model/ChartDSL.xcore
index b4d3ea5..8d76aa4 100644
--- a/org.eclipse.osbp.xtext.chart/model/ChartDSL.xcore
+++ b/org.eclipse.osbp.xtext.chart/model/ChartDSL.xcore
@@ -1,6 +1,9 @@
 @GenModel(fileExtensions="chart")
 @GenModel(modelName="ChartDSL")
 @GenModel(prefix="ChartDSL")
+// force bigModel == false
+@GenModel(loadInitialization="false")
+@GenModel(literalsInterface="true")
 @GenModel(copyrightText="Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
  All rights reserved. This program and the accompanying materials 
  are made available under the terms of the Eclipse Public License v1.0 
@@ -22,9 +25,11 @@
 import org.eclipse.emf.ecore.EObject
 import org.eclipse.emf.ecore.InternalEObject
 import org.eclipse.osbp.dsl.semantic.common.types.LPackage
-import org.eclipse.osbp.dsl.xtext.lazyresolver.api.EcoreUtil3
+import org.eclipse.osbp.xtext.oxtype.resource.EcoreUtil3
+import org.eclipse.xtext.xtype.XImportSection
 
 class ChartModel {
+	contains XImportSection importSection
 	contains ChartPackage[] packages
 }
 
@@ -45,6 +50,7 @@
 }
 
 class Chart extends ChartBase{
+	boolean selectById
 	boolean description
 	String descriptionValue
 	boolean polling
diff --git a/org.eclipse.osbp.xtext.chart/pom.xml b/org.eclipse.osbp.xtext.chart/pom.xml
index a3d1c22..2b554f6 100644
--- a/org.eclipse.osbp.xtext.chart/pom.xml
+++ b/org.eclipse.osbp.xtext.chart/pom.xml
@@ -20,4 +20,13 @@
     </parent>
     <artifactId>org.eclipse.osbp.xtext.chart</artifactId>
     <packaging>eclipse-plugin</packaging>
+    <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>
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/AbstractChartDSLRuntimeModule.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/AbstractChartDSLRuntimeModule.java
index e678ef7..42cddb8 100644
--- a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/AbstractChartDSLRuntimeModule.java
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/AbstractChartDSLRuntimeModule.java
@@ -10,22 +10,77 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.chart;
 
-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.chart.jvmmodel.ChartDSLJvmModelInferrer;
+import org.eclipse.osbp.xtext.chart.parser.antlr.ChartDSLAntlrTokenFileProvider;
+import org.eclipse.osbp.xtext.chart.parser.antlr.ChartDSLParser;
+import org.eclipse.osbp.xtext.chart.parser.antlr.internal.InternalChartDSLLexer;
+import org.eclipse.osbp.xtext.chart.scoping.ChartDSLScopeProvider;
+import org.eclipse.osbp.xtext.chart.serializer.ChartDSLSemanticSequencer;
+import org.eclipse.osbp.xtext.chart.serializer.ChartDSLSyntacticSequencer;
+import org.eclipse.osbp.xtext.chart.services.ChartDSLGrammarAccess;
+import org.eclipse.osbp.xtext.chart.validation.ChartDSLValidator;
+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.IUnorderedGroupHelper;
+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.parser.antlr.UnorderedGroupHelper;
+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.chart.ChartDSLRuntimeModule}
+ * Manual modifications go to {@link ChartDSLRuntimeModule}.
  */
- @SuppressWarnings("all")
-public abstract class AbstractChartDSLRuntimeModule extends DefaultRuntimeModule {
+@SuppressWarnings("all")
+public abstract class AbstractChartDSLRuntimeModule extends DefaultXbaseWithAnnotationsRuntimeModule {
 
 	protected Properties properties = null;
 
@@ -44,309 +99,152 @@
 			binder.bind(String.class).annotatedWith(Names.named(Constants.FILE_EXTENSIONS)).toInstance("chart");
 	}
 	
-	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
-	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISemanticSequencer> bindISemanticSequencer() {
-		return org.eclipse.osbp.xtext.chart.serializer.ChartDSLSemanticSequencer.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.serializer.SerializerFragment
-	public Class<? extends org.eclipse.xtext.serializer.sequencer.ISyntacticSequencer> bindISyntacticSequencer() {
-		return org.eclipse.osbp.xtext.chart.serializer.ChartDSLSyntacticSequencer.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.chart.parser.antlr.ChartDSLParser.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.chart.parser.antlr.ChartDSLAntlrTokenFileProvider.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.chart.parser.antlr.internal.InternalChartDSLLexer.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
-	public com.google.inject.Provider<org.eclipse.osbp.xtext.chart.parser.antlr.internal.InternalChartDSLLexer> provideInternalChartDSLLexer() {
-		return org.eclipse.xtext.parser.antlr.LexerProvider.create(org.eclipse.osbp.xtext.chart.parser.antlr.internal.InternalChartDSLLexer.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.chart.parser.antlr.internal.InternalChartDSLLexer.class);
-	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
-	public Class<? extends org.eclipse.xtext.parser.antlr.ITokenDefProvider> bindITokenDefProvider() {
-		return org.eclipse.xtext.parser.antlr.AntlrTokenDefProvider.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment
-	public Class<? extends org.eclipse.xtext.parser.antlr.IUnorderedGroupHelper> bindIUnorderedGroupHelper() {
-		return org.eclipse.xtext.parser.antlr.UnorderedGroupHelper.class;
-	}
-
-	// contributed by org.eclipse.xtext.generator.validation.ValidatorFragment
-	@org.eclipse.xtext.service.SingletonBinding(eager=true)	public Class<? extends org.eclipse.osbp.xtext.chart.validation.ChartDSLValidator> bindChartDSLValidator() {
-		return org.eclipse.osbp.xtext.chart.validation.ChartDSLValidator.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.chart.formatting.ChartDSLFormatter.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.chart.jvmmodel.ChartDSLJvmModelInferrer.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.chart.services.ChartDSLGrammarAccess.class;
+	
+	// contributed by org.eclipse.xtext.xtext.generator.grammarAccess.GrammarAccessFragment2
+	public Class<? extends IGrammarAccess> bindIGrammarAccess() {
+		return ChartDSLGrammarAccess.class;
 	}
-
+	
+	// contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2
+	public Class<? extends ISemanticSequencer> bindISemanticSequencer() {
+		return ChartDSLSemanticSequencer.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.serializer.SerializerFragment2
+	public Class<? extends ISyntacticSequencer> bindISyntacticSequencer() {
+		return ChartDSLSyntacticSequencer.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 ChartDSLParser.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 ChartDSLAntlrTokenFileProvider.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends Lexer> bindLexer() {
+		return InternalChartDSLLexer.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 InternalChartDSLLexer> provideInternalChartDSLLexer() {
+		return LexerProvider.create(InternalChartDSLLexer.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(InternalChartDSLLexer.class);
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.parser.antlr.XtextAntlrGeneratorFragment2
+	public Class<? extends IUnorderedGroupHelper> bindIUnorderedGroupHelper() {
+		return UnorderedGroupHelper.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.validation.ValidatorFragment2
+	@SingletonBinding(eager=true)
+	public Class<? extends ChartDSLValidator> bindChartDSLValidator() {
+		return ChartDSLValidator.class;
+	}
+	
+	// contributed by org.eclipse.xtext.xtext.generator.scoping.ImportNamespacesScopingFragment2
+	public Class<? extends IBatchScopeProvider> bindIBatchScopeProvider() {
+		return ChartDSLScopeProvider.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 ChartDSLJvmModelInferrer.class;
+	}
+	
 }
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/ChartDSL.xtextbin b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/ChartDSL.xtextbin
new file mode 100644
index 0000000..6909eae
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/ChartDSL.xtextbin
Binary files differ
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/ChartDSLStandaloneSetupGenerated.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/ChartDSLStandaloneSetupGenerated.java
index 237e77b..a7f64a9 100644
--- a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/ChartDSLStandaloneSetupGenerated.java
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/ChartDSLStandaloneSetupGenerated.java
@@ -10,24 +10,26 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
-package org.eclipse.osbp.xtext.chart;
 
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.xtext.ISetup;
-import org.eclipse.emf.ecore.resource.Resource;
+package org.eclipse.osbp.xtext.chart;
 
 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 ChartDSLStandaloneSetupGenerated implements ISetup {
 
+	@Override
 	public Injector createInjectorAndDoEMFRegistration() {
-		org.eclipse.xtext.xbase.annotations.XbaseWithAnnotationsStandaloneSetup.doSetup();
+		OXtypeStandaloneSetup.doSetup();
 
 		Injector injector = createInjector();
 		register(injector);
@@ -35,18 +37,14 @@
 	}
 	
 	public Injector createInjector() {
-		return Guice.createInjector(new org.eclipse.osbp.xtext.chart.ChartDSLRuntimeModule());
+		return Guice.createInjector(new ChartDSLRuntimeModule());
 	}
 	
 	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("chart", resourceFactory);
-		org.eclipse.xtext.resource.IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("chart", serviceProvider);
+		IResourceFactory resourceFactory = injector.getInstance(IResourceFactory.class);
+		IResourceServiceProvider serviceProvider = injector.getInstance(IResourceServiceProvider.class);
 		
-
-
-
+		Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put("chart", resourceFactory);
+		IResourceServiceProvider.Registry.INSTANCE.getExtensionToFactoryMap().put("chart", serviceProvider);
 	}
 }
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/ChartDSLAntlrTokenFileProvider.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/ChartDSLAntlrTokenFileProvider.java
index 142ae09..e449d95 100644
--- a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/ChartDSLAntlrTokenFileProvider.java
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/ChartDSLAntlrTokenFileProvider.java
@@ -10,16 +10,20 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.chart.parser.antlr;
 
 import java.io.InputStream;
 import org.eclipse.xtext.parser.antlr.IAntlrTokenFileProvider;
 
 public class ChartDSLAntlrTokenFileProvider implements IAntlrTokenFileProvider {
-	
+
+	@Override
 	public InputStream getAntlrTokenFile() {
 		ClassLoader classLoader = getClass().getClassLoader();
-    	return classLoader.getResourceAsStream("org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.tokens");
+		return classLoader.getResourceAsStream("org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.tokens");
 	}
 }
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/ChartDSLParser.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/ChartDSLParser.java
index 9dd1bfa..3246390 100644
--- a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/ChartDSLParser.java
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/ChartDSLParser.java
@@ -10,40 +10,44 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.chart.parser.antlr;
 
 import com.google.inject.Inject;
-
-import org.eclipse.xtext.parser.antlr.XtextTokenStream;
+import org.eclipse.osbp.xtext.chart.parser.antlr.internal.InternalChartDSLParser;
 import org.eclipse.osbp.xtext.chart.services.ChartDSLGrammarAccess;
+import org.eclipse.xtext.parser.antlr.AbstractAntlrParser;
+import org.eclipse.xtext.parser.antlr.XtextTokenStream;
 
-public class ChartDSLParser extends org.eclipse.xtext.parser.antlr.AbstractAntlrParser {
-	
+public class ChartDSLParser extends AbstractAntlrParser {
+
 	@Inject
 	private ChartDSLGrammarAccess grammarAccess;
-	
+
 	@Override
 	protected void setInitialHiddenTokens(XtextTokenStream tokenStream) {
 		tokenStream.setInitialHiddenTokens("RULE_WS", "RULE_ML_COMMENT", "RULE_SL_COMMENT");
 	}
 	
+
 	@Override
-	protected org.eclipse.osbp.xtext.chart.parser.antlr.internal.InternalChartDSLParser createParser(XtextTokenStream stream) {
-		return new org.eclipse.osbp.xtext.chart.parser.antlr.internal.InternalChartDSLParser(stream, getGrammarAccess());
+	protected InternalChartDSLParser createParser(XtextTokenStream stream) {
+		return new InternalChartDSLParser(stream, getGrammarAccess());
 	}
-	
+
 	@Override 
 	protected String getDefaultRuleName() {
 		return "ChartModel";
 	}
-	
+
 	public ChartDSLGrammarAccess getGrammarAccess() {
 		return this.grammarAccess;
 	}
-	
+
 	public void setGrammarAccess(ChartDSLGrammarAccess grammarAccess) {
 		this.grammarAccess = grammarAccess;
 	}
-	
 }
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g
index 3cfb562..99a4eda 100644
--- a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g
@@ -10,12 +10,14 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 grammar InternalChartDSL;
 
 options {
 	superClass=AbstractInternalAntlrParser;
-	
 }
 
 @lexer::header {
@@ -27,7 +29,7 @@
 }
 
 @parser::header {
-package org.eclipse.osbp.xtext.chart.parser.antlr.internal; 
+package org.eclipse.osbp.xtext.chart.parser.antlr.internal;
 
 import org.eclipse.xtext.*;
 import org.eclipse.xtext.parser.*;
@@ -46,8564 +48,8953 @@
 @parser::members {
 
  	private ChartDSLGrammarAccess grammarAccess;
- 	
+
     public InternalChartDSLParser(TokenStream input, ChartDSLGrammarAccess grammarAccess) {
         this(input);
         this.grammarAccess = grammarAccess;
         registerRules(grammarAccess.getGrammar());
     }
-    
+
     @Override
     protected String getFirstRuleName() {
-    	return "ChartModel";	
+    	return "ChartModel";
    	}
-   	
+
    	@Override
    	protected ChartDSLGrammarAccess getGrammarAccess() {
    		return grammarAccess;
    	}
+
 }
 
-@rulecatch { 
-    catch (RecognitionException re) { 
-        recover(input,re); 
+@rulecatch {
+    catch (RecognitionException re) {
+        recover(input,re);
         appendSkippedTokens();
-    } 
+    }
 }
 
-
-
-
 // Entry rule entryRuleChartModel
-entryRuleChartModel returns [EObject current=null] 
-	:
+entryRuleChartModel returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getChartModelRule()); }
-	 iv_ruleChartModel=ruleChartModel 
-	 { $current=$iv_ruleChartModel.current; } 
-	 EOF 
-;
+	iv_ruleChartModel=ruleChartModel
+	{ $current=$iv_ruleChartModel.current; }
+	EOF;
 
 // Rule ChartModel
-ruleChartModel returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getChartModelAccess().getPackagesChartPackageParserRuleCall_0()); 
-	    }
-		lv_packages_0_0=ruleChartPackage		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getChartModelRule());
-	        }
-       		add(
-       			$current, 
-       			"packages",
-        		lv_packages_0_0, 
-        		"ChartPackage");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*
+ruleChartModel returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getChartModelAccess().getImportSectionXImportSectionParserRuleCall_0_0());
+				}
+				lv_importSection_0_0=ruleXImportSection
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getChartModelRule());
+					}
+					set(
+						$current,
+						"importSection",
+						lv_importSection_0_0,
+						"org.eclipse.xtext.xbase.Xtype.XImportSection");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)?
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getChartModelAccess().getPackagesChartPackageParserRuleCall_1_0());
+				}
+				lv_packages_1_0=ruleChartPackage
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getChartModelRule());
+					}
+					add(
+						$current,
+						"packages",
+						lv_packages_1_0,
+						"org.eclipse.osbp.xtext.chart.ChartDSL.ChartPackage");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)*
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleChartPackage
-entryRuleChartPackage returns [EObject current=null] 
-	:
+entryRuleChartPackage returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getChartPackageRule()); }
-	 iv_ruleChartPackage=ruleChartPackage 
-	 { $current=$iv_ruleChartPackage.current; } 
-	 EOF 
-;
+	iv_ruleChartPackage=ruleChartPackage
+	{ $current=$iv_ruleChartPackage.current; }
+	EOF;
 
 // Rule ChartPackage
-ruleChartPackage returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getChartPackageAccess().getChartPackageAction_0(),
-            $current);
-    }
-)	otherlv_1='package' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getChartPackageAccess().getPackageKeyword_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getChartPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
-	    }
-		lv_name_2_0=ruleQualifiedName		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getChartPackageRule());
-	        }
-       		set(
-       			$current, 
-       			"name",
-        		lv_name_2_0, 
-        		"QualifiedName");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(	otherlv_3='{' 
-    {
-    	newLeafNode(otherlv_3, grammarAccess.getChartPackageAccess().getLeftCurlyBracketKeyword_3_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getChartPackageAccess().getImportsChartImportParserRuleCall_3_1_0()); 
-	    }
-		lv_imports_4_0=ruleChartImport		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getChartPackageRule());
-	        }
-       		add(
-       			$current, 
-       			"imports",
-        		lv_imports_4_0, 
-        		"ChartImport");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getChartPackageAccess().getChartsChartParserRuleCall_3_2_0()); 
-	    }
-		lv_charts_5_0=ruleChart		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getChartPackageRule());
-	        }
-       		add(
-       			$current, 
-       			"charts",
-        		lv_charts_5_0, 
-        		"Chart");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*	otherlv_6='}' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getChartPackageAccess().getRightCurlyBracketKeyword_3_3());
-    }
-)?)
+ruleChartPackage returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getChartPackageAccess().getChartPackageAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='package'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getChartPackageAccess().getPackageKeyword_1());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getChartPackageAccess().getNameQualifiedNameParserRuleCall_2_0());
+				}
+				lv_name_2_0=ruleQualifiedName
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getChartPackageRule());
+					}
+					set(
+						$current,
+						"name",
+						lv_name_2_0,
+						"org.eclipse.xtext.xbase.Xbase.QualifiedName");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			otherlv_3='{'
+			{
+				newLeafNode(otherlv_3, grammarAccess.getChartPackageAccess().getLeftCurlyBracketKeyword_3_0());
+			}
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getChartPackageAccess().getChartsChartParserRuleCall_3_1_0());
+					}
+					lv_charts_4_0=ruleChart
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getChartPackageRule());
+						}
+						add(
+							$current,
+							"charts",
+							lv_charts_4_0,
+							"org.eclipse.osbp.xtext.chart.ChartDSL.Chart");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)*
+			otherlv_5='}'
+			{
+				newLeafNode(otherlv_5, grammarAccess.getChartPackageAccess().getRightCurlyBracketKeyword_3_2());
+			}
+		)?
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleChart
-entryRuleChart returns [EObject current=null] 
-	:
+entryRuleChart returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getChartRule()); }
-	 iv_ruleChart=ruleChart 
-	 { $current=$iv_ruleChart.current; } 
-	 EOF 
-;
+	iv_ruleChart=ruleChart
+	{ $current=$iv_ruleChart.current; }
+	EOF;
 
 // Rule Chart
-ruleChart returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getChartAccess().getChartAction_0(),
-            $current);
-    }
-)	otherlv_1='chart' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getChartAccess().getChartKeyword_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getChartAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
-	    }
-		lv_name_2_0=ruleTRANSLATABLEID		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getChartRule());
-	        }
-       		set(
-       			$current, 
-       			"name",
-        		lv_name_2_0, 
-        		"TRANSLATABLEID");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)((
-(
-		lv_description_3_0=	'described by' 
-    {
-        newLeafNode(lv_description_3_0, grammarAccess.getChartAccess().getDescriptionDescribedByKeyword_3_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartRule());
-	        }
-       		setWithLastConsumed($current, "description", true, "described by");
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getChartAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
-	    }
-		lv_descriptionValue_4_0=ruleTRANSLATABLESTRING		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getChartRule());
-	        }
-       		set(
-       			$current, 
-       			"descriptionValue",
-        		lv_descriptionValue_4_0, 
-        		"TRANSLATABLESTRING");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?	otherlv_5='as' 
-    {
-    	newLeafNode(otherlv_5, grammarAccess.getChartAccess().getAsKeyword_4());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getChartAccess().getCharttypeChartOptionParserRuleCall_5_0()); 
-	    }
-		lv_charttype_6_0=ruleChartOption		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getChartRule());
-	        }
-       		set(
-       			$current, 
-       			"charttype",
-        		lv_charttype_6_0, 
-        		"ChartOption");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)((
-(
-		lv_polling_7_0=	'polling' 
-    {
-        newLeafNode(lv_polling_7_0, grammarAccess.getChartAccess().getPollingPollingKeyword_6_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartRule());
-	        }
-       		setWithLastConsumed($current, "polling", true, "polling");
-	    }
-
-)
-)(
-(
-		lv_pollingTime_8_0=RULE_INT
+ruleChart returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getChartAccess().getChartAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='chart'
 		{
-			newLeafNode(lv_pollingTime_8_0, grammarAccess.getChartAccess().getPollingTimeINTTerminalRuleCall_6_1_0()); 
+			newLeafNode(otherlv_1, grammarAccess.getChartAccess().getChartKeyword_1());
 		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getChartAccess().getNameTRANSLATABLEIDParserRuleCall_2_0());
+				}
+				lv_name_2_0=ruleTRANSLATABLEID
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getChartRule());
+					}
+					set(
+						$current,
+						"name",
+						lv_name_2_0,
+						"org.eclipse.osbp.xtext.chart.ChartDSL.TRANSLATABLEID");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				(
+					lv_description_3_0='describedBy'
+					{
+						newLeafNode(lv_description_3_0, grammarAccess.getChartAccess().getDescriptionDescribedByKeyword_3_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getChartRule());
+						}
+						setWithLastConsumed($current, "description", true, "describedBy");
+					}
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getChartAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0());
+					}
+					lv_descriptionValue_4_0=ruleTRANSLATABLESTRING
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getChartRule());
+						}
+						set(
+							$current,
+							"descriptionValue",
+							lv_descriptionValue_4_0,
+							"org.eclipse.osbp.xtext.chart.ChartDSL.TRANSLATABLESTRING");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+		otherlv_5='as'
 		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"pollingTime",
-        		lv_pollingTime_8_0, 
-        		"INT");
-	    }
-
-)
-))?(	otherlv_9='using' 
-    {
-    	newLeafNode(otherlv_9, grammarAccess.getChartAccess().getUsingKeyword_7_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getChartAccess().getSourceChartDatamartParserRuleCall_7_1_0()); 
-	    }
-		lv_source_10_0=ruleChartDatamart		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getChartRule());
-	        }
-       		set(
-       			$current, 
-       			"source",
-        		lv_source_10_0, 
-        		"ChartDatamart");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?)
+			newLeafNode(otherlv_5, grammarAccess.getChartAccess().getAsKeyword_4());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getChartAccess().getCharttypeChartOptionParserRuleCall_5_0());
+				}
+				lv_charttype_6_0=ruleChartOption
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getChartRule());
+					}
+					set(
+						$current,
+						"charttype",
+						lv_charttype_6_0,
+						"org.eclipse.osbp.xtext.chart.ChartDSL.ChartOption");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				{ 
+				  getUnorderedGroupHelper().enter(grammarAccess.getChartAccess().getUnorderedGroup_6());
+				}
+				(
+					(
+			(
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 0)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getChartAccess().getUnorderedGroup_6(), 0);
+					}
+								({true}?=>((
+									(
+										lv_polling_8_0='polling'
+										{
+											newLeafNode(lv_polling_8_0, grammarAccess.getChartAccess().getPollingPollingKeyword_6_0_0_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getChartRule());
+											}
+											setWithLastConsumed($current, "polling", true, "polling");
+										}
+									)
+								)
+								(
+									(
+										lv_pollingTime_9_0=RULE_INT
+										{
+											newLeafNode(lv_pollingTime_9_0, grammarAccess.getChartAccess().getPollingTimeINTTerminalRuleCall_6_0_1_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getChartRule());
+											}
+											setWithLastConsumed(
+												$current,
+												"pollingTime",
+												lv_pollingTime_9_0,
+												"org.eclipse.xtext.xbase.Xbase.INT");
+										}
+									)
+								)
+								))
+					{ 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartAccess().getUnorderedGroup_6());
+					}
+				)
+			)|
+			(
+				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 1)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getChartAccess().getUnorderedGroup_6(), 1);
+					}
+								({true}?=>((
+									lv_selectById_10_0='selectById'
+									{
+										newLeafNode(lv_selectById_10_0, grammarAccess.getChartAccess().getSelectByIdSelectByIdKeyword_6_1_0());
+									}
+									{
+										if ($current==null) {
+											$current = createModelElement(grammarAccess.getChartRule());
+										}
+										setWithLastConsumed($current, "selectById", true, "selectById");
+									}
+								)
+								))
+					{ 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartAccess().getUnorderedGroup_6());
+					}
+				)
+			)
+					)*
+				)
+			)
+				{ 
+				  getUnorderedGroupHelper().leave(grammarAccess.getChartAccess().getUnorderedGroup_6());
+				}
+		)
+		(
+			otherlv_11='using'
+			{
+				newLeafNode(otherlv_11, grammarAccess.getChartAccess().getUsingKeyword_7_0());
+			}
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getChartAccess().getSourceChartDatamartParserRuleCall_7_1_0());
+					}
+					lv_source_12_0=ruleChartDatamart
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getChartRule());
+						}
+						set(
+							$current,
+							"source",
+							lv_source_12_0,
+							"org.eclipse.osbp.xtext.chart.ChartDSL.ChartDatamart");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleChartOption
-entryRuleChartOption returns [EObject current=null] 
-	:
+entryRuleChartOption returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getChartOptionRule()); }
-	 iv_ruleChartOption=ruleChartOption 
-	 { $current=$iv_ruleChartOption.current; } 
-	 EOF 
-;
+	iv_ruleChartOption=ruleChartOption
+	{ $current=$iv_ruleChartOption.current; }
+	EOF;
 
 // Rule ChartOption
-ruleChartOption returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getChartOptionAccess().getChartBarParserRuleCall_0()); 
-    }
-    this_ChartBar_0=ruleChartBar
-    { 
-        $current = $this_ChartBar_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getChartOptionAccess().getChartLineParserRuleCall_1()); 
-    }
-    this_ChartLine_1=ruleChartLine
-    { 
-        $current = $this_ChartLine_1.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getChartOptionAccess().getChartPieParserRuleCall_2()); 
-    }
-    this_ChartPie_2=ruleChartPie
-    { 
-        $current = $this_ChartPie_2.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getChartOptionAccess().getChartDonutParserRuleCall_3()); 
-    }
-    this_ChartDonut_3=ruleChartDonut
-    { 
-        $current = $this_ChartDonut_3.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getChartOptionAccess().getChartBubbleParserRuleCall_4()); 
-    }
-    this_ChartBubble_4=ruleChartBubble
-    { 
-        $current = $this_ChartBubble_4.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getChartOptionAccess().getChartGaugeParserRuleCall_5()); 
-    }
-    this_ChartGauge_5=ruleChartGauge
-    { 
-        $current = $this_ChartGauge_5.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getChartOptionAccess().getChartTreeParserRuleCall_6()); 
-    }
-    this_ChartTree_6=ruleChartTree
-    { 
-        $current = $this_ChartTree_6.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+ruleChartOption returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getChartOptionAccess().getChartBarParserRuleCall_0());
+		}
+		this_ChartBar_0=ruleChartBar
+		{
+			$current = $this_ChartBar_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getChartOptionAccess().getChartLineParserRuleCall_1());
+		}
+		this_ChartLine_1=ruleChartLine
+		{
+			$current = $this_ChartLine_1.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getChartOptionAccess().getChartPieParserRuleCall_2());
+		}
+		this_ChartPie_2=ruleChartPie
+		{
+			$current = $this_ChartPie_2.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getChartOptionAccess().getChartDonutParserRuleCall_3());
+		}
+		this_ChartDonut_3=ruleChartDonut
+		{
+			$current = $this_ChartDonut_3.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getChartOptionAccess().getChartBubbleParserRuleCall_4());
+		}
+		this_ChartBubble_4=ruleChartBubble
+		{
+			$current = $this_ChartBubble_4.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getChartOptionAccess().getChartGaugeParserRuleCall_5());
+		}
+		this_ChartGauge_5=ruleChartGauge
+		{
+			$current = $this_ChartGauge_5.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getChartOptionAccess().getChartTreeParserRuleCall_6());
+		}
+		this_ChartTree_6=ruleChartTree
+		{
+			$current = $this_ChartTree_6.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleChartBar
-entryRuleChartBar returns [EObject current=null] 
-	:
+entryRuleChartBar returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getChartBarRule()); }
-	 iv_ruleChartBar=ruleChartBar 
-	 { $current=$iv_ruleChartBar.current; } 
-	 EOF 
-;
+	iv_ruleChartBar=ruleChartBar
+	{ $current=$iv_ruleChartBar.current; }
+	EOF;
 
 // Rule ChartBar
-ruleChartBar returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getChartBarAccess().getChartBarAction_0(),
-            $current);
-    }
-)	otherlv_1='bar' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getChartBarAccess().getBarKeyword_1());
-    }
-(
-
-(
-	{ 
-	  getUnorderedGroupHelper().enter(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
-	}
+ruleChartBar returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
 	(
 		(
-
-			( 
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getChartBarAccess().getChartBarAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='bar'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getChartBarAccess().getBarKeyword_1());
+		}
+		(
+			(
+				{ 
+				  getUnorderedGroupHelper().enter(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+				}
+				(
+					(
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0);
+					}
+								({true}?=>((
+									lv_shadow_3_0='shaded'
+									{
+										newLeafNode(lv_shadow_3_0, grammarAccess.getChartBarAccess().getShadowShadedKeyword_2_0_0());
+									}
+									{
+										if ($current==null) {
+											$current = createModelElement(grammarAccess.getChartBarRule());
+										}
+										setWithLastConsumed($current, "shadow", true, "shaded");
+									}
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0);
-	 				}
-					({true}?=>(
-(
-		lv_shadow_3_0=	'shaded' 
-    {
-        newLeafNode(lv_shadow_3_0, grammarAccess.getChartBarAccess().getShadowShadedKeyword_2_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartBarRule());
-	        }
-       		setWithLastConsumed($current, "shadow", true, "shaded");
-	    }
-
-)
-))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1);
+					}
+								({true}?=>((
+									lv_animated_4_0='animated'
+									{
+										newLeafNode(lv_animated_4_0, grammarAccess.getChartBarAccess().getAnimatedAnimatedKeyword_2_1_0());
+									}
+									{
+										if ($current==null) {
+											$current = createModelElement(grammarAccess.getChartBarRule());
+										}
+										setWithLastConsumed($current, "animated", true, "animated");
+									}
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1);
-	 				}
-					({true}?=>(
-(
-		lv_animated_4_0=	'animated' 
-    {
-        newLeafNode(lv_animated_4_0, grammarAccess.getChartBarAccess().getAnimatedAnimatedKeyword_2_1_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartBarRule());
-	        }
-       		setWithLastConsumed($current, "animated", true, "animated");
-	    }
-
-)
-))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2);
+					}
+								({true}?=>((
+									lv_swapped_5_0='swapped'
+									{
+										newLeafNode(lv_swapped_5_0, grammarAccess.getChartBarAccess().getSwappedSwappedKeyword_2_2_0());
+									}
+									{
+										if ($current==null) {
+											$current = createModelElement(grammarAccess.getChartBarRule());
+										}
+										setWithLastConsumed($current, "swapped", true, "swapped");
+									}
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2);
-	 				}
-					({true}?=>(
-(
-		lv_swapped_5_0=	'swapped' 
-    {
-        newLeafNode(lv_swapped_5_0, grammarAccess.getChartBarAccess().getSwappedSwappedKeyword_2_2_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartBarRule());
-	        }
-       		setWithLastConsumed($current, "swapped", true, "swapped");
-	    }
-
-)
-))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3);
+					}
+								({true}?=>((
+									lv_stacked_6_0='stacked'
+									{
+										newLeafNode(lv_stacked_6_0, grammarAccess.getChartBarAccess().getStackedStackedKeyword_2_3_0());
+									}
+									{
+										if ($current==null) {
+											$current = createModelElement(grammarAccess.getChartBarRule());
+										}
+										setWithLastConsumed($current, "stacked", true, "stacked");
+									}
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3);
-	 				}
-					({true}?=>(
-(
-		lv_stacked_6_0=	'stacked' 
-    {
-        newLeafNode(lv_stacked_6_0, grammarAccess.getChartBarAccess().getStackedStackedKeyword_2_3_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartBarRule());
-	        }
-       		setWithLastConsumed($current, "stacked", true, "stacked");
-	    }
-
-)
-))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
-	 				}
- 				)
-			)  
-
-		)*	
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+					}
+				)
+			)
+					)*
+				)
+			)
+				{ 
+				  getUnorderedGroupHelper().leave(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
+				}
+		)
 	)
-)
-	{ 
-	  getUnorderedGroupHelper().leave(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
-	}
-
-))
 ;
 
-
-
-
-
 // Entry rule entryRuleChartLine
-entryRuleChartLine returns [EObject current=null] 
-	:
+entryRuleChartLine returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getChartLineRule()); }
-	 iv_ruleChartLine=ruleChartLine 
-	 { $current=$iv_ruleChartLine.current; } 
-	 EOF 
-;
+	iv_ruleChartLine=ruleChartLine
+	{ $current=$iv_ruleChartLine.current; }
+	EOF;
 
 // Rule ChartLine
-ruleChartLine returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getChartLineAccess().getChartLineAction_0(),
-            $current);
-    }
-)	otherlv_1='line' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getChartLineAccess().getLineKeyword_1());
-    }
-(
-
-(
-	{ 
-	  getUnorderedGroupHelper().enter(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
-	}
+ruleChartLine returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
 	(
 		(
-
-			( 
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getChartLineAccess().getChartLineAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='line'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getChartLineAccess().getLineKeyword_1());
+		}
+		(
+			(
+				{ 
+				  getUnorderedGroupHelper().enter(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+				}
+				(
+					(
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0);
+					}
+								({true}?=>((
+									lv_animated_3_0='animated'
+									{
+										newLeafNode(lv_animated_3_0, grammarAccess.getChartLineAccess().getAnimatedAnimatedKeyword_2_0_0());
+									}
+									{
+										if ($current==null) {
+											$current = createModelElement(grammarAccess.getChartLineRule());
+										}
+										setWithLastConsumed($current, "animated", true, "animated");
+									}
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0);
-	 				}
-					({true}?=>(
-(
-		lv_animated_3_0=	'animated' 
-    {
-        newLeafNode(lv_animated_3_0, grammarAccess.getChartLineAccess().getAnimatedAnimatedKeyword_2_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartLineRule());
-	        }
-       		setWithLastConsumed($current, "animated", true, "animated");
-	    }
-
-)
-))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1);
+					}
+								({true}?=>((
+									lv_showMarker_4_0='showMarker'
+									{
+										newLeafNode(lv_showMarker_4_0, grammarAccess.getChartLineAccess().getShowMarkerShowMarkerKeyword_2_1_0());
+									}
+									{
+										if ($current==null) {
+											$current = createModelElement(grammarAccess.getChartLineRule());
+										}
+										setWithLastConsumed($current, "showMarker", true, "showMarker");
+									}
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1);
-	 				}
-					({true}?=>(
-(
-		lv_showMarker_4_0=	'showMarker' 
-    {
-        newLeafNode(lv_showMarker_4_0, grammarAccess.getChartLineAccess().getShowMarkerShowMarkerKeyword_2_1_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartLineRule());
-	        }
-       		setWithLastConsumed($current, "showMarker", true, "showMarker");
-	    }
-
-)
-))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2);
+					}
+								({true}?=>((
+									lv_trendLine_5_0='trendLine'
+									{
+										newLeafNode(lv_trendLine_5_0, grammarAccess.getChartLineAccess().getTrendLineTrendLineKeyword_2_2_0());
+									}
+									{
+										if ($current==null) {
+											$current = createModelElement(grammarAccess.getChartLineRule());
+										}
+										setWithLastConsumed($current, "trendLine", true, "trendLine");
+									}
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2);
-	 				}
-					({true}?=>(
-(
-		lv_trendLine_5_0=	'trendLine' 
-    {
-        newLeafNode(lv_trendLine_5_0, grammarAccess.getChartLineAccess().getTrendLineTrendLineKeyword_2_2_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartLineRule());
-	        }
-       		setWithLastConsumed($current, "trendLine", true, "trendLine");
-	    }
-
-)
-))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3);
+					}
+								({true}?=>((
+									(
+										lv_cursor_6_0='cursor'
+										{
+											newLeafNode(lv_cursor_6_0, grammarAccess.getChartLineAccess().getCursorCursorKeyword_2_3_0_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getChartLineRule());
+											}
+											setWithLastConsumed($current, "cursor", true, "cursor");
+										}
+									)
+								)
+								(
+									(
+										lv_zoom_7_0='zoom'
+										{
+											newLeafNode(lv_zoom_7_0, grammarAccess.getChartLineAccess().getZoomZoomKeyword_2_3_1_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getChartLineRule());
+											}
+											setWithLastConsumed($current, "zoom", true, "zoom");
+										}
+									)
+								)?
+								(
+									(
+										lv_tooltip_8_0='tooltip'
+										{
+											newLeafNode(lv_tooltip_8_0, grammarAccess.getChartLineAccess().getTooltipTooltipKeyword_2_3_2_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getChartLineRule());
+											}
+											setWithLastConsumed($current, "tooltip", true, "tooltip");
+										}
+									)
+								)?
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3);
-	 				}
-					({true}?=>((
-(
-		lv_cursor_6_0=	'cursor' 
-    {
-        newLeafNode(lv_cursor_6_0, grammarAccess.getChartLineAccess().getCursorCursorKeyword_2_3_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartLineRule());
-	        }
-       		setWithLastConsumed($current, "cursor", true, "cursor");
-	    }
-
-)
-)(
-(
-		lv_zoom_7_0=	'zoom' 
-    {
-        newLeafNode(lv_zoom_7_0, grammarAccess.getChartLineAccess().getZoomZoomKeyword_2_3_1_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartLineRule());
-	        }
-       		setWithLastConsumed($current, "zoom", true, "zoom");
-	    }
-
-)
-)?(
-(
-		lv_tooltip_8_0=	'tooltip' 
-    {
-        newLeafNode(lv_tooltip_8_0, grammarAccess.getChartLineAccess().getTooltipTooltipKeyword_2_3_2_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartLineRule());
-	        }
-       		setWithLastConsumed($current, "tooltip", true, "tooltip");
-	    }
-
-)
-)?))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4);
+					}
+								({true}?=>((
+									lv_fillToZero_9_0='fillZero'
+									{
+										newLeafNode(lv_fillToZero_9_0, grammarAccess.getChartLineAccess().getFillToZeroFillZeroKeyword_2_4_0());
+									}
+									{
+										if ($current==null) {
+											$current = createModelElement(grammarAccess.getChartLineRule());
+										}
+										setWithLastConsumed($current, "fillToZero", true, "fillZero");
+									}
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4);
-	 				}
-					({true}?=>(
-(
-		lv_fillToZero_9_0=	'fillZero' 
-    {
-        newLeafNode(lv_fillToZero_9_0, grammarAccess.getChartLineAccess().getFillToZeroFillZeroKeyword_2_4_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartLineRule());
-	        }
-       		setWithLastConsumed($current, "fillToZero", true, "fillZero");
-	    }
-
-)
-))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5);
+					}
+								({true}?=>((
+									lv_fillArea_10_0='filled'
+									{
+										newLeafNode(lv_fillArea_10_0, grammarAccess.getChartLineAccess().getFillAreaFilledKeyword_2_5_0());
+									}
+									{
+										if ($current==null) {
+											$current = createModelElement(grammarAccess.getChartLineRule());
+										}
+										setWithLastConsumed($current, "fillArea", true, "filled");
+									}
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5);
-	 				}
-					({true}?=>(
-(
-		lv_fillArea_10_0=	'filled' 
-    {
-        newLeafNode(lv_fillArea_10_0, grammarAccess.getChartLineAccess().getFillAreaFilledKeyword_2_5_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartLineRule());
-	        }
-       		setWithLastConsumed($current, "fillArea", true, "filled");
-	    }
-
-)
-))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
-	 				}
- 				)
-			)  
-
-		)*	
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+					}
+				)
+			)
+					)*
+				)
+			)
+				{ 
+				  getUnorderedGroupHelper().leave(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
+				}
+		)
 	)
-)
-	{ 
-	  getUnorderedGroupHelper().leave(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
-	}
-
-))
 ;
 
-
-
-
-
 // Entry rule entryRuleChartPie
-entryRuleChartPie returns [EObject current=null] 
-	:
+entryRuleChartPie returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getChartPieRule()); }
-	 iv_ruleChartPie=ruleChartPie 
-	 { $current=$iv_ruleChartPie.current; } 
-	 EOF 
-;
+	iv_ruleChartPie=ruleChartPie
+	{ $current=$iv_ruleChartPie.current; }
+	EOF;
 
 // Rule ChartPie
-ruleChartPie returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getChartPieAccess().getChartPieAction_0(),
-            $current);
-    }
-)	otherlv_1='pie' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getChartPieAccess().getPieKeyword_1());
-    }
-(
-(
-		lv_empty_2_0=	'empty' 
-    {
-        newLeafNode(lv_empty_2_0, grammarAccess.getChartPieAccess().getEmptyEmptyKeyword_2_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartPieRule());
-	        }
-       		setWithLastConsumed($current, "empty", true, "empty");
-	    }
-
-)
-)?)
+ruleChartPie returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getChartPieAccess().getChartPieAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='pie'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getChartPieAccess().getPieKeyword_1());
+		}
+		(
+			(
+				lv_empty_2_0='empty'
+				{
+					newLeafNode(lv_empty_2_0, grammarAccess.getChartPieAccess().getEmptyEmptyKeyword_2_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getChartPieRule());
+					}
+					setWithLastConsumed($current, "empty", true, "empty");
+				}
+			)
+		)?
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleChartDonut
-entryRuleChartDonut returns [EObject current=null] 
-	:
+entryRuleChartDonut returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getChartDonutRule()); }
-	 iv_ruleChartDonut=ruleChartDonut 
-	 { $current=$iv_ruleChartDonut.current; } 
-	 EOF 
-;
+	iv_ruleChartDonut=ruleChartDonut
+	{ $current=$iv_ruleChartDonut.current; }
+	EOF;
 
 // Rule ChartDonut
-ruleChartDonut returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getChartDonutAccess().getChartDonutAction_0(),
-            $current);
-    }
-)	otherlv_1='donut' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getChartDonutAccess().getDonutKeyword_1());
-    }
-)
+ruleChartDonut returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getChartDonutAccess().getChartDonutAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='donut'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getChartDonutAccess().getDonutKeyword_1());
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleChartBubble
-entryRuleChartBubble returns [EObject current=null] 
-	:
+entryRuleChartBubble returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getChartBubbleRule()); }
-	 iv_ruleChartBubble=ruleChartBubble 
-	 { $current=$iv_ruleChartBubble.current; } 
-	 EOF 
-;
+	iv_ruleChartBubble=ruleChartBubble
+	{ $current=$iv_ruleChartBubble.current; }
+	EOF;
 
 // Rule ChartBubble
-ruleChartBubble returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getChartBubbleAccess().getChartBubbleAction_0(),
-            $current);
-    }
-)	otherlv_1='bubble' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getChartBubbleAccess().getBubbleKeyword_1());
-    }
-(
-
-(
-	{ 
-	  getUnorderedGroupHelper().enter(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
-	}
+ruleChartBubble returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
 	(
 		(
-
-			( 
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getChartBubbleAccess().getChartBubbleAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='bubble'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getChartBubbleAccess().getBubbleKeyword_1());
+		}
+		(
+			(
+				{ 
+				  getUnorderedGroupHelper().enter(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
+				}
+				(
+					(
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0);
+					}
+								({true}?=>((
+									(
+										lv_multiplier_3_0='multiplier'
+										{
+											newLeafNode(lv_multiplier_3_0, grammarAccess.getChartBubbleAccess().getMultiplierMultiplierKeyword_2_0_0_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getChartBubbleRule());
+											}
+											setWithLastConsumed($current, "multiplier", true, "multiplier");
+										}
+									)
+								)
+								(
+									(
+										{
+											newCompositeNode(grammarAccess.getChartBubbleAccess().getMultiplierValueNumberParserRuleCall_2_0_1_0());
+										}
+										lv_multiplierValue_4_0=ruleNumber
+										{
+											if ($current==null) {
+												$current = createModelElementForParent(grammarAccess.getChartBubbleRule());
+											}
+											set(
+												$current,
+												"multiplierValue",
+												lv_multiplierValue_4_0,
+												"org.eclipse.xtext.xbase.Xbase.Number");
+											afterParserOrEnumRuleCall();
+										}
+									)
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0);
-	 				}
-					({true}?=>((
-(
-		lv_multiplier_3_0=	'multiplier' 
-    {
-        newLeafNode(lv_multiplier_3_0, grammarAccess.getChartBubbleAccess().getMultiplierMultiplierKeyword_2_0_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartBubbleRule());
-	        }
-       		setWithLastConsumed($current, "multiplier", true, "multiplier");
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getChartBubbleAccess().getMultiplierValueNumberParserRuleCall_2_0_1_0()); 
-	    }
-		lv_multiplierValue_4_0=ruleNumber		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getChartBubbleRule());
-	        }
-       		set(
-       			$current, 
-       			"multiplierValue",
-        		lv_multiplierValue_4_0, 
-        		"Number");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1);
+					}
+								({true}?=>((
+									(
+										lv_gradient_5_0='gradient'
+										{
+											newLeafNode(lv_gradient_5_0, grammarAccess.getChartBubbleAccess().getGradientGradientKeyword_2_1_0_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getChartBubbleRule());
+											}
+											setWithLastConsumed($current, "gradient", true, "gradient");
+										}
+									)
+								)
+								    |
+								(
+									(
+										lv_transparent_6_0='transparent'
+										{
+											newLeafNode(lv_transparent_6_0, grammarAccess.getChartBubbleAccess().getTransparentTransparentKeyword_2_1_1_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getChartBubbleRule());
+											}
+											setWithLastConsumed($current, "transparent", true, "transparent");
+										}
+									)
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1);
-	 				}
-					({true}?=>((
-(
-		lv_gradient_5_0=	'gradient' 
-    {
-        newLeafNode(lv_gradient_5_0, grammarAccess.getChartBubbleAccess().getGradientGradientKeyword_2_1_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartBubbleRule());
-	        }
-       		setWithLastConsumed($current, "gradient", true, "gradient");
-	    }
-
-)
-)
-    |(
-(
-		lv_transparent_6_0=	'transparent' 
-    {
-        newLeafNode(lv_transparent_6_0, grammarAccess.getChartBubbleAccess().getTransparentTransparentKeyword_2_1_1_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartBubbleRule());
-	        }
-       		setWithLastConsumed($current, "transparent", true, "transparent");
-	    }
-
-)
-)))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
-	 				}
- 				)
-			)  
-
-		)+
-	  	{getUnorderedGroupHelper().canLeave(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2())}?	
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
+					}
+				)
+			)
+					)+
+					{getUnorderedGroupHelper().canLeave(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2())}?
+				)
+			)
+				{ 
+				  getUnorderedGroupHelper().leave(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
+				}
+		)?
 	)
-)
-	{ 
-	  getUnorderedGroupHelper().leave(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
-	}
-
-)?)
 ;
 
-
-
-
-
 // Entry rule entryRuleChartGauge
-entryRuleChartGauge returns [EObject current=null] 
-	:
+entryRuleChartGauge returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getChartGaugeRule()); }
-	 iv_ruleChartGauge=ruleChartGauge 
-	 { $current=$iv_ruleChartGauge.current; } 
-	 EOF 
-;
+	iv_ruleChartGauge=ruleChartGauge
+	{ $current=$iv_ruleChartGauge.current; }
+	EOF;
 
 // Rule ChartGauge
-ruleChartGauge returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getChartGaugeAccess().getChartGaugeAction_0(),
-            $current);
-    }
-)	otherlv_1='gauge' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getChartGaugeAccess().getGaugeKeyword_1());
-    }
-(
-
-(
-	{ 
-	  getUnorderedGroupHelper().enter(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
-	}
+ruleChartGauge returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
 	(
 		(
-
-			( 
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getChartGaugeAccess().getChartGaugeAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='gauge'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getChartGaugeAccess().getGaugeKeyword_1());
+		}
+		(
+			(
+				{ 
+				  getUnorderedGroupHelper().enter(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+				}
+				(
+					(
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0);
+					}
+								({true}?=>((
+									(
+										lv_labeled_3_0='label'
+										{
+											newLeafNode(lv_labeled_3_0, grammarAccess.getChartGaugeAccess().getLabeledLabelKeyword_2_0_0_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getChartGaugeRule());
+											}
+											setWithLastConsumed($current, "labeled", true, "label");
+										}
+									)
+								)
+								(
+									(
+										lv_labelValue_4_0=RULE_STRING
+										{
+											newLeafNode(lv_labelValue_4_0, grammarAccess.getChartGaugeAccess().getLabelValueSTRINGTerminalRuleCall_2_0_1_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getChartGaugeRule());
+											}
+											setWithLastConsumed(
+												$current,
+												"labelValue",
+												lv_labelValue_4_0,
+												"org.eclipse.xtext.xbase.Xtype.STRING");
+										}
+									)
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0);
-	 				}
-					({true}?=>((
-(
-		lv_labeled_3_0=	'label' 
-    {
-        newLeafNode(lv_labeled_3_0, grammarAccess.getChartGaugeAccess().getLabeledLabelKeyword_2_0_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartGaugeRule());
-	        }
-       		setWithLastConsumed($current, "labeled", true, "label");
-	    }
-
-)
-)(
-(
-		lv_labelValue_4_0=RULE_STRING
-		{
-			newLeafNode(lv_labelValue_4_0, grammarAccess.getChartGaugeAccess().getLabelValueSTRINGTerminalRuleCall_2_0_1_0()); 
-		}
-		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartGaugeRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"labelValue",
-        		lv_labelValue_4_0, 
-        		"STRING");
-	    }
-
-)
-)))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1);
+					}
+								({true}?=>((
+									(
+										lv_hasTicks_5_0='hasTicks'
+										{
+											newLeafNode(lv_hasTicks_5_0, grammarAccess.getChartGaugeAccess().getHasTicksHasTicksKeyword_2_1_0_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getChartGaugeRule());
+											}
+											setWithLastConsumed($current, "hasTicks", true, "hasTicks");
+										}
+									)
+								)
+								otherlv_6='minimum'
+								{
+									newLeafNode(otherlv_6, grammarAccess.getChartGaugeAccess().getMinimumKeyword_2_1_1());
+								}
+								(
+									(
+										lv_minValue_7_0=RULE_INT
+										{
+											newLeafNode(lv_minValue_7_0, grammarAccess.getChartGaugeAccess().getMinValueINTTerminalRuleCall_2_1_2_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getChartGaugeRule());
+											}
+											setWithLastConsumed(
+												$current,
+												"minValue",
+												lv_minValue_7_0,
+												"org.eclipse.xtext.xbase.Xbase.INT");
+										}
+									)
+								)
+								otherlv_8='maximum'
+								{
+									newLeafNode(otherlv_8, grammarAccess.getChartGaugeAccess().getMaximumKeyword_2_1_3());
+								}
+								(
+									(
+										lv_maxValue_9_0=RULE_INT
+										{
+											newLeafNode(lv_maxValue_9_0, grammarAccess.getChartGaugeAccess().getMaxValueINTTerminalRuleCall_2_1_4_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getChartGaugeRule());
+											}
+											setWithLastConsumed(
+												$current,
+												"maxValue",
+												lv_maxValue_9_0,
+												"org.eclipse.xtext.xbase.Xbase.INT");
+										}
+									)
+								)
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1);
-	 				}
-					({true}?=>((
-(
-		lv_hasTicks_5_0=	'hasTicks' 
-    {
-        newLeafNode(lv_hasTicks_5_0, grammarAccess.getChartGaugeAccess().getHasTicksHasTicksKeyword_2_1_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartGaugeRule());
-	        }
-       		setWithLastConsumed($current, "hasTicks", true, "hasTicks");
-	    }
-
-)
-)	otherlv_6='minimum' 
-    {
-    	newLeafNode(otherlv_6, grammarAccess.getChartGaugeAccess().getMinimumKeyword_2_1_1());
-    }
-(
-(
-		lv_minValue_7_0=RULE_INT
-		{
-			newLeafNode(lv_minValue_7_0, grammarAccess.getChartGaugeAccess().getMinValueINTTerminalRuleCall_2_1_2_0()); 
-		}
-		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartGaugeRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"minValue",
-        		lv_minValue_7_0, 
-        		"INT");
-	    }
-
-)
-)	otherlv_8='maximum' 
-    {
-    	newLeafNode(otherlv_8, grammarAccess.getChartGaugeAccess().getMaximumKeyword_2_1_3());
-    }
-(
-(
-		lv_maxValue_9_0=RULE_INT
-		{
-			newLeafNode(lv_maxValue_9_0, grammarAccess.getChartGaugeAccess().getMaxValueINTTerminalRuleCall_2_1_4_0()); 
-		}
-		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartGaugeRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"maxValue",
-        		lv_maxValue_9_0, 
-        		"INT");
-	    }
-
-)
-)))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
-	 				}
- 				)
-			)  |
-
-			( 
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+					}
+				)
+			)|
+			(
 				{getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2)}?=>(
+					{
+						getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2);
+					}
+								({true}?=>((
+									(
+										lv_hasIntervals_10_0='intervals'
+										{
+											newLeafNode(lv_hasIntervals_10_0, grammarAccess.getChartGaugeAccess().getHasIntervalsIntervalsKeyword_2_2_0_0());
+										}
+										{
+											if ($current==null) {
+												$current = createModelElement(grammarAccess.getChartGaugeRule());
+											}
+											setWithLastConsumed($current, "hasIntervals", true, "intervals");
+										}
+									)
+								)
+								otherlv_11='{'
+								{
+									newLeafNode(otherlv_11, grammarAccess.getChartGaugeAccess().getLeftCurlyBracketKeyword_2_2_1());
+								}
+								(
+									(
+										{
+											newCompositeNode(grammarAccess.getChartGaugeAccess().getIntervalsChartIntervalParserRuleCall_2_2_2_0());
+										}
+										lv_intervals_12_0=ruleChartInterval
+										{
+											if ($current==null) {
+												$current = createModelElementForParent(grammarAccess.getChartGaugeRule());
+											}
+											add(
+												$current,
+												"intervals",
+												lv_intervals_12_0,
+												"org.eclipse.osbp.xtext.chart.ChartDSL.ChartInterval");
+											afterParserOrEnumRuleCall();
+										}
+									)
+								)*
+								otherlv_13='}'
+								{
+									newLeafNode(otherlv_13, grammarAccess.getChartGaugeAccess().getRightCurlyBracketKeyword_2_2_3());
+								}
+								))
 					{ 
-	 				  getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2);
-	 				}
-					({true}?=>((
-(
-		lv_hasIntervals_10_0=	'intervals' 
-    {
-        newLeafNode(lv_hasIntervals_10_0, grammarAccess.getChartGaugeAccess().getHasIntervalsIntervalsKeyword_2_2_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartGaugeRule());
-	        }
-       		setWithLastConsumed($current, "hasIntervals", true, "intervals");
-	    }
-
-)
-)	otherlv_11='{' 
-    {
-    	newLeafNode(otherlv_11, grammarAccess.getChartGaugeAccess().getLeftCurlyBracketKeyword_2_2_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getChartGaugeAccess().getIntervalsChartIntervalParserRuleCall_2_2_2_0()); 
-	    }
-		lv_intervals_12_0=ruleChartInterval		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getChartGaugeRule());
-	        }
-       		add(
-       			$current, 
-       			"intervals",
-        		lv_intervals_12_0, 
-        		"ChartInterval");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*	otherlv_13='}' 
-    {
-    	newLeafNode(otherlv_13, grammarAccess.getChartGaugeAccess().getRightCurlyBracketKeyword_2_2_3());
-    }
-))
-					{ 
-	 				  getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
-	 				}
- 				)
-			)  
-
-		)*	
+						getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+					}
+				)
+			)
+					)*
+				)
+			)
+				{ 
+				  getUnorderedGroupHelper().leave(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
+				}
+		)
 	)
-)
-	{ 
-	  getUnorderedGroupHelper().leave(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
-	}
-
-))
 ;
 
-
-
-
-
 // Entry rule entryRuleChartTree
-entryRuleChartTree returns [EObject current=null] 
-	:
+entryRuleChartTree returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getChartTreeRule()); }
-	 iv_ruleChartTree=ruleChartTree 
-	 { $current=$iv_ruleChartTree.current; } 
-	 EOF 
-;
+	iv_ruleChartTree=ruleChartTree
+	{ $current=$iv_ruleChartTree.current; }
+	EOF;
 
 // Rule ChartTree
-ruleChartTree returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getChartTreeAccess().getChartTreeAction_0(),
-            $current);
-    }
-)	otherlv_1='tree' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getChartTreeAccess().getTreeKeyword_1());
-    }
-((
-(
-		lv_map_2_0=	'map' 
-    {
-        newLeafNode(lv_map_2_0, grammarAccess.getChartTreeAccess().getMapMapKeyword_2_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartTreeRule());
-	        }
-       		setWithLastConsumed($current, "map", true, "map");
-	    }
-
-)
-)
-    |(
-(
-		lv_collapsible_3_0=	'collapsible' 
-    {
-        newLeafNode(lv_collapsible_3_0, grammarAccess.getChartTreeAccess().getCollapsibleCollapsibleKeyword_2_1_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartTreeRule());
-	        }
-       		setWithLastConsumed($current, "collapsible", true, "collapsible");
-	    }
-
-)
-)))
+ruleChartTree returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getChartTreeAccess().getChartTreeAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='tree'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getChartTreeAccess().getTreeKeyword_1());
+		}
+		(
+			(
+				(
+					lv_map_2_0='map'
+					{
+						newLeafNode(lv_map_2_0, grammarAccess.getChartTreeAccess().getMapMapKeyword_2_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getChartTreeRule());
+						}
+						setWithLastConsumed($current, "map", true, "map");
+					}
+				)
+			)
+			    |
+			(
+				(
+					lv_collapsible_3_0='collapsible'
+					{
+						newLeafNode(lv_collapsible_3_0, grammarAccess.getChartTreeAccess().getCollapsibleCollapsibleKeyword_2_1_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getChartTreeRule());
+						}
+						setWithLastConsumed($current, "collapsible", true, "collapsible");
+					}
+				)
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleChartInterval
-entryRuleChartInterval returns [EObject current=null] 
-	:
+entryRuleChartInterval returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getChartIntervalRule()); }
-	 iv_ruleChartInterval=ruleChartInterval 
-	 { $current=$iv_ruleChartInterval.current; } 
-	 EOF 
-;
+	iv_ruleChartInterval=ruleChartInterval
+	{ $current=$iv_ruleChartInterval.current; }
+	EOF;
 
 // Rule ChartInterval
-ruleChartInterval returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-
-    { 
-        newCompositeNode(grammarAccess.getChartIntervalAccess().getChartNumberIntervalParserRuleCall()); 
-    }
-    this_ChartNumberInterval_0=ruleChartNumberInterval
-    { 
-        $current = $this_ChartNumberInterval_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
+ruleChartInterval returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	{
+		newCompositeNode(grammarAccess.getChartIntervalAccess().getChartNumberIntervalParserRuleCall());
+	}
+	this_ChartNumberInterval_0=ruleChartNumberInterval
+	{
+		$current = $this_ChartNumberInterval_0.current;
+		afterParserOrEnumRuleCall();
+	}
 ;
 
-
-
-
-
 // Entry rule entryRuleChartNumberInterval
-entryRuleChartNumberInterval returns [EObject current=null] 
-	:
+entryRuleChartNumberInterval returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getChartNumberIntervalRule()); }
-	 iv_ruleChartNumberInterval=ruleChartNumberInterval 
-	 { $current=$iv_ruleChartNumberInterval.current; } 
-	 EOF 
-;
+	iv_ruleChartNumberInterval=ruleChartNumberInterval
+	{ $current=$iv_ruleChartNumberInterval.current; }
+	EOF;
 
 // Rule ChartNumberInterval
-ruleChartNumberInterval returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-    {
-        $current = forceCreateModelElement(
-            grammarAccess.getChartNumberIntervalAccess().getChartNumberIntervalAction_0(),
-            $current);
-    }
-)	otherlv_1='up to' 
-    {
-    	newLeafNode(otherlv_1, grammarAccess.getChartNumberIntervalAccess().getUpToKeyword_1());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getChartNumberIntervalAccess().getNumberIntervalValueSignedNumberParserRuleCall_2_0()); 
-	    }
-		lv_numberIntervalValue_2_0=ruleSignedNumber		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getChartNumberIntervalRule());
-	        }
-       		set(
-       			$current, 
-       			"numberIntervalValue",
-        		lv_numberIntervalValue_2_0, 
-        		"SignedNumber");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getChartNumberIntervalAccess().getNumberRangeChartRangeElementParserRuleCall_3_0()); 
-	    }
-		lv_numberRange_3_0=ruleChartRangeElement		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getChartNumberIntervalRule());
-	        }
-       		set(
-       			$current, 
-       			"numberRange",
-        		lv_numberRange_3_0, 
-        		"ChartRangeElement");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
+ruleChartNumberInterval returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			{
+				$current = forceCreateModelElement(
+					grammarAccess.getChartNumberIntervalAccess().getChartNumberIntervalAction_0(),
+					$current);
+			}
+		)
+		otherlv_1='upTo'
+		{
+			newLeafNode(otherlv_1, grammarAccess.getChartNumberIntervalAccess().getUpToKeyword_1());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getChartNumberIntervalAccess().getNumberIntervalValueSignedNumberParserRuleCall_2_0());
+				}
+				lv_numberIntervalValue_2_0=ruleSignedNumber
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getChartNumberIntervalRule());
+					}
+					set(
+						$current,
+						"numberIntervalValue",
+						lv_numberIntervalValue_2_0,
+						"org.eclipse.osbp.xtext.chart.ChartDSL.SignedNumber");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getChartNumberIntervalAccess().getNumberRangeChartRangeElementParserRuleCall_3_0());
+				}
+				lv_numberRange_3_0=ruleChartRangeElement
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getChartNumberIntervalRule());
+					}
+					set(
+						$current,
+						"numberRange",
+						lv_numberRange_3_0,
+						"org.eclipse.osbp.xtext.chart.ChartDSL.ChartRangeElement");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleChartDatamart
-entryRuleChartDatamart returns [EObject current=null] 
-	:
+entryRuleChartDatamart returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getChartDatamartRule()); }
-	 iv_ruleChartDatamart=ruleChartDatamart 
-	 { $current=$iv_ruleChartDatamart.current; } 
-	 EOF 
-;
+	iv_ruleChartDatamart=ruleChartDatamart
+	{ $current=$iv_ruleChartDatamart.current; }
+	EOF;
 
 // Rule ChartDatamart
-ruleChartDatamart returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='datamart' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getChartDatamartAccess().getDatamartKeyword_0());
-    }
-(
-(
+ruleChartDatamart returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='datamart'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartDatamartRule());
-	        }
-        }
-	otherlv_1=RULE_ID
-	{
-		newLeafNode(otherlv_1, grammarAccess.getChartDatamartAccess().getDatamartRefDatamartDefinitionCrossReference_1_0()); 
-	}
-
-)
-)	otherlv_2='{' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getChartDatamartAccess().getLeftCurlyBracketKeyword_2());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getChartDatamartAccess().getElementsChartElementParserRuleCall_3_0()); 
-	    }
-		lv_elements_3_0=ruleChartElement		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getChartDatamartRule());
-	        }
-       		add(
-       			$current, 
-       			"elements",
-        		lv_elements_3_0, 
-        		"ChartElement");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)*	otherlv_4='}' 
-    {
-    	newLeafNode(otherlv_4, grammarAccess.getChartDatamartAccess().getRightCurlyBracketKeyword_4());
-    }
-)
+			newLeafNode(otherlv_0, grammarAccess.getChartDatamartAccess().getDatamartKeyword_0());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getChartDatamartRule());
+					}
+				}
+				otherlv_1=RULE_ID
+				{
+					newLeafNode(otherlv_1, grammarAccess.getChartDatamartAccess().getDatamartRefDatamartDefinitionCrossReference_1_0());
+				}
+			)
+		)
+		otherlv_2='{'
+		{
+			newLeafNode(otherlv_2, grammarAccess.getChartDatamartAccess().getLeftCurlyBracketKeyword_2());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getChartDatamartAccess().getElementsChartElementParserRuleCall_3_0());
+				}
+				lv_elements_3_0=ruleChartElement
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getChartDatamartRule());
+					}
+					add(
+						$current,
+						"elements",
+						lv_elements_3_0,
+						"org.eclipse.osbp.xtext.chart.ChartDSL.ChartElement");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)*
+		otherlv_4='}'
+		{
+			newLeafNode(otherlv_4, grammarAccess.getChartDatamartAccess().getRightCurlyBracketKeyword_4());
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleChartElement
-entryRuleChartElement returns [EObject current=null] 
-	:
+entryRuleChartElement returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getChartElementRule()); }
-	 iv_ruleChartElement=ruleChartElement 
-	 { $current=$iv_ruleChartElement.current; } 
-	 EOF 
-;
+	iv_ruleChartElement=ruleChartElement
+	{ $current=$iv_ruleChartElement.current; }
+	EOF;
 
 // Rule ChartElement
-ruleChartElement returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getChartElementAccess().getChartAxisParserRuleCall_0()); 
-    }
-    this_ChartAxis_0=ruleChartAxis
-    { 
-        $current = $this_ChartAxis_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getChartElementAccess().getChartLegendParserRuleCall_1()); 
-    }
-    this_ChartLegend_1=ruleChartLegend
-    { 
-        $current = $this_ChartLegend_1.current; 
-        afterParserOrEnumRuleCall();
-    }
-
-    |
-    { 
-        newCompositeNode(grammarAccess.getChartElementAccess().getChartHighlighterParserRuleCall_2()); 
-    }
-    this_ChartHighlighter_2=ruleChartHighlighter
-    { 
-        $current = $this_ChartHighlighter_2.current; 
-        afterParserOrEnumRuleCall();
-    }
-)
+ruleChartElement returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		{
+			newCompositeNode(grammarAccess.getChartElementAccess().getChartAxisParserRuleCall_0());
+		}
+		this_ChartAxis_0=ruleChartAxis
+		{
+			$current = $this_ChartAxis_0.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getChartElementAccess().getChartLegendParserRuleCall_1());
+		}
+		this_ChartLegend_1=ruleChartLegend
+		{
+			$current = $this_ChartLegend_1.current;
+			afterParserOrEnumRuleCall();
+		}
+		    |
+		{
+			newCompositeNode(grammarAccess.getChartElementAccess().getChartHighlighterParserRuleCall_2());
+		}
+		this_ChartHighlighter_2=ruleChartHighlighter
+		{
+			$current = $this_ChartHighlighter_2.current;
+			afterParserOrEnumRuleCall();
+		}
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleChartLegend
-entryRuleChartLegend returns [EObject current=null] 
-	:
+entryRuleChartLegend returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getChartLegendRule()); }
-	 iv_ruleChartLegend=ruleChartLegend 
-	 { $current=$iv_ruleChartLegend.current; } 
-	 EOF 
-;
+	iv_ruleChartLegend=ruleChartLegend
+	{ $current=$iv_ruleChartLegend.current; }
+	EOF;
 
 // Rule ChartLegend
-ruleChartLegend returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='legend' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getChartLegendAccess().getLegendKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getChartLegendAccess().getPlacementLegendPlacementEnumEnumRuleCall_1_0()); 
-	    }
-		lv_placement_1_0=ruleLegendPlacementEnum		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getChartLegendRule());
-	        }
-       		set(
-       			$current, 
-       			"placement",
-        		lv_placement_1_0, 
-        		"LegendPlacementEnum");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)((
-(
-		lv_toggle_2_0=	'toggle' 
-    {
-        newLeafNode(lv_toggle_2_0, grammarAccess.getChartLegendAccess().getToggleToggleKeyword_2_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartLegendRule());
-	        }
-       		setWithLastConsumed($current, "toggle", true, "toggle");
-	    }
-
-)
-)(
-(
-		lv_replot_3_0=	'replot' 
-    {
-        newLeafNode(lv_replot_3_0, grammarAccess.getChartLegendAccess().getReplotReplotKeyword_2_1_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartLegendRule());
-	        }
-       		setWithLastConsumed($current, "replot", true, "replot");
-	    }
-
-)
-)(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getChartLegendAccess().getToggleTypeToggleTypeEnumEnumRuleCall_2_2_0()); 
-	    }
-		lv_toggleType_4_0=ruleToggleTypeEnum		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getChartLegendRule());
-	        }
-       		set(
-       			$current, 
-       			"toggleType",
-        		lv_toggleType_4_0, 
-        		"ToggleTypeEnum");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?)
+ruleChartLegend returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='legend'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getChartLegendAccess().getLegendKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getChartLegendAccess().getPlacementLegendPlacementEnumEnumRuleCall_1_0());
+				}
+				lv_placement_1_0=ruleLegendPlacementEnum
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getChartLegendRule());
+					}
+					set(
+						$current,
+						"placement",
+						lv_placement_1_0,
+						"org.eclipse.osbp.xtext.chart.ChartDSL.LegendPlacementEnum");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				(
+					lv_toggle_2_0='toggle'
+					{
+						newLeafNode(lv_toggle_2_0, grammarAccess.getChartLegendAccess().getToggleToggleKeyword_2_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getChartLegendRule());
+						}
+						setWithLastConsumed($current, "toggle", true, "toggle");
+					}
+				)
+			)
+			(
+				(
+					lv_replot_3_0='replot'
+					{
+						newLeafNode(lv_replot_3_0, grammarAccess.getChartLegendAccess().getReplotReplotKeyword_2_1_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getChartLegendRule());
+						}
+						setWithLastConsumed($current, "replot", true, "replot");
+					}
+				)
+			)
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getChartLegendAccess().getToggleTypeToggleTypeEnumEnumRuleCall_2_2_0());
+					}
+					lv_toggleType_4_0=ruleToggleTypeEnum
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getChartLegendRule());
+						}
+						set(
+							$current,
+							"toggleType",
+							lv_toggleType_4_0,
+							"org.eclipse.osbp.xtext.chart.ChartDSL.ToggleTypeEnum");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleChartHighlighter
-entryRuleChartHighlighter returns [EObject current=null] 
-	:
+entryRuleChartHighlighter returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getChartHighlighterRule()); }
-	 iv_ruleChartHighlighter=ruleChartHighlighter 
-	 { $current=$iv_ruleChartHighlighter.current; } 
-	 EOF 
-;
+	iv_ruleChartHighlighter=ruleChartHighlighter
+	{ $current=$iv_ruleChartHighlighter.current; }
+	EOF;
 
 // Rule ChartHighlighter
-ruleChartHighlighter returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='tooltip' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getChartHighlighterAccess().getTooltipKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getChartHighlighterAccess().getLocationTooltipLocationEnumEnumRuleCall_1_0()); 
-	    }
-		lv_location_1_0=ruleTooltipLocationEnum		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getChartHighlighterRule());
-	        }
-       		set(
-       			$current, 
-       			"location",
-        		lv_location_1_0, 
-        		"TooltipLocationEnum");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)((
-(
-		lv_tooltipAlways_2_0=	'always' 
-    {
-        newLeafNode(lv_tooltipAlways_2_0, grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAlwaysKeyword_2_0_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartHighlighterRule());
-	        }
-       		setWithLastConsumed($current, "tooltipAlways", true, "always");
-	    }
-
-)
-)?(
-(
-		lv_insideChart_3_0=	'inside' 
-    {
-        newLeafNode(lv_insideChart_3_0, grammarAccess.getChartHighlighterAccess().getInsideChartInsideKeyword_2_1_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartHighlighterRule());
-	        }
-       		setWithLastConsumed($current, "insideChart", true, "inside");
-	    }
-
-)
-)?))
+ruleChartHighlighter returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='tooltip'
+		{
+			newLeafNode(otherlv_0, grammarAccess.getChartHighlighterAccess().getTooltipKeyword_0());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getChartHighlighterAccess().getLocationTooltipLocationEnumEnumRuleCall_1_0());
+				}
+				lv_location_1_0=ruleTooltipLocationEnum
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getChartHighlighterRule());
+					}
+					set(
+						$current,
+						"location",
+						lv_location_1_0,
+						"org.eclipse.osbp.xtext.chart.ChartDSL.TooltipLocationEnum");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				(
+					lv_tooltipAlways_2_0='always'
+					{
+						newLeafNode(lv_tooltipAlways_2_0, grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAlwaysKeyword_2_0_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getChartHighlighterRule());
+						}
+						setWithLastConsumed($current, "tooltipAlways", true, "always");
+					}
+				)
+			)?
+			(
+				(
+					lv_insideChart_3_0='inside'
+					{
+						newLeafNode(lv_insideChart_3_0, grammarAccess.getChartHighlighterAccess().getInsideChartInsideKeyword_2_1_0());
+					}
+					{
+						if ($current==null) {
+							$current = createModelElement(grammarAccess.getChartHighlighterRule());
+						}
+						setWithLastConsumed($current, "insideChart", true, "inside");
+					}
+				)
+			)?
+		)
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleChartAxis
-entryRuleChartAxis returns [EObject current=null] 
-	:
+entryRuleChartAxis returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getChartAxisRule()); }
-	 iv_ruleChartAxis=ruleChartAxis 
-	 { $current=$iv_ruleChartAxis.current; } 
-	 EOF 
-;
+	iv_ruleChartAxis=ruleChartAxis
+	{ $current=$iv_ruleChartAxis.current; }
+	EOF;
 
 // Rule ChartAxis
-ruleChartAxis returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='axis' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getChartAxisAccess().getAxisKeyword_0());
-    }
-(
-(
+ruleChartAxis returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='axis'
 		{
-			if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartAxisRule());
-	        }
-        }
-	otherlv_1=RULE_ID
-	{
-		newLeafNode(otherlv_1, grammarAccess.getChartAxisAccess().getAxisDatamartAxisCrossReference_1_0()); 
-	}
-
-)
-)	otherlv_2='renders' 
-    {
-    	newLeafNode(otherlv_2, grammarAccess.getChartAxisAccess().getRendersKeyword_2());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getChartAxisAccess().getRenderTypeRenderTypeEnumEnumRuleCall_3_0()); 
-	    }
-		lv_renderType_3_0=ruleRenderTypeEnum		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getChartAxisRule());
-	        }
-       		set(
-       			$current, 
-       			"renderType",
-        		lv_renderType_3_0, 
-        		"RenderTypeEnum");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-)(
-(
-		lv_shortLabel_4_0=	'shortLabel' 
-    {
-        newLeafNode(lv_shortLabel_4_0, grammarAccess.getChartAxisAccess().getShortLabelShortLabelKeyword_4_0());
-    }
- 
-	    {
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartAxisRule());
-	        }
-       		setWithLastConsumed($current, "shortLabel", true, "shortLabel");
-	    }
-
-)
-)?(	otherlv_5='tickangle' 
-    {
-    	newLeafNode(otherlv_5, grammarAccess.getChartAxisAccess().getTickangleKeyword_5_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getChartAxisAccess().getAngleSignedNumberParserRuleCall_5_1_0()); 
-	    }
-		lv_angle_6_0=ruleSignedNumber		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getChartAxisRule());
-	        }
-       		set(
-       			$current, 
-       			"angle",
-        		lv_angle_6_0, 
-        		"SignedNumber");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))?)
+			newLeafNode(otherlv_0, grammarAccess.getChartAxisAccess().getAxisKeyword_0());
+		}
+		(
+			(
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getChartAxisRule());
+					}
+				}
+				otherlv_1=RULE_ID
+				{
+					newLeafNode(otherlv_1, grammarAccess.getChartAxisAccess().getAxisDatamartAxisCrossReference_1_0());
+				}
+			)
+		)
+		otherlv_2='renders'
+		{
+			newLeafNode(otherlv_2, grammarAccess.getChartAxisAccess().getRendersKeyword_2());
+		}
+		(
+			(
+				{
+					newCompositeNode(grammarAccess.getChartAxisAccess().getRenderTypeRenderTypeEnumEnumRuleCall_3_0());
+				}
+				lv_renderType_3_0=ruleRenderTypeEnum
+				{
+					if ($current==null) {
+						$current = createModelElementForParent(grammarAccess.getChartAxisRule());
+					}
+					set(
+						$current,
+						"renderType",
+						lv_renderType_3_0,
+						"org.eclipse.osbp.xtext.chart.ChartDSL.RenderTypeEnum");
+					afterParserOrEnumRuleCall();
+				}
+			)
+		)
+		(
+			(
+				lv_shortLabel_4_0='shortLabel'
+				{
+					newLeafNode(lv_shortLabel_4_0, grammarAccess.getChartAxisAccess().getShortLabelShortLabelKeyword_4_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getChartAxisRule());
+					}
+					setWithLastConsumed($current, "shortLabel", true, "shortLabel");
+				}
+			)
+		)?
+		(
+			otherlv_5='angle'
+			{
+				newLeafNode(otherlv_5, grammarAccess.getChartAxisAccess().getAngleKeyword_5_0());
+			}
+			(
+				(
+					{
+						newCompositeNode(grammarAccess.getChartAxisAccess().getAngleSignedNumberParserRuleCall_5_1_0());
+					}
+					lv_angle_6_0=ruleSignedNumber
+					{
+						if ($current==null) {
+							$current = createModelElementForParent(grammarAccess.getChartAxisRule());
+						}
+						set(
+							$current,
+							"angle",
+							lv_angle_6_0,
+							"org.eclipse.osbp.xtext.chart.ChartDSL.SignedNumber");
+						afterParserOrEnumRuleCall();
+					}
+				)
+			)
+		)?
+	)
 ;
 
-
-
-
-
 // Entry rule entryRuleChartRangeElement
-entryRuleChartRangeElement returns [EObject current=null] 
-	:
+entryRuleChartRangeElement returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getChartRangeElementRule()); }
-	 iv_ruleChartRangeElement=ruleChartRangeElement 
-	 { $current=$iv_ruleChartRangeElement.current; } 
-	 EOF 
-;
+	iv_ruleChartRangeElement=ruleChartRangeElement
+	{ $current=$iv_ruleChartRangeElement.current; }
+	EOF;
 
 // Rule ChartRangeElement
-ruleChartRangeElement returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-
-    { 
-        newCompositeNode(grammarAccess.getChartRangeElementAccess().getChartSegmentColorParserRuleCall()); 
-    }
-    this_ChartSegmentColor_0=ruleChartSegmentColor
-    { 
-        $current = $this_ChartSegmentColor_0.current; 
-        afterParserOrEnumRuleCall();
-    }
-
+ruleChartRangeElement returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	{
+		newCompositeNode(grammarAccess.getChartRangeElementAccess().getChartSegmentColorParserRuleCall());
+	}
+	this_ChartSegmentColor_0=ruleChartSegmentColor
+	{
+		$current = $this_ChartSegmentColor_0.current;
+		afterParserOrEnumRuleCall();
+	}
 ;
 
-
-
-
-
 // Entry rule entryRuleChartSegmentColor
-entryRuleChartSegmentColor returns [EObject current=null] 
-	:
+entryRuleChartSegmentColor returns [EObject current=null]:
 	{ newCompositeNode(grammarAccess.getChartSegmentColorRule()); }
-	 iv_ruleChartSegmentColor=ruleChartSegmentColor 
-	 { $current=$iv_ruleChartSegmentColor.current; } 
-	 EOF 
-;
+	iv_ruleChartSegmentColor=ruleChartSegmentColor
+	{ $current=$iv_ruleChartSegmentColor.current; }
+	EOF;
 
 // Rule ChartSegmentColor
-ruleChartSegmentColor returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='segmentcolor' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getChartSegmentColorAccess().getSegmentcolorKeyword_0());
-    }
-(
-(
-		lv_rgb_1_0=RULE_STRING
+ruleChartSegmentColor returns [EObject current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		otherlv_0='segmentcolor'
 		{
-			newLeafNode(lv_rgb_1_0, grammarAccess.getChartSegmentColorAccess().getRgbSTRINGTerminalRuleCall_1_0()); 
+			newLeafNode(otherlv_0, grammarAccess.getChartSegmentColorAccess().getSegmentcolorKeyword_0());
 		}
-		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getChartSegmentColorRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"rgb",
-        		lv_rgb_1_0, 
-        		"STRING");
-	    }
-
-)
-))
+		(
+			(
+				lv_rgb_1_0=RULE_STRING
+				{
+					newLeafNode(lv_rgb_1_0, grammarAccess.getChartSegmentColorAccess().getRgbSTRINGTerminalRuleCall_1_0());
+				}
+				{
+					if ($current==null) {
+						$current = createModelElement(grammarAccess.getChartSegmentColorRule());
+					}
+					setWithLastConsumed(
+						$current,
+						"rgb",
+						lv_rgb_1_0,
+						"org.eclipse.xtext.xbase.Xtype.STRING");
+				}
+			)
+		)
+	)
 ;
 
-
-
-
-
-// Entry rule entryRuleChartImport
-entryRuleChartImport returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getChartImportRule()); }
-	 iv_ruleChartImport=ruleChartImport 
-	 { $current=$iv_ruleChartImport.current; } 
-	 EOF 
-;
-
-// Rule ChartImport
-ruleChartImport returns [EObject current=null] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(	otherlv_0='import' 
-    {
-    	newLeafNode(otherlv_0, grammarAccess.getChartImportAccess().getImportKeyword_0());
-    }
-(
-(
-		{ 
-	        newCompositeNode(grammarAccess.getChartImportAccess().getImportedNamespaceChartQualifiedNameWithWildCardParserRuleCall_1_0()); 
-	    }
-		lv_importedNamespace_1_0=ruleChartQualifiedNameWithWildCard		{
-	        if ($current==null) {
-	            $current = createModelElementForParent(grammarAccess.getChartImportRule());
-	        }
-       		set(
-       			$current, 
-       			"importedNamespace",
-        		lv_importedNamespace_1_0, 
-        		"ChartQualifiedNameWithWildCard");
-	        afterParserOrEnumRuleCall();
-	    }
-
-)
-))
-;
-
-
-
-
-
 // Entry rule entryRuleSignedNumber
-entryRuleSignedNumber returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getSignedNumberRule()); } 
-	 iv_ruleSignedNumber=ruleSignedNumber 
-	 { $current=$iv_ruleSignedNumber.current.getText(); }  
-	 EOF 
-;
+entryRuleSignedNumber returns [String current=null]:
+	{ newCompositeNode(grammarAccess.getSignedNumberRule()); }
+	iv_ruleSignedNumber=ruleSignedNumber
+	{ $current=$iv_ruleSignedNumber.current.getText(); }
+	EOF;
 
 // Rule SignedNumber
-ruleSignedNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-((
-	kw='-' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getSignedNumberAccess().getHyphenMinusKeyword_0()); 
-    }
-)?    this_INT_1=RULE_INT    {
-		$current.merge(this_INT_1);
-    }
-
-    { 
-    newLeafNode(this_INT_1, grammarAccess.getSignedNumberAccess().getINTTerminalRuleCall_1()); 
-    }
-)?
-    ;
-
-
-
-
-
-// Entry rule entryRuleChartQualifiedNameWithWildCard
-entryRuleChartQualifiedNameWithWildCard returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getChartQualifiedNameWithWildCardRule()); } 
-	 iv_ruleChartQualifiedNameWithWildCard=ruleChartQualifiedNameWithWildCard 
-	 { $current=$iv_ruleChartQualifiedNameWithWildCard.current.getText(); }  
-	 EOF 
-;
-
-// Rule ChartQualifiedNameWithWildCard
-ruleChartQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] 
-    @init { enterRule(); 
-    }
-    @after { leaveRule(); }:
-(
-    { 
-        newCompositeNode(grammarAccess.getChartQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
-    }
-    this_QualifiedName_0=ruleQualifiedName    {
-		$current.merge(this_QualifiedName_0);
-    }
-
-    { 
-        afterParserOrEnumRuleCall();
-    }
-(
-	kw='.' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getChartQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); 
-    }
-
-	kw='*' 
-    {
-        $current.merge(kw);
-        newLeafNode(kw, grammarAccess.getChartQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); 
-    }
-)?)
-    ;
-
-
-
-
-
-// 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 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 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());
-    }
-(
-(
+ruleSignedNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			kw='-'
+			{
+				$current.merge(kw);
+				newLeafNode(kw, grammarAccess.getSignedNumberAccess().getHyphenMinusKeyword_0());
+			}
+		)?
+		this_INT_1=RULE_INT
 		{
-			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_INT_1);
 		}
 		{
-	        if ($current==null) {
-	            $current = createModelElement(grammarAccess.getXStringLiteralRule());
-	        }
-       		setWithLastConsumed(
-       			$current, 
-       			"value",
-        		lv_value_1_0, 
-        		"STRING");
-	    }
-
-)
-))
+			newLeafNode(this_INT_1, grammarAccess.getSignedNumberAccess().getINTTerminalRuleCall_1());
+		}
+	)?
 ;
 
+// 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 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 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 
-;
+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();
-    }
-)*)
-    ;
-
-
-
-
+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()); 
-    }
-)
-    ;
-
-
-
-
+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 entryRuleValidID
-entryRuleValidID returns [String current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getValidIDRule()); } 
-	 iv_ruleValidID=ruleValidID 
-	 { $current=$iv_ruleValidID.current.getText(); }  
-	 EOF 
-;
+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    {
+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 entryRuleXImportDeclaration
-entryRuleXImportDeclaration returns [EObject current=null] 
-	:
-	{ newCompositeNode(grammarAccess.getXImportDeclarationRule()); }
-	 iv_ruleXImportDeclaration=ruleXImportDeclaration 
-	 { $current=$iv_ruleXImportDeclaration.current; } 
-	 EOF 
+	}
+	{
+		newLeafNode(this_ID_0, grammarAccess.getValidIDAccess().getIDTerminalRuleCall());
+	}
 ;
 
-// 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 entryRuleXImportSection
+entryRuleXImportSection returns [EObject current=null]:
+	{ newCompositeNode(grammarAccess.getXImportSectionRule()); }
+	iv_ruleXImportSection=ruleXImportSection
+	{ $current=$iv_ruleXImportSection.current; }
+	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 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 LegendPlacementEnum
-ruleLegendPlacementEnum returns [Enumerator current=null] 
-    @init { enterRule(); }
-    @after { leaveRule(); }:
-((	enumLiteral_0='inside' 
-	{
-        $current = grammarAccess.getLegendPlacementEnumAccess().getINSIDEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_0, grammarAccess.getLegendPlacementEnumAccess().getINSIDEEnumLiteralDeclaration_0()); 
-    }
-)
-    |(	enumLiteral_1='inside-grid' 
-	{
-        $current = grammarAccess.getLegendPlacementEnumAccess().getINSIDE_GRIDEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_1, grammarAccess.getLegendPlacementEnumAccess().getINSIDE_GRIDEnumLiteralDeclaration_1()); 
-    }
-)
-    |(	enumLiteral_2='outside' 
-	{
-        $current = grammarAccess.getLegendPlacementEnumAccess().getOUTSIDEEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_2, grammarAccess.getLegendPlacementEnumAccess().getOUTSIDEEnumLiteralDeclaration_2()); 
-    }
-)
-    |(	enumLiteral_3='outside-grid' 
-	{
-        $current = grammarAccess.getLegendPlacementEnumAccess().getOUTSIDE_GRIDEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_3, grammarAccess.getLegendPlacementEnumAccess().getOUTSIDE_GRIDEnumLiteralDeclaration_3()); 
-    }
-));
-
-
+ruleLegendPlacementEnum returns [Enumerator current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			enumLiteral_0='inside'
+			{
+				$current = grammarAccess.getLegendPlacementEnumAccess().getINSIDEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_0, grammarAccess.getLegendPlacementEnumAccess().getINSIDEEnumLiteralDeclaration_0());
+			}
+		)
+		    |
+		(
+			enumLiteral_1='inside-grid'
+			{
+				$current = grammarAccess.getLegendPlacementEnumAccess().getINSIDE_GRIDEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_1, grammarAccess.getLegendPlacementEnumAccess().getINSIDE_GRIDEnumLiteralDeclaration_1());
+			}
+		)
+		    |
+		(
+			enumLiteral_2='outside'
+			{
+				$current = grammarAccess.getLegendPlacementEnumAccess().getOUTSIDEEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_2, grammarAccess.getLegendPlacementEnumAccess().getOUTSIDEEnumLiteralDeclaration_2());
+			}
+		)
+		    |
+		(
+			enumLiteral_3='outside-grid'
+			{
+				$current = grammarAccess.getLegendPlacementEnumAccess().getOUTSIDE_GRIDEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_3, grammarAccess.getLegendPlacementEnumAccess().getOUTSIDE_GRIDEnumLiteralDeclaration_3());
+			}
+		)
+	)
+;
 
 // Rule ToggleTypeEnum
-ruleToggleTypeEnum returns [Enumerator current=null] 
-    @init { enterRule(); }
-    @after { leaveRule(); }:
-((	enumLiteral_0='normal' 
-	{
-        $current = grammarAccess.getToggleTypeEnumAccess().getNORMALEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_0, grammarAccess.getToggleTypeEnumAccess().getNORMALEnumLiteralDeclaration_0()); 
-    }
-)
-    |(	enumLiteral_1='slow' 
-	{
-        $current = grammarAccess.getToggleTypeEnumAccess().getSLOWEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_1, grammarAccess.getToggleTypeEnumAccess().getSLOWEnumLiteralDeclaration_1()); 
-    }
-)
-    |(	enumLiteral_2='fast' 
-	{
-        $current = grammarAccess.getToggleTypeEnumAccess().getFASTEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_2, grammarAccess.getToggleTypeEnumAccess().getFASTEnumLiteralDeclaration_2()); 
-    }
-));
-
-
+ruleToggleTypeEnum returns [Enumerator current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			enumLiteral_0='normal'
+			{
+				$current = grammarAccess.getToggleTypeEnumAccess().getNORMALEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_0, grammarAccess.getToggleTypeEnumAccess().getNORMALEnumLiteralDeclaration_0());
+			}
+		)
+		    |
+		(
+			enumLiteral_1='slow'
+			{
+				$current = grammarAccess.getToggleTypeEnumAccess().getSLOWEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_1, grammarAccess.getToggleTypeEnumAccess().getSLOWEnumLiteralDeclaration_1());
+			}
+		)
+		    |
+		(
+			enumLiteral_2='fast'
+			{
+				$current = grammarAccess.getToggleTypeEnumAccess().getFASTEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_2, grammarAccess.getToggleTypeEnumAccess().getFASTEnumLiteralDeclaration_2());
+			}
+		)
+	)
+;
 
 // Rule TooltipLocationEnum
-ruleTooltipLocationEnum returns [Enumerator current=null] 
-    @init { enterRule(); }
-    @after { leaveRule(); }:
-((	enumLiteral_0='north' 
-	{
-        $current = grammarAccess.getTooltipLocationEnumAccess().getNORTHEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_0, grammarAccess.getTooltipLocationEnumAccess().getNORTHEnumLiteralDeclaration_0()); 
-    }
-)
-    |(	enumLiteral_1='north-east' 
-	{
-        $current = grammarAccess.getTooltipLocationEnumAccess().getNORTH_EASTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_1, grammarAccess.getTooltipLocationEnumAccess().getNORTH_EASTEnumLiteralDeclaration_1()); 
-    }
-)
-    |(	enumLiteral_2='east' 
-	{
-        $current = grammarAccess.getTooltipLocationEnumAccess().getEASTEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_2, grammarAccess.getTooltipLocationEnumAccess().getEASTEnumLiteralDeclaration_2()); 
-    }
-)
-    |(	enumLiteral_3='south-east' 
-	{
-        $current = grammarAccess.getTooltipLocationEnumAccess().getSOUTH_EASTEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_3, grammarAccess.getTooltipLocationEnumAccess().getSOUTH_EASTEnumLiteralDeclaration_3()); 
-    }
-)
-    |(	enumLiteral_4='south' 
-	{
-        $current = grammarAccess.getTooltipLocationEnumAccess().getSOUTHEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_4, grammarAccess.getTooltipLocationEnumAccess().getSOUTHEnumLiteralDeclaration_4()); 
-    }
-)
-    |(	enumLiteral_5='south-west' 
-	{
-        $current = grammarAccess.getTooltipLocationEnumAccess().getSOUTH_WESTEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_5, grammarAccess.getTooltipLocationEnumAccess().getSOUTH_WESTEnumLiteralDeclaration_5()); 
-    }
-)
-    |(	enumLiteral_6='west' 
-	{
-        $current = grammarAccess.getTooltipLocationEnumAccess().getWESTEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_6, grammarAccess.getTooltipLocationEnumAccess().getWESTEnumLiteralDeclaration_6()); 
-    }
-)
-    |(	enumLiteral_7='north-west' 
-	{
-        $current = grammarAccess.getTooltipLocationEnumAccess().getNORTH_WESTEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_7, grammarAccess.getTooltipLocationEnumAccess().getNORTH_WESTEnumLiteralDeclaration_7()); 
-    }
-));
-
-
+ruleTooltipLocationEnum returns [Enumerator current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			enumLiteral_0='north'
+			{
+				$current = grammarAccess.getTooltipLocationEnumAccess().getNORTHEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_0, grammarAccess.getTooltipLocationEnumAccess().getNORTHEnumLiteralDeclaration_0());
+			}
+		)
+		    |
+		(
+			enumLiteral_1='north-east'
+			{
+				$current = grammarAccess.getTooltipLocationEnumAccess().getNORTH_EASTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_1, grammarAccess.getTooltipLocationEnumAccess().getNORTH_EASTEnumLiteralDeclaration_1());
+			}
+		)
+		    |
+		(
+			enumLiteral_2='east'
+			{
+				$current = grammarAccess.getTooltipLocationEnumAccess().getEASTEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_2, grammarAccess.getTooltipLocationEnumAccess().getEASTEnumLiteralDeclaration_2());
+			}
+		)
+		    |
+		(
+			enumLiteral_3='south-east'
+			{
+				$current = grammarAccess.getTooltipLocationEnumAccess().getSOUTH_EASTEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_3, grammarAccess.getTooltipLocationEnumAccess().getSOUTH_EASTEnumLiteralDeclaration_3());
+			}
+		)
+		    |
+		(
+			enumLiteral_4='south'
+			{
+				$current = grammarAccess.getTooltipLocationEnumAccess().getSOUTHEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_4, grammarAccess.getTooltipLocationEnumAccess().getSOUTHEnumLiteralDeclaration_4());
+			}
+		)
+		    |
+		(
+			enumLiteral_5='south-west'
+			{
+				$current = grammarAccess.getTooltipLocationEnumAccess().getSOUTH_WESTEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_5, grammarAccess.getTooltipLocationEnumAccess().getSOUTH_WESTEnumLiteralDeclaration_5());
+			}
+		)
+		    |
+		(
+			enumLiteral_6='west'
+			{
+				$current = grammarAccess.getTooltipLocationEnumAccess().getWESTEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_6, grammarAccess.getTooltipLocationEnumAccess().getWESTEnumLiteralDeclaration_6());
+			}
+		)
+		    |
+		(
+			enumLiteral_7='north-west'
+			{
+				$current = grammarAccess.getTooltipLocationEnumAccess().getNORTH_WESTEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_7, grammarAccess.getTooltipLocationEnumAccess().getNORTH_WESTEnumLiteralDeclaration_7());
+			}
+		)
+	)
+;
 
 // Rule RenderTypeEnum
-ruleRenderTypeEnum returns [Enumerator current=null] 
-    @init { enterRule(); }
-    @after { leaveRule(); }:
-((	enumLiteral_0='category' 
-	{
-        $current = grammarAccess.getRenderTypeEnumAccess().getCATEGORYEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_0, grammarAccess.getRenderTypeEnumAccess().getCATEGORYEnumLiteralDeclaration_0()); 
-    }
-)
-    |(	enumLiteral_1='linear' 
-	{
-        $current = grammarAccess.getRenderTypeEnumAccess().getLINEAREnumLiteralDeclaration_1().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_1, grammarAccess.getRenderTypeEnumAccess().getLINEAREnumLiteralDeclaration_1()); 
-    }
-)
-    |(	enumLiteral_2='date' 
-	{
-        $current = grammarAccess.getRenderTypeEnumAccess().getDATEEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_2, grammarAccess.getRenderTypeEnumAccess().getDATEEnumLiteralDeclaration_2()); 
-    }
-)
-    |(	enumLiteral_3='logarithmic' 
-	{
-        $current = grammarAccess.getRenderTypeEnumAccess().getLOGEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_3, grammarAccess.getRenderTypeEnumAccess().getLOGEnumLiteralDeclaration_3()); 
-    }
-)
-    |(	enumLiteral_4='pyramid' 
-	{
-        $current = grammarAccess.getRenderTypeEnumAccess().getPYRAMIDEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
-        newLeafNode(enumLiteral_4, grammarAccess.getRenderTypeEnumAccess().getPYRAMIDEnumLiteralDeclaration_4()); 
-    }
-));
-
-
+ruleRenderTypeEnum returns [Enumerator current=null]
+@init {
+	enterRule();
+}
+@after {
+	leaveRule();
+}:
+	(
+		(
+			enumLiteral_0='category'
+			{
+				$current = grammarAccess.getRenderTypeEnumAccess().getCATEGORYEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_0, grammarAccess.getRenderTypeEnumAccess().getCATEGORYEnumLiteralDeclaration_0());
+			}
+		)
+		    |
+		(
+			enumLiteral_1='linear'
+			{
+				$current = grammarAccess.getRenderTypeEnumAccess().getLINEAREnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_1, grammarAccess.getRenderTypeEnumAccess().getLINEAREnumLiteralDeclaration_1());
+			}
+		)
+		    |
+		(
+			enumLiteral_2='date'
+			{
+				$current = grammarAccess.getRenderTypeEnumAccess().getDATEEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_2, grammarAccess.getRenderTypeEnumAccess().getDATEEnumLiteralDeclaration_2());
+			}
+		)
+		    |
+		(
+			enumLiteral_3='logarithmic'
+			{
+				$current = grammarAccess.getRenderTypeEnumAccess().getLOGEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_3, grammarAccess.getRenderTypeEnumAccess().getLOGEnumLiteralDeclaration_3());
+			}
+		)
+		    |
+		(
+			enumLiteral_4='pyramid'
+			{
+				$current = grammarAccess.getRenderTypeEnumAccess().getPYRAMIDEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+				newLeafNode(enumLiteral_4, grammarAccess.getRenderTypeEnumAccess().getPYRAMIDEnumLiteralDeclaration_4());
+			}
+		)
+	)
+;
 
 RULE_HEX : ('0x'|'0X') ('0'..'9'|'a'..'f'|'A'..'F'|'_')+ ('#' (('b'|'B') ('i'|'I')|('l'|'L')))?;
 
@@ -8622,5 +9013,3 @@
 RULE_WS : (' '|'\t'|'\r'|'\n')+;
 
 RULE_ANY_OTHER : .;
-
-
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.tokens b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.tokens
index b5e05bc..5e8e610 100644
--- a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.tokens
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.tokens
@@ -1,142 +1,144 @@
-'!'=99
-'!='=85
-'!=='=87
-'#'=71
-'%'=98
-'%='=78
-'&&'=83
-'&'=133
-'('=67
-')'=69
-'*'=65
-'**'=96
-'*='=76
-'+'=95
-'++'=100
-'+='=74
-','=68
+'!'=103
+'!='=89
+'!=='=91
+'#'=75
+'%'=102
+'%='=82
+'&&'=87
+'&'=135
+'('=71
+')'=73
+'*'=67
+'**'=100
+'*='=80
+'+'=99
+'++'=104
+'+='=78
+','=72
 '-'=63
-'--'=101
-'-='=75
-'->'=89
-'.'=64
-'..'=91
-'..<'=90
-'/'=97
-'/='=77
-':'=109
-'::'=102
-';'=105
-'<'=79
-'<>'=93
-'='=70
-'=='=84
-'==='=86
-'=>'=92
-'>'=80
-'>='=81
-'?'=132
-'?.'=103
-'?:'=94
-'@'=66
-'['=72
-']'=73
-'always'=55
-'animated'=23
+'--'=105
+'-='=79
+'->'=93
+'.'=106
+'..'=95
+'..<'=94
+'/'=101
+'/='=81
+':'=113
+'::'=107
+';'=69
+'<'=83
+'<>'=97
+'='=74
+'=='=88
+'==='=90
+'=>'=96
+'>'=84
+'>='=85
+'?'=134
+'?.'=108
+'?:'=98
+'@'=70
+'['=76
+']'=77
+'always'=56
+'angle'=61
+'animated'=24
 'as'=18
-'axis'=57
-'bar'=21
-'bubble'=37
-'case'=111
-'catch'=131
-'category'=148
+'axis'=58
+'bar'=22
+'bubble'=38
+'case'=115
+'catch'=133
+'category'=150
 'chart'=16
-'collapsible'=49
-'cursor'=29
-'datamart'=51
-'date'=150
-'default'=110
-'described by'=17
-'do'=114
-'donut'=36
-'east'=142
-'else'=107
-'empty'=35
-'extends'=117
-'extension'=119
-'false'=122
-'fast'=139
-'fillZero'=32
-'filled'=33
-'finally'=129
-'for'=112
-'gauge'=41
-'gradient'=39
-'hasTicks'=43
-'if'=106
-'import'=62
-'inside'=56
-'inside-grid'=134
-'instanceof'=88
-'intervals'=46
-'label'=42
-'legend'=52
-'line'=26
-'linear'=149
-'logarithmic'=151
-'map'=48
-'maximum'=45
-'minimum'=44
-'multiplier'=38
-'new'=121
-'normal'=137
-'north'=140
-'north-east'=141
-'north-west'=147
-'null'=124
-'outside'=135
-'outside-grid'=136
+'collapsible'=50
+'cursor'=30
+'datamart'=52
+'date'=152
+'default'=114
+'describedBy'=17
+'do'=118
+'donut'=37
+'east'=144
+'else'=111
+'empty'=36
+'extends'=121
+'extension'=66
+'false'=124
+'fast'=141
+'fillZero'=33
+'filled'=34
+'finally'=131
+'for'=116
+'gauge'=42
+'gradient'=40
+'hasTicks'=44
+'if'=110
+'import'=64
+'inside'=57
+'inside-grid'=136
+'instanceof'=92
+'intervals'=47
+'label'=43
+'legend'=53
+'line'=27
+'linear'=151
+'logarithmic'=153
+'map'=49
+'maximum'=46
+'minimum'=45
+'multiplier'=39
+'new'=123
+'normal'=139
+'north'=142
+'north-east'=143
+'north-west'=149
+'ns'=68
+'null'=126
+'outside'=137
+'outside-grid'=138
 'package'=13
-'pie'=34
+'pie'=35
 'polling'=19
-'pyramid'=152
-'renders'=58
-'replot'=54
-'return'=127
-'segmentcolor'=61
-'shaded'=22
-'shortLabel'=59
-'showMarker'=27
-'slow'=138
-'south'=144
-'south-east'=143
-'south-west'=145
-'stacked'=25
-'static'=118
-'super'=120
-'swapped'=24
-'switch'=108
-'synchronized'=130
-'throw'=126
-'tickangle'=60
-'toggle'=53
-'tooltip'=31
-'transparent'=40
-'tree'=47
-'trendLine'=28
-'true'=123
-'try'=128
-'typeof'=125
-'up to'=50
-'using'=20
-'val'=116
-'var'=115
-'west'=146
-'while'=113
-'zoom'=30
+'pyramid'=154
+'renders'=59
+'replot'=55
+'return'=129
+'segmentcolor'=62
+'selectById'=20
+'shaded'=23
+'shortLabel'=60
+'showMarker'=28
+'slow'=140
+'south'=146
+'south-east'=145
+'south-west'=147
+'stacked'=26
+'static'=65
+'super'=122
+'swapped'=25
+'switch'=112
+'synchronized'=132
+'throw'=128
+'toggle'=54
+'tooltip'=32
+'transparent'=41
+'tree'=48
+'trendLine'=29
+'true'=125
+'try'=130
+'typeof'=127
+'upTo'=51
+'using'=21
+'val'=120
+'var'=119
+'west'=148
+'while'=117
+'zoom'=31
 '{'=14
-'|'=104
-'||'=82
+'|'=109
+'||'=86
 '}'=15
 RULE_ANY_OTHER=12
 RULE_DECIMAL=8
@@ -202,6 +204,8 @@
 T__150=150
 T__151=151
 T__152=152
+T__153=153
+T__154=154
 T__15=15
 T__16=16
 T__17=17
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSLLexer.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSLLexer.java
index 403b604..182cdb8 100644
--- a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSLLexer.java
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSLLexer.java
@@ -81,8 +81,10 @@
     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__154=154;
     public static final int T__151=151;
     public static final int T__150=150;
+    public static final int T__153=153;
     public static final int T__152=152;
     public static final int T__48=48;
     public static final int T__49=49;
@@ -187,15 +189,15 @@
         super(input,state);
 
     }
-    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g"; }
+    public String getGrammarFileName() { return "InternalChartDSL.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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:11:7: ( 'package' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:11:9: 'package'
+            // InternalChartDSL.g:11:7: ( 'package' )
+            // InternalChartDSL.g:11:9: 'package'
             {
             match("package"); 
 
@@ -215,8 +217,8 @@
         try {
             int _type = T__14;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:12:7: ( '{' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:12:9: '{'
+            // InternalChartDSL.g:12:7: ( '{' )
+            // InternalChartDSL.g:12:9: '{'
             {
             match('{'); 
 
@@ -235,8 +237,8 @@
         try {
             int _type = T__15;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:13:7: ( '}' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:13:9: '}'
+            // InternalChartDSL.g:13:7: ( '}' )
+            // InternalChartDSL.g:13:9: '}'
             {
             match('}'); 
 
@@ -255,8 +257,8 @@
         try {
             int _type = T__16;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:14:7: ( 'chart' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:14:9: 'chart'
+            // InternalChartDSL.g:14:7: ( 'chart' )
+            // InternalChartDSL.g:14:9: 'chart'
             {
             match("chart"); 
 
@@ -276,10 +278,10 @@
         try {
             int _type = T__17;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:15:7: ( 'described by' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:15:9: 'described by'
+            // InternalChartDSL.g:15:7: ( 'describedBy' )
+            // InternalChartDSL.g:15:9: 'describedBy'
             {
-            match("described by"); 
+            match("describedBy"); 
 
 
             }
@@ -297,8 +299,8 @@
         try {
             int _type = T__18;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:16:7: ( 'as' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:16:9: 'as'
+            // InternalChartDSL.g:16:7: ( 'as' )
+            // InternalChartDSL.g:16:9: 'as'
             {
             match("as"); 
 
@@ -318,8 +320,8 @@
         try {
             int _type = T__19;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:17:7: ( 'polling' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:17:9: 'polling'
+            // InternalChartDSL.g:17:7: ( 'polling' )
+            // InternalChartDSL.g:17:9: 'polling'
             {
             match("polling"); 
 
@@ -339,10 +341,10 @@
         try {
             int _type = T__20;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:18:7: ( 'using' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:18:9: 'using'
+            // InternalChartDSL.g:18:7: ( 'selectById' )
+            // InternalChartDSL.g:18:9: 'selectById'
             {
-            match("using"); 
+            match("selectById"); 
 
 
             }
@@ -360,10 +362,10 @@
         try {
             int _type = T__21;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:19:7: ( 'bar' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:19:9: 'bar'
+            // InternalChartDSL.g:19:7: ( 'using' )
+            // InternalChartDSL.g:19:9: 'using'
             {
-            match("bar"); 
+            match("using"); 
 
 
             }
@@ -381,10 +383,10 @@
         try {
             int _type = T__22;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:20:7: ( 'shaded' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:20:9: 'shaded'
+            // InternalChartDSL.g:20:7: ( 'bar' )
+            // InternalChartDSL.g:20:9: 'bar'
             {
-            match("shaded"); 
+            match("bar"); 
 
 
             }
@@ -402,10 +404,10 @@
         try {
             int _type = T__23;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:21:7: ( 'animated' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:21:9: 'animated'
+            // InternalChartDSL.g:21:7: ( 'shaded' )
+            // InternalChartDSL.g:21:9: 'shaded'
             {
-            match("animated"); 
+            match("shaded"); 
 
 
             }
@@ -423,10 +425,10 @@
         try {
             int _type = T__24;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:22:7: ( 'swapped' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:22:9: 'swapped'
+            // InternalChartDSL.g:22:7: ( 'animated' )
+            // InternalChartDSL.g:22:9: 'animated'
             {
-            match("swapped"); 
+            match("animated"); 
 
 
             }
@@ -444,10 +446,10 @@
         try {
             int _type = T__25;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:23:7: ( 'stacked' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:23:9: 'stacked'
+            // InternalChartDSL.g:23:7: ( 'swapped' )
+            // InternalChartDSL.g:23:9: 'swapped'
             {
-            match("stacked"); 
+            match("swapped"); 
 
 
             }
@@ -465,10 +467,10 @@
         try {
             int _type = T__26;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:24:7: ( 'line' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:24:9: 'line'
+            // InternalChartDSL.g:24:7: ( 'stacked' )
+            // InternalChartDSL.g:24:9: 'stacked'
             {
-            match("line"); 
+            match("stacked"); 
 
 
             }
@@ -486,10 +488,10 @@
         try {
             int _type = T__27;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:25:7: ( 'showMarker' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:25:9: 'showMarker'
+            // InternalChartDSL.g:25:7: ( 'line' )
+            // InternalChartDSL.g:25:9: 'line'
             {
-            match("showMarker"); 
+            match("line"); 
 
 
             }
@@ -507,10 +509,10 @@
         try {
             int _type = T__28;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:26:7: ( 'trendLine' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:26:9: 'trendLine'
+            // InternalChartDSL.g:26:7: ( 'showMarker' )
+            // InternalChartDSL.g:26:9: 'showMarker'
             {
-            match("trendLine"); 
+            match("showMarker"); 
 
 
             }
@@ -528,10 +530,10 @@
         try {
             int _type = T__29;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:27:7: ( 'cursor' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:27:9: 'cursor'
+            // InternalChartDSL.g:27:7: ( 'trendLine' )
+            // InternalChartDSL.g:27:9: 'trendLine'
             {
-            match("cursor"); 
+            match("trendLine"); 
 
 
             }
@@ -549,10 +551,10 @@
         try {
             int _type = T__30;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:28:7: ( 'zoom' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:28:9: 'zoom'
+            // InternalChartDSL.g:28:7: ( 'cursor' )
+            // InternalChartDSL.g:28:9: 'cursor'
             {
-            match("zoom"); 
+            match("cursor"); 
 
 
             }
@@ -570,10 +572,10 @@
         try {
             int _type = T__31;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:29:7: ( 'tooltip' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:29:9: 'tooltip'
+            // InternalChartDSL.g:29:7: ( 'zoom' )
+            // InternalChartDSL.g:29:9: 'zoom'
             {
-            match("tooltip"); 
+            match("zoom"); 
 
 
             }
@@ -591,10 +593,10 @@
         try {
             int _type = T__32;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:30:7: ( 'fillZero' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:30:9: 'fillZero'
+            // InternalChartDSL.g:30:7: ( 'tooltip' )
+            // InternalChartDSL.g:30:9: 'tooltip'
             {
-            match("fillZero"); 
+            match("tooltip"); 
 
 
             }
@@ -612,10 +614,10 @@
         try {
             int _type = T__33;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:31:7: ( 'filled' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:31:9: 'filled'
+            // InternalChartDSL.g:31:7: ( 'fillZero' )
+            // InternalChartDSL.g:31:9: 'fillZero'
             {
-            match("filled"); 
+            match("fillZero"); 
 
 
             }
@@ -633,10 +635,10 @@
         try {
             int _type = T__34;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:32:7: ( 'pie' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:32:9: 'pie'
+            // InternalChartDSL.g:32:7: ( 'filled' )
+            // InternalChartDSL.g:32:9: 'filled'
             {
-            match("pie"); 
+            match("filled"); 
 
 
             }
@@ -654,10 +656,10 @@
         try {
             int _type = T__35;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:33:7: ( 'empty' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:33:9: 'empty'
+            // InternalChartDSL.g:33:7: ( 'pie' )
+            // InternalChartDSL.g:33:9: 'pie'
             {
-            match("empty"); 
+            match("pie"); 
 
 
             }
@@ -675,10 +677,10 @@
         try {
             int _type = T__36;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:34:7: ( 'donut' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:34:9: 'donut'
+            // InternalChartDSL.g:34:7: ( 'empty' )
+            // InternalChartDSL.g:34:9: 'empty'
             {
-            match("donut"); 
+            match("empty"); 
 
 
             }
@@ -696,10 +698,10 @@
         try {
             int _type = T__37;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:35:7: ( 'bubble' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:35:9: 'bubble'
+            // InternalChartDSL.g:35:7: ( 'donut' )
+            // InternalChartDSL.g:35:9: 'donut'
             {
-            match("bubble"); 
+            match("donut"); 
 
 
             }
@@ -717,10 +719,10 @@
         try {
             int _type = T__38;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:36:7: ( 'multiplier' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:36:9: 'multiplier'
+            // InternalChartDSL.g:36:7: ( 'bubble' )
+            // InternalChartDSL.g:36:9: 'bubble'
             {
-            match("multiplier"); 
+            match("bubble"); 
 
 
             }
@@ -738,10 +740,10 @@
         try {
             int _type = T__39;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:37:7: ( 'gradient' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:37:9: 'gradient'
+            // InternalChartDSL.g:37:7: ( 'multiplier' )
+            // InternalChartDSL.g:37:9: 'multiplier'
             {
-            match("gradient"); 
+            match("multiplier"); 
 
 
             }
@@ -759,10 +761,10 @@
         try {
             int _type = T__40;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:38:7: ( 'transparent' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:38:9: 'transparent'
+            // InternalChartDSL.g:38:7: ( 'gradient' )
+            // InternalChartDSL.g:38:9: 'gradient'
             {
-            match("transparent"); 
+            match("gradient"); 
 
 
             }
@@ -780,10 +782,10 @@
         try {
             int _type = T__41;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:39:7: ( 'gauge' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:39:9: 'gauge'
+            // InternalChartDSL.g:39:7: ( 'transparent' )
+            // InternalChartDSL.g:39:9: 'transparent'
             {
-            match("gauge"); 
+            match("transparent"); 
 
 
             }
@@ -801,10 +803,10 @@
         try {
             int _type = T__42;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:40:7: ( 'label' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:40:9: 'label'
+            // InternalChartDSL.g:40:7: ( 'gauge' )
+            // InternalChartDSL.g:40:9: 'gauge'
             {
-            match("label"); 
+            match("gauge"); 
 
 
             }
@@ -822,10 +824,10 @@
         try {
             int _type = T__43;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:41:7: ( 'hasTicks' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:41:9: 'hasTicks'
+            // InternalChartDSL.g:41:7: ( 'label' )
+            // InternalChartDSL.g:41:9: 'label'
             {
-            match("hasTicks"); 
+            match("label"); 
 
 
             }
@@ -843,10 +845,10 @@
         try {
             int _type = T__44;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:42:7: ( 'minimum' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:42:9: 'minimum'
+            // InternalChartDSL.g:42:7: ( 'hasTicks' )
+            // InternalChartDSL.g:42:9: 'hasTicks'
             {
-            match("minimum"); 
+            match("hasTicks"); 
 
 
             }
@@ -864,10 +866,10 @@
         try {
             int _type = T__45;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:43:7: ( 'maximum' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:43:9: 'maximum'
+            // InternalChartDSL.g:43:7: ( 'minimum' )
+            // InternalChartDSL.g:43:9: 'minimum'
             {
-            match("maximum"); 
+            match("minimum"); 
 
 
             }
@@ -885,10 +887,10 @@
         try {
             int _type = T__46;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:44:7: ( 'intervals' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:44:9: 'intervals'
+            // InternalChartDSL.g:44:7: ( 'maximum' )
+            // InternalChartDSL.g:44:9: 'maximum'
             {
-            match("intervals"); 
+            match("maximum"); 
 
 
             }
@@ -906,10 +908,10 @@
         try {
             int _type = T__47;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:45:7: ( 'tree' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:45:9: 'tree'
+            // InternalChartDSL.g:45:7: ( 'intervals' )
+            // InternalChartDSL.g:45:9: 'intervals'
             {
-            match("tree"); 
+            match("intervals"); 
 
 
             }
@@ -927,10 +929,10 @@
         try {
             int _type = T__48;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:46:7: ( 'map' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:46:9: 'map'
+            // InternalChartDSL.g:46:7: ( 'tree' )
+            // InternalChartDSL.g:46:9: 'tree'
             {
-            match("map"); 
+            match("tree"); 
 
 
             }
@@ -948,10 +950,10 @@
         try {
             int _type = T__49;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:47:7: ( 'collapsible' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:47:9: 'collapsible'
+            // InternalChartDSL.g:47:7: ( 'map' )
+            // InternalChartDSL.g:47:9: 'map'
             {
-            match("collapsible"); 
+            match("map"); 
 
 
             }
@@ -969,10 +971,10 @@
         try {
             int _type = T__50;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:48:7: ( 'up to' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:48:9: 'up to'
+            // InternalChartDSL.g:48:7: ( 'collapsible' )
+            // InternalChartDSL.g:48:9: 'collapsible'
             {
-            match("up to"); 
+            match("collapsible"); 
 
 
             }
@@ -990,10 +992,10 @@
         try {
             int _type = T__51;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:49:7: ( 'datamart' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:49:9: 'datamart'
+            // InternalChartDSL.g:49:7: ( 'upTo' )
+            // InternalChartDSL.g:49:9: 'upTo'
             {
-            match("datamart"); 
+            match("upTo"); 
 
 
             }
@@ -1011,10 +1013,10 @@
         try {
             int _type = T__52;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:50:7: ( 'legend' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:50:9: 'legend'
+            // InternalChartDSL.g:50:7: ( 'datamart' )
+            // InternalChartDSL.g:50:9: 'datamart'
             {
-            match("legend"); 
+            match("datamart"); 
 
 
             }
@@ -1032,10 +1034,10 @@
         try {
             int _type = T__53;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:51:7: ( 'toggle' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:51:9: 'toggle'
+            // InternalChartDSL.g:51:7: ( 'legend' )
+            // InternalChartDSL.g:51:9: 'legend'
             {
-            match("toggle"); 
+            match("legend"); 
 
 
             }
@@ -1053,10 +1055,10 @@
         try {
             int _type = T__54;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:52:7: ( 'replot' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:52:9: 'replot'
+            // InternalChartDSL.g:52:7: ( 'toggle' )
+            // InternalChartDSL.g:52:9: 'toggle'
             {
-            match("replot"); 
+            match("toggle"); 
 
 
             }
@@ -1074,10 +1076,10 @@
         try {
             int _type = T__55;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:53:7: ( 'always' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:53:9: 'always'
+            // InternalChartDSL.g:53:7: ( 'replot' )
+            // InternalChartDSL.g:53:9: 'replot'
             {
-            match("always"); 
+            match("replot"); 
 
 
             }
@@ -1095,10 +1097,10 @@
         try {
             int _type = T__56;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:54:7: ( 'inside' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:54:9: 'inside'
+            // InternalChartDSL.g:54:7: ( 'always' )
+            // InternalChartDSL.g:54:9: 'always'
             {
-            match("inside"); 
+            match("always"); 
 
 
             }
@@ -1116,10 +1118,10 @@
         try {
             int _type = T__57;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:55:7: ( 'axis' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:55:9: 'axis'
+            // InternalChartDSL.g:55:7: ( 'inside' )
+            // InternalChartDSL.g:55:9: 'inside'
             {
-            match("axis"); 
+            match("inside"); 
 
 
             }
@@ -1137,10 +1139,10 @@
         try {
             int _type = T__58;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:56:7: ( 'renders' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:56:9: 'renders'
+            // InternalChartDSL.g:56:7: ( 'axis' )
+            // InternalChartDSL.g:56:9: 'axis'
             {
-            match("renders"); 
+            match("axis"); 
 
 
             }
@@ -1158,10 +1160,10 @@
         try {
             int _type = T__59;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:57:7: ( 'shortLabel' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:57:9: 'shortLabel'
+            // InternalChartDSL.g:57:7: ( 'renders' )
+            // InternalChartDSL.g:57:9: 'renders'
             {
-            match("shortLabel"); 
+            match("renders"); 
 
 
             }
@@ -1179,10 +1181,10 @@
         try {
             int _type = T__60;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:58:7: ( 'tickangle' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:58:9: 'tickangle'
+            // InternalChartDSL.g:58:7: ( 'shortLabel' )
+            // InternalChartDSL.g:58:9: 'shortLabel'
             {
-            match("tickangle"); 
+            match("shortLabel"); 
 
 
             }
@@ -1200,10 +1202,10 @@
         try {
             int _type = T__61;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:59:7: ( 'segmentcolor' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:59:9: 'segmentcolor'
+            // InternalChartDSL.g:59:7: ( 'angle' )
+            // InternalChartDSL.g:59:9: 'angle'
             {
-            match("segmentcolor"); 
+            match("angle"); 
 
 
             }
@@ -1221,10 +1223,10 @@
         try {
             int _type = T__62;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:60:7: ( 'import' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:60:9: 'import'
+            // InternalChartDSL.g:60:7: ( 'segmentcolor' )
+            // InternalChartDSL.g:60:9: 'segmentcolor'
             {
-            match("import"); 
+            match("segmentcolor"); 
 
 
             }
@@ -1242,8 +1244,8 @@
         try {
             int _type = T__63;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:61:7: ( '-' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:61:9: '-'
+            // InternalChartDSL.g:61:7: ( '-' )
+            // InternalChartDSL.g:61:9: '-'
             {
             match('-'); 
 
@@ -1262,10 +1264,11 @@
         try {
             int _type = T__64;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:62:7: ( '.' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:62:9: '.'
+            // InternalChartDSL.g:62:7: ( 'import' )
+            // InternalChartDSL.g:62:9: 'import'
             {
-            match('.'); 
+            match("import"); 
+
 
             }
 
@@ -1282,10 +1285,11 @@
         try {
             int _type = T__65;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:63:7: ( '*' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:63:9: '*'
+            // InternalChartDSL.g:63:7: ( 'static' )
+            // InternalChartDSL.g:63:9: 'static'
             {
-            match('*'); 
+            match("static"); 
+
 
             }
 
@@ -1302,10 +1306,11 @@
         try {
             int _type = T__66;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:64:7: ( '@' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:64:9: '@'
+            // InternalChartDSL.g:64:7: ( 'extension' )
+            // InternalChartDSL.g:64:9: 'extension'
             {
-            match('@'); 
+            match("extension"); 
+
 
             }
 
@@ -1322,10 +1327,10 @@
         try {
             int _type = T__67;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:65:7: ( '(' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:65:9: '('
+            // InternalChartDSL.g:65:7: ( '*' )
+            // InternalChartDSL.g:65:9: '*'
             {
-            match('('); 
+            match('*'); 
 
             }
 
@@ -1342,10 +1347,11 @@
         try {
             int _type = T__68;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:66:7: ( ',' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:66:9: ','
+            // InternalChartDSL.g:66:7: ( 'ns' )
+            // InternalChartDSL.g:66:9: 'ns'
             {
-            match(','); 
+            match("ns"); 
+
 
             }
 
@@ -1362,10 +1368,10 @@
         try {
             int _type = T__69;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:67:7: ( ')' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:67:9: ')'
+            // InternalChartDSL.g:67:7: ( ';' )
+            // InternalChartDSL.g:67:9: ';'
             {
-            match(')'); 
+            match(';'); 
 
             }
 
@@ -1382,10 +1388,10 @@
         try {
             int _type = T__70;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:68:7: ( '=' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:68:9: '='
+            // InternalChartDSL.g:68:7: ( '@' )
+            // InternalChartDSL.g:68:9: '@'
             {
-            match('='); 
+            match('@'); 
 
             }
 
@@ -1402,10 +1408,10 @@
         try {
             int _type = T__71;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:69:7: ( '#' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:69:9: '#'
+            // InternalChartDSL.g:69:7: ( '(' )
+            // InternalChartDSL.g:69:9: '('
             {
-            match('#'); 
+            match('('); 
 
             }
 
@@ -1422,10 +1428,10 @@
         try {
             int _type = T__72;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:70:7: ( '[' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:70:9: '['
+            // InternalChartDSL.g:70:7: ( ',' )
+            // InternalChartDSL.g:70:9: ','
             {
-            match('['); 
+            match(','); 
 
             }
 
@@ -1442,10 +1448,10 @@
         try {
             int _type = T__73;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:71:7: ( ']' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:71:9: ']'
+            // InternalChartDSL.g:71:7: ( ')' )
+            // InternalChartDSL.g:71:9: ')'
             {
-            match(']'); 
+            match(')'); 
 
             }
 
@@ -1462,11 +1468,10 @@
         try {
             int _type = T__74;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:72:7: ( '+=' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:72:9: '+='
+            // InternalChartDSL.g:72:7: ( '=' )
+            // InternalChartDSL.g:72:9: '='
             {
-            match("+="); 
-
+            match('='); 
 
             }
 
@@ -1483,11 +1488,10 @@
         try {
             int _type = T__75;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:73:7: ( '-=' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:73:9: '-='
+            // InternalChartDSL.g:73:7: ( '#' )
+            // InternalChartDSL.g:73:9: '#'
             {
-            match("-="); 
-
+            match('#'); 
 
             }
 
@@ -1504,11 +1508,10 @@
         try {
             int _type = T__76;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:74:7: ( '*=' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:74:9: '*='
+            // InternalChartDSL.g:74:7: ( '[' )
+            // InternalChartDSL.g:74:9: '['
             {
-            match("*="); 
-
+            match('['); 
 
             }
 
@@ -1525,11 +1528,10 @@
         try {
             int _type = T__77;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:75:7: ( '/=' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:75:9: '/='
+            // InternalChartDSL.g:75:7: ( ']' )
+            // InternalChartDSL.g:75:9: ']'
             {
-            match("/="); 
-
+            match(']'); 
 
             }
 
@@ -1546,10 +1548,10 @@
         try {
             int _type = T__78;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:76:7: ( '%=' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:76:9: '%='
+            // InternalChartDSL.g:76:7: ( '+=' )
+            // InternalChartDSL.g:76:9: '+='
             {
-            match("%="); 
+            match("+="); 
 
 
             }
@@ -1567,10 +1569,11 @@
         try {
             int _type = T__79;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:77:7: ( '<' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:77:9: '<'
+            // InternalChartDSL.g:77:7: ( '-=' )
+            // InternalChartDSL.g:77:9: '-='
             {
-            match('<'); 
+            match("-="); 
+
 
             }
 
@@ -1587,10 +1590,11 @@
         try {
             int _type = T__80;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:78:7: ( '>' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:78:9: '>'
+            // InternalChartDSL.g:78:7: ( '*=' )
+            // InternalChartDSL.g:78:9: '*='
             {
-            match('>'); 
+            match("*="); 
+
 
             }
 
@@ -1607,10 +1611,10 @@
         try {
             int _type = T__81;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:79:7: ( '>=' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:79:9: '>='
+            // InternalChartDSL.g:79:7: ( '/=' )
+            // InternalChartDSL.g:79:9: '/='
             {
-            match(">="); 
+            match("/="); 
 
 
             }
@@ -1628,10 +1632,10 @@
         try {
             int _type = T__82;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:80:7: ( '||' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:80:9: '||'
+            // InternalChartDSL.g:80:7: ( '%=' )
+            // InternalChartDSL.g:80:9: '%='
             {
-            match("||"); 
+            match("%="); 
 
 
             }
@@ -1649,11 +1653,10 @@
         try {
             int _type = T__83;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:81:7: ( '&&' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:81:9: '&&'
+            // InternalChartDSL.g:81:7: ( '<' )
+            // InternalChartDSL.g:81:9: '<'
             {
-            match("&&"); 
-
+            match('<'); 
 
             }
 
@@ -1670,11 +1673,10 @@
         try {
             int _type = T__84;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:82:7: ( '==' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:82:9: '=='
+            // InternalChartDSL.g:82:7: ( '>' )
+            // InternalChartDSL.g:82:9: '>'
             {
-            match("=="); 
-
+            match('>'); 
 
             }
 
@@ -1691,10 +1693,10 @@
         try {
             int _type = T__85;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:83:7: ( '!=' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:83:9: '!='
+            // InternalChartDSL.g:83:7: ( '>=' )
+            // InternalChartDSL.g:83:9: '>='
             {
-            match("!="); 
+            match(">="); 
 
 
             }
@@ -1712,10 +1714,10 @@
         try {
             int _type = T__86;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:84:7: ( '===' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:84:9: '==='
+            // InternalChartDSL.g:84:7: ( '||' )
+            // InternalChartDSL.g:84:9: '||'
             {
-            match("==="); 
+            match("||"); 
 
 
             }
@@ -1733,10 +1735,10 @@
         try {
             int _type = T__87;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:85:7: ( '!==' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:85:9: '!=='
+            // InternalChartDSL.g:85:7: ( '&&' )
+            // InternalChartDSL.g:85:9: '&&'
             {
-            match("!=="); 
+            match("&&"); 
 
 
             }
@@ -1754,10 +1756,10 @@
         try {
             int _type = T__88;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:86:7: ( 'instanceof' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:86:9: 'instanceof'
+            // InternalChartDSL.g:86:7: ( '==' )
+            // InternalChartDSL.g:86:9: '=='
             {
-            match("instanceof"); 
+            match("=="); 
 
 
             }
@@ -1775,10 +1777,10 @@
         try {
             int _type = T__89;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:87:7: ( '->' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:87:9: '->'
+            // InternalChartDSL.g:87:7: ( '!=' )
+            // InternalChartDSL.g:87:9: '!='
             {
-            match("->"); 
+            match("!="); 
 
 
             }
@@ -1796,10 +1798,10 @@
         try {
             int _type = T__90;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:88:7: ( '..<' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:88:9: '..<'
+            // InternalChartDSL.g:88:7: ( '===' )
+            // InternalChartDSL.g:88:9: '==='
             {
-            match("..<"); 
+            match("==="); 
 
 
             }
@@ -1817,10 +1819,10 @@
         try {
             int _type = T__91;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:89:7: ( '..' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:89:9: '..'
+            // InternalChartDSL.g:89:7: ( '!==' )
+            // InternalChartDSL.g:89:9: '!=='
             {
-            match(".."); 
+            match("!=="); 
 
 
             }
@@ -1838,10 +1840,10 @@
         try {
             int _type = T__92;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:90:7: ( '=>' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:90:9: '=>'
+            // InternalChartDSL.g:90:7: ( 'instanceof' )
+            // InternalChartDSL.g:90:9: 'instanceof'
             {
-            match("=>"); 
+            match("instanceof"); 
 
 
             }
@@ -1859,10 +1861,10 @@
         try {
             int _type = T__93;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:91:7: ( '<>' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:91:9: '<>'
+            // InternalChartDSL.g:91:7: ( '->' )
+            // InternalChartDSL.g:91:9: '->'
             {
-            match("<>"); 
+            match("->"); 
 
 
             }
@@ -1880,10 +1882,10 @@
         try {
             int _type = T__94;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:92:7: ( '?:' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:92:9: '?:'
+            // InternalChartDSL.g:92:7: ( '..<' )
+            // InternalChartDSL.g:92:9: '..<'
             {
-            match("?:"); 
+            match("..<"); 
 
 
             }
@@ -1901,10 +1903,11 @@
         try {
             int _type = T__95;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:93:7: ( '+' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:93:9: '+'
+            // InternalChartDSL.g:93:7: ( '..' )
+            // InternalChartDSL.g:93:9: '..'
             {
-            match('+'); 
+            match(".."); 
+
 
             }
 
@@ -1921,10 +1924,10 @@
         try {
             int _type = T__96;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:94:7: ( '**' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:94:9: '**'
+            // InternalChartDSL.g:94:7: ( '=>' )
+            // InternalChartDSL.g:94:9: '=>'
             {
-            match("**"); 
+            match("=>"); 
 
 
             }
@@ -1942,10 +1945,11 @@
         try {
             int _type = T__97;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:95:7: ( '/' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:95:9: '/'
+            // InternalChartDSL.g:95:7: ( '<>' )
+            // InternalChartDSL.g:95:9: '<>'
             {
-            match('/'); 
+            match("<>"); 
+
 
             }
 
@@ -1962,10 +1966,11 @@
         try {
             int _type = T__98;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:96:7: ( '%' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:96:9: '%'
+            // InternalChartDSL.g:96:7: ( '?:' )
+            // InternalChartDSL.g:96:9: '?:'
             {
-            match('%'); 
+            match("?:"); 
+
 
             }
 
@@ -1982,10 +1987,10 @@
         try {
             int _type = T__99;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:97:7: ( '!' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:97:9: '!'
+            // InternalChartDSL.g:97:7: ( '+' )
+            // InternalChartDSL.g:97:9: '+'
             {
-            match('!'); 
+            match('+'); 
 
             }
 
@@ -2002,10 +2007,10 @@
         try {
             int _type = T__100;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:98:8: ( '++' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:98:10: '++'
+            // InternalChartDSL.g:98:8: ( '**' )
+            // InternalChartDSL.g:98:10: '**'
             {
-            match("++"); 
+            match("**"); 
 
 
             }
@@ -2023,11 +2028,10 @@
         try {
             int _type = T__101;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:99:8: ( '--' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:99:10: '--'
+            // InternalChartDSL.g:99:8: ( '/' )
+            // InternalChartDSL.g:99:10: '/'
             {
-            match("--"); 
-
+            match('/'); 
 
             }
 
@@ -2044,11 +2048,10 @@
         try {
             int _type = T__102;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:100:8: ( '::' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:100:10: '::'
+            // InternalChartDSL.g:100:8: ( '%' )
+            // InternalChartDSL.g:100:10: '%'
             {
-            match("::"); 
-
+            match('%'); 
 
             }
 
@@ -2065,11 +2068,10 @@
         try {
             int _type = T__103;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:101:8: ( '?.' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:101:10: '?.'
+            // InternalChartDSL.g:101:8: ( '!' )
+            // InternalChartDSL.g:101:10: '!'
             {
-            match("?."); 
-
+            match('!'); 
 
             }
 
@@ -2086,10 +2088,11 @@
         try {
             int _type = T__104;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:102:8: ( '|' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:102:10: '|'
+            // InternalChartDSL.g:102:8: ( '++' )
+            // InternalChartDSL.g:102:10: '++'
             {
-            match('|'); 
+            match("++"); 
+
 
             }
 
@@ -2106,10 +2109,11 @@
         try {
             int _type = T__105;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:103:8: ( ';' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:103:10: ';'
+            // InternalChartDSL.g:103:8: ( '--' )
+            // InternalChartDSL.g:103:10: '--'
             {
-            match(';'); 
+            match("--"); 
+
 
             }
 
@@ -2126,11 +2130,10 @@
         try {
             int _type = T__106;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:104:8: ( 'if' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:104:10: 'if'
+            // InternalChartDSL.g:104:8: ( '.' )
+            // InternalChartDSL.g:104:10: '.'
             {
-            match("if"); 
-
+            match('.'); 
 
             }
 
@@ -2147,10 +2150,10 @@
         try {
             int _type = T__107;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:105:8: ( 'else' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:105:10: 'else'
+            // InternalChartDSL.g:105:8: ( '::' )
+            // InternalChartDSL.g:105:10: '::'
             {
-            match("else"); 
+            match("::"); 
 
 
             }
@@ -2168,10 +2171,10 @@
         try {
             int _type = T__108;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:106:8: ( 'switch' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:106:10: 'switch'
+            // InternalChartDSL.g:106:8: ( '?.' )
+            // InternalChartDSL.g:106:10: '?.'
             {
-            match("switch"); 
+            match("?."); 
 
 
             }
@@ -2189,10 +2192,10 @@
         try {
             int _type = T__109;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:107:8: ( ':' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:107:10: ':'
+            // InternalChartDSL.g:107:8: ( '|' )
+            // InternalChartDSL.g:107:10: '|'
             {
-            match(':'); 
+            match('|'); 
 
             }
 
@@ -2209,10 +2212,10 @@
         try {
             int _type = T__110;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:108:8: ( 'default' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:108:10: 'default'
+            // InternalChartDSL.g:108:8: ( 'if' )
+            // InternalChartDSL.g:108:10: 'if'
             {
-            match("default"); 
+            match("if"); 
 
 
             }
@@ -2230,10 +2233,10 @@
         try {
             int _type = T__111;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:109:8: ( 'case' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:109:10: 'case'
+            // InternalChartDSL.g:109:8: ( 'else' )
+            // InternalChartDSL.g:109:10: 'else'
             {
-            match("case"); 
+            match("else"); 
 
 
             }
@@ -2251,10 +2254,10 @@
         try {
             int _type = T__112;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:110:8: ( 'for' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:110:10: 'for'
+            // InternalChartDSL.g:110:8: ( 'switch' )
+            // InternalChartDSL.g:110:10: 'switch'
             {
-            match("for"); 
+            match("switch"); 
 
 
             }
@@ -2272,11 +2275,10 @@
         try {
             int _type = T__113;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:111:8: ( 'while' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:111:10: 'while'
+            // InternalChartDSL.g:111:8: ( ':' )
+            // InternalChartDSL.g:111:10: ':'
             {
-            match("while"); 
-
+            match(':'); 
 
             }
 
@@ -2293,10 +2295,10 @@
         try {
             int _type = T__114;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:112:8: ( 'do' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:112:10: 'do'
+            // InternalChartDSL.g:112:8: ( 'default' )
+            // InternalChartDSL.g:112:10: 'default'
             {
-            match("do"); 
+            match("default"); 
 
 
             }
@@ -2314,10 +2316,10 @@
         try {
             int _type = T__115;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:113:8: ( 'var' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:113:10: 'var'
+            // InternalChartDSL.g:113:8: ( 'case' )
+            // InternalChartDSL.g:113:10: 'case'
             {
-            match("var"); 
+            match("case"); 
 
 
             }
@@ -2335,10 +2337,10 @@
         try {
             int _type = T__116;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:114:8: ( 'val' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:114:10: 'val'
+            // InternalChartDSL.g:114:8: ( 'for' )
+            // InternalChartDSL.g:114:10: 'for'
             {
-            match("val"); 
+            match("for"); 
 
 
             }
@@ -2356,10 +2358,10 @@
         try {
             int _type = T__117;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:115:8: ( 'extends' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:115:10: 'extends'
+            // InternalChartDSL.g:115:8: ( 'while' )
+            // InternalChartDSL.g:115:10: 'while'
             {
-            match("extends"); 
+            match("while"); 
 
 
             }
@@ -2377,10 +2379,10 @@
         try {
             int _type = T__118;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:116:8: ( 'static' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:116:10: 'static'
+            // InternalChartDSL.g:116:8: ( 'do' )
+            // InternalChartDSL.g:116:10: 'do'
             {
-            match("static"); 
+            match("do"); 
 
 
             }
@@ -2398,10 +2400,10 @@
         try {
             int _type = T__119;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:117:8: ( 'extension' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:117:10: 'extension'
+            // InternalChartDSL.g:117:8: ( 'var' )
+            // InternalChartDSL.g:117:10: 'var'
             {
-            match("extension"); 
+            match("var"); 
 
 
             }
@@ -2419,10 +2421,10 @@
         try {
             int _type = T__120;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:118:8: ( 'super' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:118:10: 'super'
+            // InternalChartDSL.g:118:8: ( 'val' )
+            // InternalChartDSL.g:118:10: 'val'
             {
-            match("super"); 
+            match("val"); 
 
 
             }
@@ -2440,10 +2442,10 @@
         try {
             int _type = T__121;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:119:8: ( 'new' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:119:10: 'new'
+            // InternalChartDSL.g:119:8: ( 'extends' )
+            // InternalChartDSL.g:119:10: 'extends'
             {
-            match("new"); 
+            match("extends"); 
 
 
             }
@@ -2461,10 +2463,10 @@
         try {
             int _type = T__122;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:120:8: ( 'false' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:120:10: 'false'
+            // InternalChartDSL.g:120:8: ( 'super' )
+            // InternalChartDSL.g:120:10: 'super'
             {
-            match("false"); 
+            match("super"); 
 
 
             }
@@ -2482,10 +2484,10 @@
         try {
             int _type = T__123;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:121:8: ( 'true' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:121:10: 'true'
+            // InternalChartDSL.g:121:8: ( 'new' )
+            // InternalChartDSL.g:121:10: 'new'
             {
-            match("true"); 
+            match("new"); 
 
 
             }
@@ -2503,10 +2505,10 @@
         try {
             int _type = T__124;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:122:8: ( 'null' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:122:10: 'null'
+            // InternalChartDSL.g:122:8: ( 'false' )
+            // InternalChartDSL.g:122:10: 'false'
             {
-            match("null"); 
+            match("false"); 
 
 
             }
@@ -2524,10 +2526,10 @@
         try {
             int _type = T__125;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:123:8: ( 'typeof' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:123:10: 'typeof'
+            // InternalChartDSL.g:123:8: ( 'true' )
+            // InternalChartDSL.g:123:10: 'true'
             {
-            match("typeof"); 
+            match("true"); 
 
 
             }
@@ -2545,10 +2547,10 @@
         try {
             int _type = T__126;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:124:8: ( 'throw' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:124:10: 'throw'
+            // InternalChartDSL.g:124:8: ( 'null' )
+            // InternalChartDSL.g:124:10: 'null'
             {
-            match("throw"); 
+            match("null"); 
 
 
             }
@@ -2566,10 +2568,10 @@
         try {
             int _type = T__127;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:125:8: ( 'return' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:125:10: 'return'
+            // InternalChartDSL.g:125:8: ( 'typeof' )
+            // InternalChartDSL.g:125:10: 'typeof'
             {
-            match("return"); 
+            match("typeof"); 
 
 
             }
@@ -2587,10 +2589,10 @@
         try {
             int _type = T__128;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:126:8: ( 'try' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:126:10: 'try'
+            // InternalChartDSL.g:126:8: ( 'throw' )
+            // InternalChartDSL.g:126:10: 'throw'
             {
-            match("try"); 
+            match("throw"); 
 
 
             }
@@ -2608,10 +2610,10 @@
         try {
             int _type = T__129;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:127:8: ( 'finally' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:127:10: 'finally'
+            // InternalChartDSL.g:127:8: ( 'return' )
+            // InternalChartDSL.g:127:10: 'return'
             {
-            match("finally"); 
+            match("return"); 
 
 
             }
@@ -2629,10 +2631,10 @@
         try {
             int _type = T__130;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:128:8: ( 'synchronized' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:128:10: 'synchronized'
+            // InternalChartDSL.g:128:8: ( 'try' )
+            // InternalChartDSL.g:128:10: 'try'
             {
-            match("synchronized"); 
+            match("try"); 
 
 
             }
@@ -2650,10 +2652,10 @@
         try {
             int _type = T__131;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:129:8: ( 'catch' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:129:10: 'catch'
+            // InternalChartDSL.g:129:8: ( 'finally' )
+            // InternalChartDSL.g:129:10: 'finally'
             {
-            match("catch"); 
+            match("finally"); 
 
 
             }
@@ -2671,10 +2673,11 @@
         try {
             int _type = T__132;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:130:8: ( '?' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:130:10: '?'
+            // InternalChartDSL.g:130:8: ( 'synchronized' )
+            // InternalChartDSL.g:130:10: 'synchronized'
             {
-            match('?'); 
+            match("synchronized"); 
+
 
             }
 
@@ -2691,10 +2694,11 @@
         try {
             int _type = T__133;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:131:8: ( '&' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:131:10: '&'
+            // InternalChartDSL.g:131:8: ( 'catch' )
+            // InternalChartDSL.g:131:10: 'catch'
             {
-            match('&'); 
+            match("catch"); 
+
 
             }
 
@@ -2711,11 +2715,10 @@
         try {
             int _type = T__134;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:132:8: ( 'inside-grid' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:132:10: 'inside-grid'
+            // InternalChartDSL.g:132:8: ( '?' )
+            // InternalChartDSL.g:132:10: '?'
             {
-            match("inside-grid"); 
-
+            match('?'); 
 
             }
 
@@ -2732,11 +2735,10 @@
         try {
             int _type = T__135;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:133:8: ( 'outside' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:133:10: 'outside'
+            // InternalChartDSL.g:133:8: ( '&' )
+            // InternalChartDSL.g:133:10: '&'
             {
-            match("outside"); 
-
+            match('&'); 
 
             }
 
@@ -2753,10 +2755,10 @@
         try {
             int _type = T__136;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:134:8: ( 'outside-grid' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:134:10: 'outside-grid'
+            // InternalChartDSL.g:134:8: ( 'inside-grid' )
+            // InternalChartDSL.g:134:10: 'inside-grid'
             {
-            match("outside-grid"); 
+            match("inside-grid"); 
 
 
             }
@@ -2774,10 +2776,10 @@
         try {
             int _type = T__137;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:135:8: ( 'normal' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:135:10: 'normal'
+            // InternalChartDSL.g:135:8: ( 'outside' )
+            // InternalChartDSL.g:135:10: 'outside'
             {
-            match("normal"); 
+            match("outside"); 
 
 
             }
@@ -2795,10 +2797,10 @@
         try {
             int _type = T__138;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:136:8: ( 'slow' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:136:10: 'slow'
+            // InternalChartDSL.g:136:8: ( 'outside-grid' )
+            // InternalChartDSL.g:136:10: 'outside-grid'
             {
-            match("slow"); 
+            match("outside-grid"); 
 
 
             }
@@ -2816,10 +2818,10 @@
         try {
             int _type = T__139;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:137:8: ( 'fast' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:137:10: 'fast'
+            // InternalChartDSL.g:137:8: ( 'normal' )
+            // InternalChartDSL.g:137:10: 'normal'
             {
-            match("fast"); 
+            match("normal"); 
 
 
             }
@@ -2837,10 +2839,10 @@
         try {
             int _type = T__140;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:138:8: ( 'north' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:138:10: 'north'
+            // InternalChartDSL.g:138:8: ( 'slow' )
+            // InternalChartDSL.g:138:10: 'slow'
             {
-            match("north"); 
+            match("slow"); 
 
 
             }
@@ -2858,10 +2860,10 @@
         try {
             int _type = T__141;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:139:8: ( 'north-east' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:139:10: 'north-east'
+            // InternalChartDSL.g:139:8: ( 'fast' )
+            // InternalChartDSL.g:139:10: 'fast'
             {
-            match("north-east"); 
+            match("fast"); 
 
 
             }
@@ -2879,10 +2881,10 @@
         try {
             int _type = T__142;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:140:8: ( 'east' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:140:10: 'east'
+            // InternalChartDSL.g:140:8: ( 'north' )
+            // InternalChartDSL.g:140:10: 'north'
             {
-            match("east"); 
+            match("north"); 
 
 
             }
@@ -2900,10 +2902,10 @@
         try {
             int _type = T__143;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:141:8: ( 'south-east' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:141:10: 'south-east'
+            // InternalChartDSL.g:141:8: ( 'north-east' )
+            // InternalChartDSL.g:141:10: 'north-east'
             {
-            match("south-east"); 
+            match("north-east"); 
 
 
             }
@@ -2921,10 +2923,10 @@
         try {
             int _type = T__144;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:142:8: ( 'south' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:142:10: 'south'
+            // InternalChartDSL.g:142:8: ( 'east' )
+            // InternalChartDSL.g:142:10: 'east'
             {
-            match("south"); 
+            match("east"); 
 
 
             }
@@ -2942,10 +2944,10 @@
         try {
             int _type = T__145;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:143:8: ( 'south-west' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:143:10: 'south-west'
+            // InternalChartDSL.g:143:8: ( 'south-east' )
+            // InternalChartDSL.g:143:10: 'south-east'
             {
-            match("south-west"); 
+            match("south-east"); 
 
 
             }
@@ -2963,10 +2965,10 @@
         try {
             int _type = T__146;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:144:8: ( 'west' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:144:10: 'west'
+            // InternalChartDSL.g:144:8: ( 'south' )
+            // InternalChartDSL.g:144:10: 'south'
             {
-            match("west"); 
+            match("south"); 
 
 
             }
@@ -2984,10 +2986,10 @@
         try {
             int _type = T__147;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:145:8: ( 'north-west' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:145:10: 'north-west'
+            // InternalChartDSL.g:145:8: ( 'south-west' )
+            // InternalChartDSL.g:145:10: 'south-west'
             {
-            match("north-west"); 
+            match("south-west"); 
 
 
             }
@@ -3005,10 +3007,10 @@
         try {
             int _type = T__148;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:146:8: ( 'category' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:146:10: 'category'
+            // InternalChartDSL.g:146:8: ( 'west' )
+            // InternalChartDSL.g:146:10: 'west'
             {
-            match("category"); 
+            match("west"); 
 
 
             }
@@ -3026,10 +3028,10 @@
         try {
             int _type = T__149;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:147:8: ( 'linear' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:147:10: 'linear'
+            // InternalChartDSL.g:147:8: ( 'north-west' )
+            // InternalChartDSL.g:147:10: 'north-west'
             {
-            match("linear"); 
+            match("north-west"); 
 
 
             }
@@ -3047,10 +3049,10 @@
         try {
             int _type = T__150;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:148:8: ( 'date' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:148:10: 'date'
+            // InternalChartDSL.g:148:8: ( 'category' )
+            // InternalChartDSL.g:148:10: 'category'
             {
-            match("date"); 
+            match("category"); 
 
 
             }
@@ -3068,10 +3070,10 @@
         try {
             int _type = T__151;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:149:8: ( 'logarithmic' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:149:10: 'logarithmic'
+            // InternalChartDSL.g:149:8: ( 'linear' )
+            // InternalChartDSL.g:149:10: 'linear'
             {
-            match("logarithmic"); 
+            match("linear"); 
 
 
             }
@@ -3089,10 +3091,10 @@
         try {
             int _type = T__152;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:150:8: ( 'pyramid' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:150:10: 'pyramid'
+            // InternalChartDSL.g:150:8: ( 'date' )
+            // InternalChartDSL.g:150:10: 'date'
             {
-            match("pyramid"); 
+            match("date"); 
 
 
             }
@@ -3105,15 +3107,57 @@
     }
     // $ANTLR end "T__152"
 
+    // $ANTLR start "T__153"
+    public final void mT__153() throws RecognitionException {
+        try {
+            int _type = T__153;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:151:8: ( 'logarithmic' )
+            // InternalChartDSL.g:151:10: 'logarithmic'
+            {
+            match("logarithmic"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__153"
+
+    // $ANTLR start "T__154"
+    public final void mT__154() throws RecognitionException {
+        try {
+            int _type = T__154;
+            int _channel = DEFAULT_TOKEN_CHANNEL;
+            // InternalChartDSL.g:152:8: ( 'pyramid' )
+            // InternalChartDSL.g:152:10: 'pyramid'
+            {
+            match("pyramid"); 
+
+
+            }
+
+            state.type = _type;
+            state.channel = _channel;
+        }
+        finally {
+        }
+    }
+    // $ANTLR end "T__154"
+
     // $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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalChartDSL.g:8999:10: ( ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )? )
+            // InternalChartDSL.g:8999:12: ( '0x' | '0X' ) ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+ ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598:12: ( '0x' | '0X' )
+            // InternalChartDSL.g:8999:12: ( '0x' | '0X' )
             int alt1=2;
             int LA1_0 = input.LA(1);
 
@@ -3141,7 +3185,7 @@
             }
             switch (alt1) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598:13: '0x'
+                    // InternalChartDSL.g:8999:13: '0x'
                     {
                     match("0x"); 
 
@@ -3149,7 +3193,7 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598:18: '0X'
+                    // InternalChartDSL.g:8999:18: '0X'
                     {
                     match("0X"); 
 
@@ -3159,7 +3203,7 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
+            // InternalChartDSL.g:8999:24: ( '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' )+
             int cnt2=0;
             loop2:
             do {
@@ -3173,7 +3217,7 @@
 
                 switch (alt2) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:
+            	    // InternalChartDSL.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();
@@ -3197,7 +3241,7 @@
                 cnt2++;
             } while (true);
 
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
+            // InternalChartDSL.g:8999:58: ( '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) ) )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -3206,10 +3250,10 @@
             }
             switch (alt4) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalChartDSL.g:8999:59: '#' ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     {
                     match('#'); 
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
+                    // InternalChartDSL.g:8999:63: ( ( 'b' | 'B' ) ( 'i' | 'I' ) | ( 'l' | 'L' ) )
                     int alt3=2;
                     int LA3_0 = input.LA(1);
 
@@ -3227,7 +3271,7 @@
                     }
                     switch (alt3) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598:64: ( 'b' | 'B' ) ( 'i' | 'I' )
+                            // InternalChartDSL.g:8999:64: ( 'b' | 'B' ) ( 'i' | 'I' )
                             {
                             if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                                 input.consume();
@@ -3251,7 +3295,7 @@
                             }
                             break;
                         case 2 :
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8598:84: ( 'l' | 'L' )
+                            // InternalChartDSL.g:8999:84: ( 'l' | 'L' )
                             {
                             if ( input.LA(1)=='L'||input.LA(1)=='l' ) {
                                 input.consume();
@@ -3290,11 +3334,11 @@
         try {
             int _type = RULE_INT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8600:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8600:12: '0' .. '9' ( '0' .. '9' | '_' )*
+            // InternalChartDSL.g:9001:10: ( '0' .. '9' ( '0' .. '9' | '_' )* )
+            // InternalChartDSL.g:9001:12: '0' .. '9' ( '0' .. '9' | '_' )*
             {
             matchRange('0','9'); 
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8600:21: ( '0' .. '9' | '_' )*
+            // InternalChartDSL.g:9001:21: ( '0' .. '9' | '_' )*
             loop5:
             do {
                 int alt5=2;
@@ -3307,7 +3351,7 @@
 
                 switch (alt5) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:
+            	    // InternalChartDSL.g:
             	    {
             	    if ( (input.LA(1)>='0' && input.LA(1)<='9')||input.LA(1)=='_' ) {
             	        input.consume();
@@ -3343,11 +3387,11 @@
         try {
             int _type = RULE_DECIMAL;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8602:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8602:16: RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalChartDSL.g:9003:14: ( RULE_INT ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )? ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )? )
+            // InternalChartDSL.g:9003: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8602:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
+            // InternalChartDSL.g:9003:25: ( ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
@@ -3356,7 +3400,7 @@
             }
             switch (alt7) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8602:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
+                    // InternalChartDSL.g:9003:26: ( 'e' | 'E' ) ( '+' | '-' )? RULE_INT
                     {
                     if ( input.LA(1)=='E'||input.LA(1)=='e' ) {
                         input.consume();
@@ -3367,7 +3411,7 @@
                         recover(mse);
                         throw mse;}
 
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8602:36: ( '+' | '-' )?
+                    // InternalChartDSL.g:9003:36: ( '+' | '-' )?
                     int alt6=2;
                     int LA6_0 = input.LA(1);
 
@@ -3376,7 +3420,7 @@
                     }
                     switch (alt6) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:
+                            // InternalChartDSL.g:
                             {
                             if ( input.LA(1)=='+'||input.LA(1)=='-' ) {
                                 input.consume();
@@ -3400,7 +3444,7 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8602:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
+            // InternalChartDSL.g:9003:58: ( ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' ) | ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' ) )?
             int alt8=3;
             int LA8_0 = input.LA(1);
 
@@ -3412,7 +3456,7 @@
             }
             switch (alt8) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8602:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
+                    // InternalChartDSL.g:9003:59: ( 'b' | 'B' ) ( 'i' | 'I' | 'd' | 'D' )
                     {
                     if ( input.LA(1)=='B'||input.LA(1)=='b' ) {
                         input.consume();
@@ -3436,7 +3480,7 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8602:87: ( 'l' | 'L' | 'd' | 'D' | 'f' | 'F' )
+                    // InternalChartDSL.g:9003: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();
@@ -3469,10 +3513,10 @@
         try {
             int _type = RULE_ID;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8604:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8604:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalChartDSL.g:9005:9: ( ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )* )
+            // InternalChartDSL.g:9005:11: ( '^' )? ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' ) ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8604:11: ( '^' )?
+            // InternalChartDSL.g:9005:11: ( '^' )?
             int alt9=2;
             int LA9_0 = input.LA(1);
 
@@ -3481,7 +3525,7 @@
             }
             switch (alt9) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8604:11: '^'
+                    // InternalChartDSL.g:9005:11: '^'
                     {
                     match('^'); 
 
@@ -3499,7 +3543,7 @@
                 recover(mse);
                 throw mse;}
 
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8604:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
+            // InternalChartDSL.g:9005:44: ( 'a' .. 'z' | 'A' .. 'Z' | '$' | '_' | '0' .. '9' )*
             loop10:
             do {
                 int alt10=2;
@@ -3512,7 +3556,7 @@
 
                 switch (alt10) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:
+            	    // InternalChartDSL.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();
@@ -3548,10 +3592,10 @@
         try {
             int _type = RULE_STRING;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalChartDSL.g:9007:13: ( ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? ) )
+            // InternalChartDSL.g:9007:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
+            // InternalChartDSL.g:9007:15: ( '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )? | '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )? )
             int alt15=2;
             int LA15_0 = input.LA(1);
 
@@ -3569,10 +3613,10 @@
             }
             switch (alt15) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
+                    // InternalChartDSL.g:9007:16: '\"' ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )* ( '\"' )?
                     {
                     match('\"'); 
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
+                    // InternalChartDSL.g:9007:20: ( '\\\\' . | ~ ( ( '\\\\' | '\"' ) ) )*
                     loop11:
                     do {
                         int alt11=3;
@@ -3588,7 +3632,7 @@
 
                         switch (alt11) {
                     	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:21: '\\\\' .
+                    	    // InternalChartDSL.g:9007:21: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -3596,7 +3640,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:28: ~ ( ( '\\\\' | '\"' ) )
+                    	    // InternalChartDSL.g:9007:28: ~ ( ( '\\\\' | '\"' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='!')||(input.LA(1)>='#' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -3616,7 +3660,7 @@
                         }
                     } while (true);
 
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:44: ( '\"' )?
+                    // InternalChartDSL.g:9007:44: ( '\"' )?
                     int alt12=2;
                     int LA12_0 = input.LA(1);
 
@@ -3625,7 +3669,7 @@
                     }
                     switch (alt12) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:44: '\"'
+                            // InternalChartDSL.g:9007:44: '\"'
                             {
                             match('\"'); 
 
@@ -3638,10 +3682,10 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
+                    // InternalChartDSL.g:9007:49: '\\'' ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )* ( '\\'' )?
                     {
                     match('\''); 
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
+                    // InternalChartDSL.g:9007:54: ( '\\\\' . | ~ ( ( '\\\\' | '\\'' ) ) )*
                     loop13:
                     do {
                         int alt13=3;
@@ -3657,7 +3701,7 @@
 
                         switch (alt13) {
                     	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:55: '\\\\' .
+                    	    // InternalChartDSL.g:9007:55: '\\\\' .
                     	    {
                     	    match('\\'); 
                     	    matchAny(); 
@@ -3665,7 +3709,7 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:62: ~ ( ( '\\\\' | '\\'' ) )
+                    	    // InternalChartDSL.g:9007:62: ~ ( ( '\\\\' | '\\'' ) )
                     	    {
                     	    if ( (input.LA(1)>='\u0000' && input.LA(1)<='&')||(input.LA(1)>='(' && input.LA(1)<='[')||(input.LA(1)>=']' && input.LA(1)<='\uFFFF') ) {
                     	        input.consume();
@@ -3685,7 +3729,7 @@
                         }
                     } while (true);
 
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:79: ( '\\'' )?
+                    // InternalChartDSL.g:9007:79: ( '\\'' )?
                     int alt14=2;
                     int LA14_0 = input.LA(1);
 
@@ -3694,7 +3738,7 @@
                     }
                     switch (alt14) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8606:79: '\\''
+                            // InternalChartDSL.g:9007:79: '\\''
                             {
                             match('\''); 
 
@@ -3725,12 +3769,12 @@
         try {
             int _type = RULE_ML_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8608:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8608:19: '/*' ( options {greedy=false; } : . )* '*/'
+            // InternalChartDSL.g:9009:17: ( '/*' ( options {greedy=false; } : . )* '*/' )
+            // InternalChartDSL.g:9009:19: '/*' ( options {greedy=false; } : . )* '*/'
             {
             match("/*"); 
 
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8608:24: ( options {greedy=false; } : . )*
+            // InternalChartDSL.g:9009:24: ( options {greedy=false; } : . )*
             loop16:
             do {
                 int alt16=2;
@@ -3755,7 +3799,7 @@
 
                 switch (alt16) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8608:52: .
+            	    // InternalChartDSL.g:9009:52: .
             	    {
             	    matchAny(); 
 
@@ -3785,12 +3829,12 @@
         try {
             int _type = RULE_SL_COMMENT;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8610:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8610:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
+            // InternalChartDSL.g:9011:17: ( '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )? )
+            // InternalChartDSL.g:9011:19: '//' (~ ( ( '\\n' | '\\r' ) ) )* ( ( '\\r' )? '\\n' )?
             {
             match("//"); 
 
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8610:24: (~ ( ( '\\n' | '\\r' ) ) )*
+            // InternalChartDSL.g:9011:24: (~ ( ( '\\n' | '\\r' ) ) )*
             loop17:
             do {
                 int alt17=2;
@@ -3803,7 +3847,7 @@
 
                 switch (alt17) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8610:24: ~ ( ( '\\n' | '\\r' ) )
+            	    // InternalChartDSL.g:9011: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();
@@ -3823,7 +3867,7 @@
                 }
             } while (true);
 
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8610:40: ( ( '\\r' )? '\\n' )?
+            // InternalChartDSL.g:9011:40: ( ( '\\r' )? '\\n' )?
             int alt19=2;
             int LA19_0 = input.LA(1);
 
@@ -3832,9 +3876,9 @@
             }
             switch (alt19) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8610:41: ( '\\r' )? '\\n'
+                    // InternalChartDSL.g:9011:41: ( '\\r' )? '\\n'
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8610:41: ( '\\r' )?
+                    // InternalChartDSL.g:9011:41: ( '\\r' )?
                     int alt18=2;
                     int LA18_0 = input.LA(1);
 
@@ -3843,7 +3887,7 @@
                     }
                     switch (alt18) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8610:41: '\\r'
+                            // InternalChartDSL.g:9011:41: '\\r'
                             {
                             match('\r'); 
 
@@ -3875,10 +3919,10 @@
         try {
             int _type = RULE_WS;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8612:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8612:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalChartDSL.g:9013:9: ( ( ' ' | '\\t' | '\\r' | '\\n' )+ )
+            // InternalChartDSL.g:9013:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8612:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
+            // InternalChartDSL.g:9013:11: ( ' ' | '\\t' | '\\r' | '\\n' )+
             int cnt20=0;
             loop20:
             do {
@@ -3892,7 +3936,7 @@
 
                 switch (alt20) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:
+            	    // InternalChartDSL.g:
             	    {
             	    if ( (input.LA(1)>='\t' && input.LA(1)<='\n')||input.LA(1)=='\r'||input.LA(1)==' ' ) {
             	        input.consume();
@@ -3932,8 +3976,8 @@
         try {
             int _type = RULE_ANY_OTHER;
             int _channel = DEFAULT_TOKEN_CHANNEL;
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8614:16: ( . )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:8614:18: .
+            // InternalChartDSL.g:9015:16: ( . )
+            // InternalChartDSL.g:9015:18: .
             {
             matchAny(); 
 
@@ -3948,1048 +3992,1062 @@
     // $ANTLR end "RULE_ANY_OTHER"
 
     public void mTokens() throws RecognitionException {
-        // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
-        int alt21=149;
+        // InternalChartDSL.g:1:8: ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER )
+        int alt21=151;
         alt21 = dfa21.predict(input);
         switch (alt21) {
             case 1 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:10: T__13
+                // InternalChartDSL.g:1:10: T__13
                 {
                 mT__13(); 
 
                 }
                 break;
             case 2 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:16: T__14
+                // InternalChartDSL.g:1:16: T__14
                 {
                 mT__14(); 
 
                 }
                 break;
             case 3 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:22: T__15
+                // InternalChartDSL.g:1:22: T__15
                 {
                 mT__15(); 
 
                 }
                 break;
             case 4 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:28: T__16
+                // InternalChartDSL.g:1:28: T__16
                 {
                 mT__16(); 
 
                 }
                 break;
             case 5 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:34: T__17
+                // InternalChartDSL.g:1:34: T__17
                 {
                 mT__17(); 
 
                 }
                 break;
             case 6 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:40: T__18
+                // InternalChartDSL.g:1:40: T__18
                 {
                 mT__18(); 
 
                 }
                 break;
             case 7 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:46: T__19
+                // InternalChartDSL.g:1:46: T__19
                 {
                 mT__19(); 
 
                 }
                 break;
             case 8 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:52: T__20
+                // InternalChartDSL.g:1:52: T__20
                 {
                 mT__20(); 
 
                 }
                 break;
             case 9 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:58: T__21
+                // InternalChartDSL.g:1:58: T__21
                 {
                 mT__21(); 
 
                 }
                 break;
             case 10 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:64: T__22
+                // InternalChartDSL.g:1:64: T__22
                 {
                 mT__22(); 
 
                 }
                 break;
             case 11 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:70: T__23
+                // InternalChartDSL.g:1:70: T__23
                 {
                 mT__23(); 
 
                 }
                 break;
             case 12 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:76: T__24
+                // InternalChartDSL.g:1:76: T__24
                 {
                 mT__24(); 
 
                 }
                 break;
             case 13 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:82: T__25
+                // InternalChartDSL.g:1:82: T__25
                 {
                 mT__25(); 
 
                 }
                 break;
             case 14 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:88: T__26
+                // InternalChartDSL.g:1:88: T__26
                 {
                 mT__26(); 
 
                 }
                 break;
             case 15 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:94: T__27
+                // InternalChartDSL.g:1:94: T__27
                 {
                 mT__27(); 
 
                 }
                 break;
             case 16 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:100: T__28
+                // InternalChartDSL.g:1:100: T__28
                 {
                 mT__28(); 
 
                 }
                 break;
             case 17 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:106: T__29
+                // InternalChartDSL.g:1:106: T__29
                 {
                 mT__29(); 
 
                 }
                 break;
             case 18 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:112: T__30
+                // InternalChartDSL.g:1:112: T__30
                 {
                 mT__30(); 
 
                 }
                 break;
             case 19 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:118: T__31
+                // InternalChartDSL.g:1:118: T__31
                 {
                 mT__31(); 
 
                 }
                 break;
             case 20 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:124: T__32
+                // InternalChartDSL.g:1:124: T__32
                 {
                 mT__32(); 
 
                 }
                 break;
             case 21 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:130: T__33
+                // InternalChartDSL.g:1:130: T__33
                 {
                 mT__33(); 
 
                 }
                 break;
             case 22 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:136: T__34
+                // InternalChartDSL.g:1:136: T__34
                 {
                 mT__34(); 
 
                 }
                 break;
             case 23 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:142: T__35
+                // InternalChartDSL.g:1:142: T__35
                 {
                 mT__35(); 
 
                 }
                 break;
             case 24 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:148: T__36
+                // InternalChartDSL.g:1:148: T__36
                 {
                 mT__36(); 
 
                 }
                 break;
             case 25 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:154: T__37
+                // InternalChartDSL.g:1:154: T__37
                 {
                 mT__37(); 
 
                 }
                 break;
             case 26 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:160: T__38
+                // InternalChartDSL.g:1:160: T__38
                 {
                 mT__38(); 
 
                 }
                 break;
             case 27 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:166: T__39
+                // InternalChartDSL.g:1:166: T__39
                 {
                 mT__39(); 
 
                 }
                 break;
             case 28 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:172: T__40
+                // InternalChartDSL.g:1:172: T__40
                 {
                 mT__40(); 
 
                 }
                 break;
             case 29 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:178: T__41
+                // InternalChartDSL.g:1:178: T__41
                 {
                 mT__41(); 
 
                 }
                 break;
             case 30 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:184: T__42
+                // InternalChartDSL.g:1:184: T__42
                 {
                 mT__42(); 
 
                 }
                 break;
             case 31 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:190: T__43
+                // InternalChartDSL.g:1:190: T__43
                 {
                 mT__43(); 
 
                 }
                 break;
             case 32 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:196: T__44
+                // InternalChartDSL.g:1:196: T__44
                 {
                 mT__44(); 
 
                 }
                 break;
             case 33 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:202: T__45
+                // InternalChartDSL.g:1:202: T__45
                 {
                 mT__45(); 
 
                 }
                 break;
             case 34 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:208: T__46
+                // InternalChartDSL.g:1:208: T__46
                 {
                 mT__46(); 
 
                 }
                 break;
             case 35 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:214: T__47
+                // InternalChartDSL.g:1:214: T__47
                 {
                 mT__47(); 
 
                 }
                 break;
             case 36 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:220: T__48
+                // InternalChartDSL.g:1:220: T__48
                 {
                 mT__48(); 
 
                 }
                 break;
             case 37 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:226: T__49
+                // InternalChartDSL.g:1:226: T__49
                 {
                 mT__49(); 
 
                 }
                 break;
             case 38 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:232: T__50
+                // InternalChartDSL.g:1:232: T__50
                 {
                 mT__50(); 
 
                 }
                 break;
             case 39 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:238: T__51
+                // InternalChartDSL.g:1:238: T__51
                 {
                 mT__51(); 
 
                 }
                 break;
             case 40 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:244: T__52
+                // InternalChartDSL.g:1:244: T__52
                 {
                 mT__52(); 
 
                 }
                 break;
             case 41 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:250: T__53
+                // InternalChartDSL.g:1:250: T__53
                 {
                 mT__53(); 
 
                 }
                 break;
             case 42 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:256: T__54
+                // InternalChartDSL.g:1:256: T__54
                 {
                 mT__54(); 
 
                 }
                 break;
             case 43 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:262: T__55
+                // InternalChartDSL.g:1:262: T__55
                 {
                 mT__55(); 
 
                 }
                 break;
             case 44 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:268: T__56
+                // InternalChartDSL.g:1:268: T__56
                 {
                 mT__56(); 
 
                 }
                 break;
             case 45 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:274: T__57
+                // InternalChartDSL.g:1:274: T__57
                 {
                 mT__57(); 
 
                 }
                 break;
             case 46 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:280: T__58
+                // InternalChartDSL.g:1:280: T__58
                 {
                 mT__58(); 
 
                 }
                 break;
             case 47 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:286: T__59
+                // InternalChartDSL.g:1:286: T__59
                 {
                 mT__59(); 
 
                 }
                 break;
             case 48 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:292: T__60
+                // InternalChartDSL.g:1:292: T__60
                 {
                 mT__60(); 
 
                 }
                 break;
             case 49 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:298: T__61
+                // InternalChartDSL.g:1:298: T__61
                 {
                 mT__61(); 
 
                 }
                 break;
             case 50 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:304: T__62
+                // InternalChartDSL.g:1:304: T__62
                 {
                 mT__62(); 
 
                 }
                 break;
             case 51 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:310: T__63
+                // InternalChartDSL.g:1:310: T__63
                 {
                 mT__63(); 
 
                 }
                 break;
             case 52 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:316: T__64
+                // InternalChartDSL.g:1:316: T__64
                 {
                 mT__64(); 
 
                 }
                 break;
             case 53 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:322: T__65
+                // InternalChartDSL.g:1:322: T__65
                 {
                 mT__65(); 
 
                 }
                 break;
             case 54 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:328: T__66
+                // InternalChartDSL.g:1:328: T__66
                 {
                 mT__66(); 
 
                 }
                 break;
             case 55 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:334: T__67
+                // InternalChartDSL.g:1:334: T__67
                 {
                 mT__67(); 
 
                 }
                 break;
             case 56 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:340: T__68
+                // InternalChartDSL.g:1:340: T__68
                 {
                 mT__68(); 
 
                 }
                 break;
             case 57 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:346: T__69
+                // InternalChartDSL.g:1:346: T__69
                 {
                 mT__69(); 
 
                 }
                 break;
             case 58 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:352: T__70
+                // InternalChartDSL.g:1:352: T__70
                 {
                 mT__70(); 
 
                 }
                 break;
             case 59 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:358: T__71
+                // InternalChartDSL.g:1:358: T__71
                 {
                 mT__71(); 
 
                 }
                 break;
             case 60 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:364: T__72
+                // InternalChartDSL.g:1:364: T__72
                 {
                 mT__72(); 
 
                 }
                 break;
             case 61 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:370: T__73
+                // InternalChartDSL.g:1:370: T__73
                 {
                 mT__73(); 
 
                 }
                 break;
             case 62 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:376: T__74
+                // InternalChartDSL.g:1:376: T__74
                 {
                 mT__74(); 
 
                 }
                 break;
             case 63 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:382: T__75
+                // InternalChartDSL.g:1:382: T__75
                 {
                 mT__75(); 
 
                 }
                 break;
             case 64 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:388: T__76
+                // InternalChartDSL.g:1:388: T__76
                 {
                 mT__76(); 
 
                 }
                 break;
             case 65 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:394: T__77
+                // InternalChartDSL.g:1:394: T__77
                 {
                 mT__77(); 
 
                 }
                 break;
             case 66 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:400: T__78
+                // InternalChartDSL.g:1:400: T__78
                 {
                 mT__78(); 
 
                 }
                 break;
             case 67 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:406: T__79
+                // InternalChartDSL.g:1:406: T__79
                 {
                 mT__79(); 
 
                 }
                 break;
             case 68 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:412: T__80
+                // InternalChartDSL.g:1:412: T__80
                 {
                 mT__80(); 
 
                 }
                 break;
             case 69 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:418: T__81
+                // InternalChartDSL.g:1:418: T__81
                 {
                 mT__81(); 
 
                 }
                 break;
             case 70 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:424: T__82
+                // InternalChartDSL.g:1:424: T__82
                 {
                 mT__82(); 
 
                 }
                 break;
             case 71 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:430: T__83
+                // InternalChartDSL.g:1:430: T__83
                 {
                 mT__83(); 
 
                 }
                 break;
             case 72 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:436: T__84
+                // InternalChartDSL.g:1:436: T__84
                 {
                 mT__84(); 
 
                 }
                 break;
             case 73 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:442: T__85
+                // InternalChartDSL.g:1:442: T__85
                 {
                 mT__85(); 
 
                 }
                 break;
             case 74 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:448: T__86
+                // InternalChartDSL.g:1:448: T__86
                 {
                 mT__86(); 
 
                 }
                 break;
             case 75 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:454: T__87
+                // InternalChartDSL.g:1:454: T__87
                 {
                 mT__87(); 
 
                 }
                 break;
             case 76 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:460: T__88
+                // InternalChartDSL.g:1:460: T__88
                 {
                 mT__88(); 
 
                 }
                 break;
             case 77 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:466: T__89
+                // InternalChartDSL.g:1:466: T__89
                 {
                 mT__89(); 
 
                 }
                 break;
             case 78 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:472: T__90
+                // InternalChartDSL.g:1:472: T__90
                 {
                 mT__90(); 
 
                 }
                 break;
             case 79 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:478: T__91
+                // InternalChartDSL.g:1:478: T__91
                 {
                 mT__91(); 
 
                 }
                 break;
             case 80 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:484: T__92
+                // InternalChartDSL.g:1:484: T__92
                 {
                 mT__92(); 
 
                 }
                 break;
             case 81 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:490: T__93
+                // InternalChartDSL.g:1:490: T__93
                 {
                 mT__93(); 
 
                 }
                 break;
             case 82 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:496: T__94
+                // InternalChartDSL.g:1:496: T__94
                 {
                 mT__94(); 
 
                 }
                 break;
             case 83 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:502: T__95
+                // InternalChartDSL.g:1:502: T__95
                 {
                 mT__95(); 
 
                 }
                 break;
             case 84 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:508: T__96
+                // InternalChartDSL.g:1:508: T__96
                 {
                 mT__96(); 
 
                 }
                 break;
             case 85 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:514: T__97
+                // InternalChartDSL.g:1:514: T__97
                 {
                 mT__97(); 
 
                 }
                 break;
             case 86 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:520: T__98
+                // InternalChartDSL.g:1:520: T__98
                 {
                 mT__98(); 
 
                 }
                 break;
             case 87 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:526: T__99
+                // InternalChartDSL.g:1:526: T__99
                 {
                 mT__99(); 
 
                 }
                 break;
             case 88 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:532: T__100
+                // InternalChartDSL.g:1:532: T__100
                 {
                 mT__100(); 
 
                 }
                 break;
             case 89 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:539: T__101
+                // InternalChartDSL.g:1:539: T__101
                 {
                 mT__101(); 
 
                 }
                 break;
             case 90 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:546: T__102
+                // InternalChartDSL.g:1:546: T__102
                 {
                 mT__102(); 
 
                 }
                 break;
             case 91 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:553: T__103
+                // InternalChartDSL.g:1:553: T__103
                 {
                 mT__103(); 
 
                 }
                 break;
             case 92 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:560: T__104
+                // InternalChartDSL.g:1:560: T__104
                 {
                 mT__104(); 
 
                 }
                 break;
             case 93 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:567: T__105
+                // InternalChartDSL.g:1:567: T__105
                 {
                 mT__105(); 
 
                 }
                 break;
             case 94 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:574: T__106
+                // InternalChartDSL.g:1:574: T__106
                 {
                 mT__106(); 
 
                 }
                 break;
             case 95 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:581: T__107
+                // InternalChartDSL.g:1:581: T__107
                 {
                 mT__107(); 
 
                 }
                 break;
             case 96 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:588: T__108
+                // InternalChartDSL.g:1:588: T__108
                 {
                 mT__108(); 
 
                 }
                 break;
             case 97 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:595: T__109
+                // InternalChartDSL.g:1:595: T__109
                 {
                 mT__109(); 
 
                 }
                 break;
             case 98 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:602: T__110
+                // InternalChartDSL.g:1:602: T__110
                 {
                 mT__110(); 
 
                 }
                 break;
             case 99 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:609: T__111
+                // InternalChartDSL.g:1:609: T__111
                 {
                 mT__111(); 
 
                 }
                 break;
             case 100 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:616: T__112
+                // InternalChartDSL.g:1:616: T__112
                 {
                 mT__112(); 
 
                 }
                 break;
             case 101 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:623: T__113
+                // InternalChartDSL.g:1:623: T__113
                 {
                 mT__113(); 
 
                 }
                 break;
             case 102 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:630: T__114
+                // InternalChartDSL.g:1:630: T__114
                 {
                 mT__114(); 
 
                 }
                 break;
             case 103 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:637: T__115
+                // InternalChartDSL.g:1:637: T__115
                 {
                 mT__115(); 
 
                 }
                 break;
             case 104 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:644: T__116
+                // InternalChartDSL.g:1:644: T__116
                 {
                 mT__116(); 
 
                 }
                 break;
             case 105 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:651: T__117
+                // InternalChartDSL.g:1:651: T__117
                 {
                 mT__117(); 
 
                 }
                 break;
             case 106 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:658: T__118
+                // InternalChartDSL.g:1:658: T__118
                 {
                 mT__118(); 
 
                 }
                 break;
             case 107 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:665: T__119
+                // InternalChartDSL.g:1:665: T__119
                 {
                 mT__119(); 
 
                 }
                 break;
             case 108 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:672: T__120
+                // InternalChartDSL.g:1:672: T__120
                 {
                 mT__120(); 
 
                 }
                 break;
             case 109 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:679: T__121
+                // InternalChartDSL.g:1:679: T__121
                 {
                 mT__121(); 
 
                 }
                 break;
             case 110 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:686: T__122
+                // InternalChartDSL.g:1:686: T__122
                 {
                 mT__122(); 
 
                 }
                 break;
             case 111 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:693: T__123
+                // InternalChartDSL.g:1:693: T__123
                 {
                 mT__123(); 
 
                 }
                 break;
             case 112 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:700: T__124
+                // InternalChartDSL.g:1:700: T__124
                 {
                 mT__124(); 
 
                 }
                 break;
             case 113 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:707: T__125
+                // InternalChartDSL.g:1:707: T__125
                 {
                 mT__125(); 
 
                 }
                 break;
             case 114 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:714: T__126
+                // InternalChartDSL.g:1:714: T__126
                 {
                 mT__126(); 
 
                 }
                 break;
             case 115 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:721: T__127
+                // InternalChartDSL.g:1:721: T__127
                 {
                 mT__127(); 
 
                 }
                 break;
             case 116 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:728: T__128
+                // InternalChartDSL.g:1:728: T__128
                 {
                 mT__128(); 
 
                 }
                 break;
             case 117 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:735: T__129
+                // InternalChartDSL.g:1:735: T__129
                 {
                 mT__129(); 
 
                 }
                 break;
             case 118 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:742: T__130
+                // InternalChartDSL.g:1:742: T__130
                 {
                 mT__130(); 
 
                 }
                 break;
             case 119 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:749: T__131
+                // InternalChartDSL.g:1:749: T__131
                 {
                 mT__131(); 
 
                 }
                 break;
             case 120 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:756: T__132
+                // InternalChartDSL.g:1:756: T__132
                 {
                 mT__132(); 
 
                 }
                 break;
             case 121 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:763: T__133
+                // InternalChartDSL.g:1:763: T__133
                 {
                 mT__133(); 
 
                 }
                 break;
             case 122 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:770: T__134
+                // InternalChartDSL.g:1:770: T__134
                 {
                 mT__134(); 
 
                 }
                 break;
             case 123 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:777: T__135
+                // InternalChartDSL.g:1:777: T__135
                 {
                 mT__135(); 
 
                 }
                 break;
             case 124 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:784: T__136
+                // InternalChartDSL.g:1:784: T__136
                 {
                 mT__136(); 
 
                 }
                 break;
             case 125 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:791: T__137
+                // InternalChartDSL.g:1:791: T__137
                 {
                 mT__137(); 
 
                 }
                 break;
             case 126 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:798: T__138
+                // InternalChartDSL.g:1:798: T__138
                 {
                 mT__138(); 
 
                 }
                 break;
             case 127 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:805: T__139
+                // InternalChartDSL.g:1:805: T__139
                 {
                 mT__139(); 
 
                 }
                 break;
             case 128 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:812: T__140
+                // InternalChartDSL.g:1:812: T__140
                 {
                 mT__140(); 
 
                 }
                 break;
             case 129 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:819: T__141
+                // InternalChartDSL.g:1:819: T__141
                 {
                 mT__141(); 
 
                 }
                 break;
             case 130 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:826: T__142
+                // InternalChartDSL.g:1:826: T__142
                 {
                 mT__142(); 
 
                 }
                 break;
             case 131 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:833: T__143
+                // InternalChartDSL.g:1:833: T__143
                 {
                 mT__143(); 
 
                 }
                 break;
             case 132 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:840: T__144
+                // InternalChartDSL.g:1:840: T__144
                 {
                 mT__144(); 
 
                 }
                 break;
             case 133 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:847: T__145
+                // InternalChartDSL.g:1:847: T__145
                 {
                 mT__145(); 
 
                 }
                 break;
             case 134 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:854: T__146
+                // InternalChartDSL.g:1:854: T__146
                 {
                 mT__146(); 
 
                 }
                 break;
             case 135 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:861: T__147
+                // InternalChartDSL.g:1:861: T__147
                 {
                 mT__147(); 
 
                 }
                 break;
             case 136 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:868: T__148
+                // InternalChartDSL.g:1:868: T__148
                 {
                 mT__148(); 
 
                 }
                 break;
             case 137 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:875: T__149
+                // InternalChartDSL.g:1:875: T__149
                 {
                 mT__149(); 
 
                 }
                 break;
             case 138 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:882: T__150
+                // InternalChartDSL.g:1:882: T__150
                 {
                 mT__150(); 
 
                 }
                 break;
             case 139 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:889: T__151
+                // InternalChartDSL.g:1:889: T__151
                 {
                 mT__151(); 
 
                 }
                 break;
             case 140 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:896: T__152
+                // InternalChartDSL.g:1:896: T__152
                 {
                 mT__152(); 
 
                 }
                 break;
             case 141 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:903: RULE_HEX
+                // InternalChartDSL.g:1:903: T__153
+                {
+                mT__153(); 
+
+                }
+                break;
+            case 142 :
+                // InternalChartDSL.g:1:910: T__154
+                {
+                mT__154(); 
+
+                }
+                break;
+            case 143 :
+                // InternalChartDSL.g:1:917: RULE_HEX
                 {
                 mRULE_HEX(); 
 
                 }
                 break;
-            case 142 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:912: RULE_INT
+            case 144 :
+                // InternalChartDSL.g:1:926: RULE_INT
                 {
                 mRULE_INT(); 
 
                 }
                 break;
-            case 143 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:921: RULE_DECIMAL
+            case 145 :
+                // InternalChartDSL.g:1:935: RULE_DECIMAL
                 {
                 mRULE_DECIMAL(); 
 
                 }
                 break;
-            case 144 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:934: RULE_ID
+            case 146 :
+                // InternalChartDSL.g:1:948: RULE_ID
                 {
                 mRULE_ID(); 
 
                 }
                 break;
-            case 145 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:942: RULE_STRING
+            case 147 :
+                // InternalChartDSL.g:1:956: RULE_STRING
                 {
                 mRULE_STRING(); 
 
                 }
                 break;
-            case 146 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:954: RULE_ML_COMMENT
+            case 148 :
+                // InternalChartDSL.g:1:968: RULE_ML_COMMENT
                 {
                 mRULE_ML_COMMENT(); 
 
                 }
                 break;
-            case 147 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:970: RULE_SL_COMMENT
+            case 149 :
+                // InternalChartDSL.g:1:984: RULE_SL_COMMENT
                 {
                 mRULE_SL_COMMENT(); 
 
                 }
                 break;
-            case 148 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:986: RULE_WS
+            case 150 :
+                // InternalChartDSL.g:1:1000: RULE_WS
                 {
                 mRULE_WS(); 
 
                 }
                 break;
-            case 149 :
-                // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1:994: RULE_ANY_OTHER
+            case 151 :
+                // InternalChartDSL.g:1:1008: RULE_ANY_OTHER
                 {
                 mRULE_ANY_OTHER(); 
 
@@ -5003,220 +5061,66 @@
 
     protected DFA21 dfa21 = new DFA21(this);
     static final String DFA21_eotS =
-        "\1\uffff\1\72\2\uffff\20\72\1\162\1\164\1\167\4\uffff\1\176\3\uffff"+
-        "\1\u0084\1\u0088\1\u008a\1\u008c\1\u008e\1\u0090\1\u0092\1\u0094"+
-        "\1\u0097\1\u0099\1\uffff\4\72\2\u00a4\1\65\5\uffff\4\72\3\uffff"+
-        "\5\72\1\u00b4\1\72\1\u00b6\50\72\1\u00e9\1\72\4\uffff\1\u00ee\10"+
-        "\uffff\1\u00f0\26\uffff\1\u00f2\7\uffff\7\72\1\uffff\1\u00a4\4\uffff"+
-        "\2\72\1\u00fd\11\72\1\uffff\1\72\1\uffff\4\72\1\uffff\1\u010e\22"+
-        "\72\1\u0124\10\72\1\u012d\11\72\1\u0137\6\72\1\uffff\3\72\6\uffff"+
-        "\2\72\1\u0144\1\u0145\1\u0146\5\72\1\uffff\4\72\1\u0151\6\72\1\u0158"+
-        "\2\72\1\u015b\1\72\1\uffff\13\72\1\u0168\1\72\1\u016b\4\72\1\u0170"+
-        "\1\72\1\u0172\1\uffff\5\72\1\u0178\2\72\1\uffff\1\72\1\u017d\1\72"+
-        "\1\u017f\1\72\1\u0181\3\72\1\uffff\13\72\1\u0190\3\uffff\1\u0191"+
-        "\6\72\1\u0198\2\72\1\uffff\1\u019b\3\72\1\u019f\1\72\1\uffff\2\72"+
-        "\1\uffff\1\u01a3\11\72\1\u01ad\1\72\1\uffff\1\u01b0\1\72\1\uffff"+
-        "\1\u01b2\3\72\1\uffff\1\72\1\uffff\4\72\1\u01bb\1\uffff\3\72\1\u01bf"+
-        "\1\uffff\1\u01c0\1\uffff\1\72\1\uffff\4\72\1\u01c7\10\72\1\u01d0"+
-        "\2\uffff\1\72\1\u01d3\4\72\1\uffff\1\u01d8\1\72\1\uffff\3\72\1\uffff"+
-        "\2\72\1\u01df\1\uffff\1\u01e0\1\u01e1\3\72\1\u01e5\1\72\1\u01e7"+
-        "\1\72\1\uffff\1\72\2\uffff\1\u01ec\1\uffff\1\u01ed\4\72\1\u01f2"+
-        "\1\72\1\u01f4\1\uffff\1\72\1\u01f6\1\72\2\uffff\6\72\1\uffff\2\72"+
-        "\1\u0201\1\72\1\u0203\1\u0204\1\72\1\u0206\1\uffff\1\u0207\2\uffff"+
-        "\1\72\1\u020b\1\u020c\1\u020d\1\uffff\3\72\1\u0211\2\72\3\uffff"+
-        "\2\72\1\u0216\1\uffff\1\u0217\1\uffff\2\72\4\uffff\3\72\1\u021d"+
-        "\1\uffff\1\72\1\uffff\1\72\1\uffff\1\u0220\1\u0221\2\72\1\u0224"+
-        "\1\u0225\3\72\2\uffff\1\72\2\uffff\1\u022a\4\uffff\1\u022c\3\uffff"+
-        "\1\72\1\u022e\1\72\1\uffff\1\u0230\1\u0231\2\72\2\uffff\5\72\1\uffff"+
-        "\1\72\1\u023a\2\uffff\2\72\2\uffff\1\u023d\1\u023e\2\72\3\uffff"+
-        "\1\72\1\uffff\1\72\2\uffff\5\72\1\u0248\1\72\1\u024a\1\uffff\1\u024b"+
-        "\1\72\2\uffff\1\u024d\2\72\1\uffff\1\u0250\1\u0251\3\72\1\uffff"+
-        "\1\72\2\uffff\1\u0256\1\uffff\1\u0257\1\u0258\2\uffff\2\72\1\u025b"+
-        "\1\u025c\3\uffff\1\u025d\1\u025e\4\uffff";
+        "\1\uffff\1\72\2\uffff\20\72\1\161\1\164\1\72\5\uffff\1\u0080\3\uffff\1\u0086\1\u008a\1\u008c\1\u008e\1\u0090\1\u0092\1\u0094\1\u0096\1\u0098\1\u009b\1\u009d\3\72\2\u00a4\1\65\5\uffff\4\72\3\uffff\5\72\1\u00b4\1\72\1\u00b6\47\72\1\u00ea\1\72\7\uffff\1\u00ee\3\72\5\uffff\1\u00f3\26\uffff\1\u00f5\1\uffff\1\u00f7\6\uffff\4\72\1\uffff\1\u00a4\4\uffff\2\72\1\u00ff\11\72\1\uffff\1\72\1\uffff\21\72\1\u011f\10\72\1\u0129\7\72\1\u0131\11\72\1\u013b\6\72\1\uffff\3\72\1\uffff\1\u0146\2\72\6\uffff\2\72\1\u014c\1\u014d\3\72\1\uffff\4\72\1\u0155\6\72\1\u015c\3\72\1\u0160\13\72\1\u016c\2\72\1\u016f\1\uffff\1\72\1\u0172\4\72\1\u0177\1\72\1\u0179\1\uffff\4\72\1\u017e\2\72\1\uffff\1\72\1\u0183\2\72\1\u0186\1\u0187\3\72\1\uffff\12\72\1\uffff\1\u0195\3\72\1\u0199\2\uffff\4\72\1\u019e\2\72\1\uffff\1\u01a1\3\72\1\u01a5\1\72\1\uffff\1\72\1\u01a8\1\72\1\uffff\11\72\1\u01b3\1\72\1\uffff\1\u01b6\1\u01b7\1\uffff\2\72\1\uffff\1\u01ba\3\72\1\uffff\1\72\1\uffff\3\72\1\u01c2\1\uffff\3\72\1\u01c6\1\uffff\1\u01c7\1\72\2\uffff\4\72\1\u01ce\10\72\1\uffff\1\72\1\u01d9\1\u01da\1\uffff\4\72\1\uffff\1\u01df\1\72\1\uffff\3\72\1\uffff\2\72\1\uffff\1\u01e6\2\72\1\u01e9\3\72\1\u01ed\1\72\1\u01ef\1\uffff\1\72\3\uffff\1\u01f3\1\u01f4\1\uffff\1\u01f5\4\72\1\u01fa\1\u01fb\1\uffff\1\72\1\u01fd\1\72\2\uffff\6\72\1\uffff\2\72\1\u0208\1\72\1\u020a\1\u020b\1\72\1\u020d\1\u020e\3\uffff\1\72\1\u0212\1\u0213\1\u0214\1\uffff\3\72\1\u0218\2\72\1\uffff\2\72\1\uffff\2\72\1\u021f\1\uffff\1\u0220\1\uffff\1\72\5\uffff\3\72\1\u0225\2\uffff\1\72\1\uffff\1\u0227\1\72\1\u0229\1\72\1\u022b\1\u022c\3\72\2\uffff\1\72\2\uffff\1\u0231\4\uffff\1\u0233\3\uffff\1\72\1\u0235\1\72\1\uffff\1\u0237\1\u0238\4\72\2\uffff\4\72\1\uffff\1\u0241\1\uffff\1\72\1\uffff\1\72\2\uffff\1\u0244\1\u0245\2\72\3\uffff\1\72\1\uffff\1\72\2\uffff\6\72\1\u0250\1\72\1\uffff\1\u0252\1\72\2\uffff\1\u0254\3\72\1\u0258\1\72\1\u025a\1\u025b\2\72\1\uffff\1\72\1\uffff\1\u025f\1\uffff\1\u0260\1\u0261\1\u0262\1\uffff\1\72\2\uffff\1\72\1\u0265\1\u0266\4\uffff\1\u0267\1\u0268\4\uffff";
     static final String DFA21_eofS =
-        "\u025f\uffff";
+        "\u0269\uffff";
     static final String DFA21_minS =
-        "\1\0\1\141\2\uffff\2\141\1\154\1\160\1\141\1\145\1\141\1\150\1"+
-        "\157\5\141\1\146\1\145\1\55\1\56\1\52\4\uffff\1\75\3\uffff\1\53"+
-        "\1\52\1\75\1\76\1\75\1\174\1\46\1\75\1\56\1\72\1\uffff\1\145\1\141"+
-        "\1\145\1\165\2\60\1\44\5\uffff\1\143\1\154\1\145\1\162\3\uffff\1"+
-        "\141\1\162\1\154\1\163\1\146\1\44\1\164\1\44\1\151\1\167\2\151\1"+
-        "\40\1\162\1\142\3\141\1\147\1\160\1\156\1\157\1\165\1\156\1\142"+
-        "\2\147\1\141\1\147\1\143\1\160\1\162\1\157\1\154\1\162\1\154\1\160"+
-        "\1\163\1\164\1\163\1\154\1\156\1\160\1\141\1\165\2\163\1\160\1\44"+
-        "\1\156\4\uffff\1\74\10\uffff\1\75\26\uffff\1\75\7\uffff\1\151\1"+
-        "\163\1\154\1\167\1\154\1\162\1\164\1\uffff\1\60\4\uffff\1\153\1"+
-        "\154\1\44\1\141\1\162\1\163\1\154\1\145\2\143\1\141\1\165\1\uffff"+
-        "\1\141\1\uffff\1\155\1\141\1\163\1\156\1\uffff\1\44\1\142\1\144"+
-        "\1\162\1\160\1\164\1\143\1\155\1\145\1\143\1\167\1\164\3\145\1\141"+
-        "\1\145\1\156\1\145\1\44\1\154\1\147\1\153\1\145\1\157\1\155\1\154"+
-        "\1\141\1\44\1\163\2\164\2\145\2\164\2\151\1\44\1\144\1\147\1\124"+
-        "\1\145\1\151\1\157\1\uffff\1\154\1\144\1\165\6\uffff\1\154\1\164"+
-        "\3\44\1\154\1\155\1\163\1\141\1\151\1\uffff\1\155\1\164\1\157\1"+
-        "\141\1\44\1\150\1\147\1\162\1\165\1\164\1\155\1\44\1\141\1\171\1"+
-        "\44\1\147\1\uffff\1\154\1\145\1\115\1\164\1\160\1\143\1\153\1\151"+
-        "\1\145\1\162\1\150\1\44\1\150\1\44\1\154\1\156\1\162\1\144\1\44"+
-        "\1\163\1\44\1\uffff\1\164\1\154\1\141\1\157\1\167\1\44\1\132\1\154"+
-        "\1\uffff\1\145\1\44\1\171\1\44\1\156\1\44\1\151\2\155\1\uffff\1"+
-        "\151\1\145\1\151\1\162\1\144\1\141\1\162\1\157\1\145\1\162\1\145"+
-        "\1\44\3\uffff\1\44\1\141\1\150\1\151\1\147\1\156\1\151\1\44\1\162"+
-        "\1\160\1\uffff\1\44\1\157\1\151\1\154\1\44\1\141\1\uffff\1\164\1"+
-        "\163\1\uffff\1\44\1\145\1\144\1\141\1\114\1\145\1\150\1\145\1\143"+
-        "\1\156\1\44\1\162\1\uffff\1\44\1\162\1\uffff\1\44\1\144\1\151\1"+
-        "\114\1\uffff\1\160\1\uffff\1\151\1\145\1\156\1\146\1\44\1\uffff"+
-        "\1\145\1\144\1\154\1\44\1\uffff\1\44\1\uffff\1\144\1\uffff\1\160"+
-        "\2\165\1\145\1\44\1\143\1\166\1\145\1\156\2\164\1\162\1\156\1\44"+
-        "\2\uffff\1\154\1\44\1\144\1\145\1\147\1\144\1\uffff\1\44\1\163\1"+
-        "\uffff\1\162\1\142\1\164\1\uffff\1\162\1\145\1\44\1\uffff\2\44\1"+
-        "\162\1\141\1\144\1\44\1\144\1\44\1\164\1\uffff\1\157\1\145\1\uffff"+
-        "\1\44\1\uffff\1\44\1\164\1\151\1\141\1\160\1\44\1\147\1\44\1\uffff"+
-        "\1\162\1\44\1\171\2\uffff\1\163\1\151\1\154\2\155\1\156\1\uffff"+
-        "\1\153\1\141\1\44\1\143\2\44\1\163\1\44\1\uffff\1\44\1\145\1\uffff"+
-        "\1\145\3\44\1\uffff\1\151\1\171\1\145\1\44\1\164\1\144\3\uffff\1"+
-        "\153\1\142\1\44\1\uffff\1\44\1\uffff\1\143\1\156\4\uffff\1\150\1"+
-        "\156\1\162\1\44\1\uffff\1\154\1\uffff\1\157\1\uffff\2\44\1\157\1"+
-        "\151\2\44\1\164\1\163\1\154\2\uffff\1\145\2\uffff\1\44\4\uffff\1"+
-        "\44\3\uffff\1\142\1\44\1\144\1\uffff\2\44\2\145\2\uffff\1\157\1"+
-        "\151\1\155\2\145\1\uffff\1\145\1\44\2\uffff\1\156\1\145\2\uffff"+
-        "\2\44\1\163\1\157\3\uffff\1\154\1\uffff\1\40\2\uffff\1\162\2\154"+
-        "\1\172\1\151\1\44\1\156\1\44\1\uffff\1\44\1\162\2\uffff\1\44\1\146"+
-        "\1\145\1\uffff\2\44\1\157\1\145\1\143\1\uffff\1\164\2\uffff\1\44"+
-        "\1\uffff\2\44\2\uffff\1\162\1\144\2\44\3\uffff\2\44\4\uffff";
+        "\1\0\1\141\2\uffff\2\141\1\154\1\145\1\160\2\141\1\150\1\157\5\141\1\146\1\145\1\55\1\52\1\145\5\uffff\1\75\3\uffff\1\53\1\52\1\75\1\76\1\75\1\174\1\46\1\75\2\56\1\72\1\145\1\141\1\165\2\60\1\44\5\uffff\1\143\1\154\1\145\1\162\3\uffff\1\141\1\162\1\154\1\163\1\146\1\44\1\164\1\44\1\147\1\167\1\151\1\147\3\141\1\160\1\156\1\157\1\165\1\151\1\124\1\162\1\142\1\156\1\142\2\147\1\141\1\147\1\160\1\162\1\157\1\154\1\162\1\154\1\160\1\164\2\163\1\154\1\156\1\160\1\141\1\165\2\163\1\160\1\44\1\156\7\uffff\1\44\1\167\1\154\1\162\5\uffff\1\75\26\uffff\1\75\1\uffff\1\74\6\uffff\1\151\1\163\1\154\1\164\1\uffff\1\60\4\uffff\1\153\1\154\1\44\1\141\1\162\1\163\1\154\1\145\2\143\1\141\1\165\1\uffff\1\141\1\uffff\1\155\1\154\1\141\1\163\1\145\1\155\1\144\1\162\1\160\1\164\1\143\1\145\1\143\1\167\1\164\1\156\1\157\1\44\1\142\3\145\1\141\1\145\1\156\1\145\1\44\1\154\1\147\1\145\1\157\1\155\1\154\1\141\1\44\1\163\2\164\2\145\2\164\2\151\1\44\1\144\1\147\1\124\1\145\1\151\1\157\1\uffff\1\154\1\144\1\165\1\uffff\1\44\1\154\1\155\6\uffff\1\154\1\164\2\44\1\163\1\141\1\151\1\uffff\1\155\1\164\1\157\1\141\1\44\1\150\1\147\1\162\1\165\1\164\1\155\1\44\1\141\1\145\1\171\1\44\1\143\2\145\1\115\1\164\1\160\1\143\1\153\1\151\1\162\1\150\1\44\1\150\1\147\1\44\1\uffff\1\154\1\44\1\154\1\156\1\162\1\144\1\44\1\163\1\44\1\uffff\1\164\1\154\1\157\1\167\1\44\1\132\1\154\1\uffff\1\145\1\44\1\171\1\156\2\44\1\151\2\155\1\uffff\1\151\1\145\1\151\1\162\1\144\1\141\1\162\1\157\1\145\1\162\1\uffff\1\44\1\141\1\150\1\145\1\44\2\uffff\1\151\1\147\1\156\1\151\1\44\1\162\1\160\1\uffff\1\44\1\157\1\151\1\154\1\44\1\141\1\uffff\1\164\1\44\1\163\1\uffff\1\164\1\156\1\144\1\141\1\114\1\145\1\150\1\145\1\143\1\44\1\162\1\uffff\2\44\1\uffff\1\145\1\162\1\uffff\1\44\1\144\1\151\1\114\1\uffff\1\160\1\uffff\1\151\1\145\1\146\1\44\1\uffff\1\145\1\144\1\154\1\44\1\uffff\1\44\1\144\2\uffff\1\160\2\165\1\145\1\44\1\143\1\166\1\145\1\156\2\164\1\162\1\156\1\uffff\1\154\2\44\1\uffff\1\144\1\145\1\147\1\144\1\uffff\1\44\1\163\1\uffff\1\162\1\142\1\164\1\uffff\1\162\1\145\1\uffff\1\44\1\102\1\164\1\44\1\162\1\141\1\144\1\44\1\144\1\44\1\uffff\1\157\1\145\2\uffff\2\44\1\uffff\1\44\1\164\1\151\1\141\1\160\2\44\1\uffff\1\162\1\44\1\171\2\uffff\1\151\1\163\1\154\2\155\1\156\1\uffff\1\153\1\141\1\44\1\143\2\44\1\163\2\44\1\145\2\uffff\1\145\3\44\1\uffff\1\151\1\171\1\145\1\44\1\164\1\144\1\uffff\1\171\1\143\1\uffff\1\153\1\142\1\44\1\uffff\1\44\1\uffff\1\156\5\uffff\1\150\1\156\1\162\1\44\2\uffff\1\157\1\uffff\1\44\1\157\1\44\1\151\2\44\1\164\1\163\1\154\2\uffff\1\145\2\uffff\1\44\4\uffff\1\44\3\uffff\1\142\1\44\1\144\1\uffff\2\44\1\111\1\157\2\145\2\uffff\1\151\1\155\2\145\1\uffff\1\44\1\uffff\1\156\1\uffff\1\145\2\uffff\2\44\1\163\1\157\3\uffff\1\154\1\uffff\1\102\2\uffff\1\144\1\154\1\162\1\154\1\172\1\151\1\44\1\156\1\uffff\1\44\1\162\2\uffff\1\44\1\146\1\145\1\171\1\44\1\157\2\44\1\145\1\143\1\uffff\1\164\1\uffff\1\44\1\uffff\3\44\1\uffff\1\162\2\uffff\1\144\2\44\4\uffff\2\44\4\uffff";
     static final String DFA21_maxS =
-        "\1\uffff\1\171\2\uffff\1\165\1\157\1\170\1\163\1\165\1\171\1\157"+
-        "\1\171\2\157\1\170\1\165\1\162\1\141\1\156\1\145\1\76\1\56\1\75"+
-        "\4\uffff\1\76\3\uffff\3\75\1\76\1\75\1\174\1\46\1\75\2\72\1\uffff"+
-        "\1\150\1\141\2\165\1\170\1\154\1\172\5\uffff\1\143\1\154\1\145\1"+
-        "\162\3\uffff\1\141\1\162\1\154\1\164\1\163\1\172\1\164\1\172\1\151"+
-        "\1\167\2\151\1\40\1\162\1\142\1\157\1\151\1\141\1\147\1\160\1\156"+
-        "\1\157\1\165\1\156\1\142\2\147\1\171\1\157\1\143\1\160\1\162\1\157"+
-        "\1\156\1\162\1\163\1\160\1\163\1\164\1\163\1\154\1\156\1\170\1\141"+
-        "\1\165\1\163\1\164\1\160\1\172\1\164\4\uffff\1\74\10\uffff\1\75"+
-        "\26\uffff\1\75\7\uffff\1\151\1\163\1\162\1\167\1\154\1\162\1\164"+
-        "\1\uffff\1\154\4\uffff\1\153\1\154\1\172\1\141\1\162\1\163\1\154"+
-        "\2\145\1\143\1\141\1\165\1\uffff\1\145\1\uffff\1\155\1\141\1\163"+
-        "\1\156\1\uffff\1\172\1\142\1\144\1\167\1\160\2\164\1\155\1\145\1"+
-        "\143\1\167\1\164\3\145\1\141\2\156\1\145\1\172\1\154\1\147\1\153"+
-        "\1\145\1\157\1\155\1\154\1\141\1\172\1\163\2\164\2\145\2\164\2\151"+
-        "\1\172\1\144\1\147\1\124\1\145\1\164\1\157\1\uffff\1\154\1\144\1"+
-        "\165\6\uffff\1\154\1\164\3\172\1\154\1\164\1\163\1\141\1\151\1\uffff"+
-        "\1\155\1\164\1\157\1\141\1\172\1\150\1\147\1\162\1\165\1\164\1\155"+
-        "\1\172\1\141\1\171\1\172\1\147\1\uffff\1\154\1\145\1\115\1\164\1"+
-        "\160\1\143\1\153\1\151\1\145\1\162\1\150\1\172\1\150\1\172\1\154"+
-        "\1\156\1\162\1\144\1\172\1\163\1\172\1\uffff\1\164\1\154\1\141\1"+
-        "\157\1\167\1\172\1\145\1\154\1\uffff\1\145\1\172\1\171\1\172\1\156"+
-        "\1\172\1\151\2\155\1\uffff\1\151\1\145\1\151\1\162\1\144\1\141\1"+
-        "\162\1\157\1\145\1\162\1\145\1\172\3\uffff\1\172\1\141\1\150\1\151"+
-        "\1\147\1\156\1\151\1\172\1\162\1\160\1\uffff\1\172\1\157\1\151\1"+
-        "\154\1\172\1\141\1\uffff\1\164\1\163\1\uffff\1\172\1\145\1\144\1"+
-        "\141\1\114\1\145\1\150\1\145\1\143\1\156\1\172\1\162\1\uffff\1\172"+
-        "\1\162\1\uffff\1\172\1\144\1\151\1\114\1\uffff\1\160\1\uffff\1\151"+
-        "\1\145\1\156\1\146\1\172\1\uffff\1\145\1\144\1\154\1\172\1\uffff"+
-        "\1\172\1\uffff\1\163\1\uffff\1\160\2\165\1\145\1\172\1\143\1\166"+
-        "\1\145\1\156\2\164\1\162\1\156\1\172\2\uffff\1\154\1\172\1\144\1"+
-        "\145\1\147\1\144\1\uffff\1\172\1\163\1\uffff\1\162\1\142\1\164\1"+
-        "\uffff\1\162\1\145\1\172\1\uffff\2\172\1\162\1\141\1\144\1\172\1"+
-        "\144\1\172\1\164\1\uffff\1\157\1\167\1\uffff\1\172\1\uffff\1\172"+
-        "\1\164\1\151\1\141\1\160\1\172\1\147\1\172\1\uffff\1\162\1\172\1"+
-        "\171\2\uffff\1\163\1\151\1\154\2\155\1\156\1\uffff\1\153\1\141\1"+
-        "\172\1\143\2\172\1\163\1\172\1\uffff\1\172\1\167\1\uffff\1\145\3"+
-        "\172\1\uffff\1\151\1\171\1\145\1\172\1\164\1\144\3\uffff\1\153\1"+
-        "\142\1\172\1\uffff\1\172\1\uffff\1\143\1\156\4\uffff\1\150\1\156"+
-        "\1\162\1\172\1\uffff\1\154\1\uffff\1\157\1\uffff\2\172\1\157\1\151"+
-        "\2\172\1\164\1\163\1\154\2\uffff\1\145\2\uffff\1\172\4\uffff\1\172"+
-        "\3\uffff\1\142\1\172\1\144\1\uffff\2\172\2\145\2\uffff\1\157\1\151"+
-        "\1\155\2\145\1\uffff\1\145\1\172\2\uffff\1\156\1\145\2\uffff\2\172"+
-        "\1\163\1\157\3\uffff\1\154\1\uffff\1\40\2\uffff\1\162\2\154\1\172"+
-        "\1\151\1\172\1\156\1\172\1\uffff\1\172\1\162\2\uffff\1\172\1\146"+
-        "\1\145\1\uffff\2\172\1\157\1\145\1\143\1\uffff\1\164\2\uffff\1\172"+
-        "\1\uffff\2\172\2\uffff\1\162\1\144\2\172\3\uffff\2\172\4\uffff";
+        "\1\uffff\1\171\2\uffff\1\165\1\157\1\170\1\171\1\163\1\165\1\157\1\171\2\157\1\170\1\165\1\162\1\141\1\156\1\145\1\76\1\75\1\165\5\uffff\1\76\3\uffff\3\75\1\76\1\75\1\174\1\46\1\75\1\56\2\72\1\150\1\141\1\165\1\170\1\154\1\172\5\uffff\1\143\1\154\1\145\1\162\3\uffff\1\141\1\162\1\154\1\164\1\163\1\172\1\164\1\172\1\151\1\167\1\151\1\154\1\157\1\151\1\141\1\160\1\156\1\157\1\165\1\151\1\124\1\162\1\142\1\156\1\142\2\147\1\171\1\157\1\160\1\162\1\157\1\156\1\162\1\163\1\160\1\164\2\163\1\154\1\156\1\170\1\141\1\165\1\163\1\164\1\160\1\172\1\164\7\uffff\1\172\1\167\1\154\1\162\5\uffff\1\75\26\uffff\1\75\1\uffff\1\74\6\uffff\1\151\1\163\1\162\1\164\1\uffff\1\154\4\uffff\1\153\1\154\1\172\1\141\1\162\1\163\1\154\2\145\1\143\1\141\1\165\1\uffff\1\145\1\uffff\1\155\1\154\1\141\1\163\1\145\1\155\1\144\1\167\1\160\2\164\1\145\1\143\1\167\1\164\1\156\1\157\1\172\1\142\3\145\1\141\2\156\1\145\1\172\1\154\1\147\1\145\1\157\1\155\1\154\1\141\1\172\1\163\2\164\2\145\2\164\2\151\1\172\1\144\1\147\1\124\1\145\1\164\1\157\1\uffff\1\154\1\144\1\165\1\uffff\1\172\1\154\1\164\6\uffff\1\154\1\164\2\172\1\163\1\141\1\151\1\uffff\1\155\1\164\1\157\1\141\1\172\1\150\1\147\1\162\1\165\1\164\1\155\1\172\1\141\1\145\1\171\1\172\1\143\2\145\1\115\1\164\1\160\1\143\1\153\1\151\1\162\1\150\1\172\1\150\1\147\1\172\1\uffff\1\154\1\172\1\154\1\156\1\162\1\144\1\172\1\163\1\172\1\uffff\1\164\1\154\1\157\1\167\1\172\1\145\1\154\1\uffff\1\145\1\172\1\171\1\156\2\172\1\151\2\155\1\uffff\1\151\1\145\1\151\1\162\1\144\1\141\1\162\1\157\1\145\1\162\1\uffff\1\172\1\141\1\150\1\145\1\172\2\uffff\1\151\1\147\1\156\1\151\1\172\1\162\1\160\1\uffff\1\172\1\157\1\151\1\154\1\172\1\141\1\uffff\1\164\1\172\1\163\1\uffff\1\164\1\156\1\144\1\141\1\114\1\145\1\150\1\145\1\143\1\172\1\162\1\uffff\2\172\1\uffff\1\145\1\162\1\uffff\1\172\1\144\1\151\1\114\1\uffff\1\160\1\uffff\1\151\1\145\1\146\1\172\1\uffff\1\145\1\144\1\154\1\172\1\uffff\1\172\1\163\2\uffff\1\160\2\165\1\145\1\172\1\143\1\166\1\145\1\156\2\164\1\162\1\156\1\uffff\1\154\2\172\1\uffff\1\144\1\145\1\147\1\144\1\uffff\1\172\1\163\1\uffff\1\162\1\142\1\164\1\uffff\1\162\1\145\1\uffff\1\172\1\102\1\164\1\172\1\162\1\141\1\144\1\172\1\144\1\172\1\uffff\1\157\1\167\2\uffff\2\172\1\uffff\1\172\1\164\1\151\1\141\1\160\2\172\1\uffff\1\162\1\172\1\171\2\uffff\1\151\1\163\1\154\2\155\1\156\1\uffff\1\153\1\141\1\172\1\143\2\172\1\163\2\172\1\167\2\uffff\1\145\3\172\1\uffff\1\151\1\171\1\145\1\172\1\164\1\144\1\uffff\1\171\1\143\1\uffff\1\153\1\142\1\172\1\uffff\1\172\1\uffff\1\156\5\uffff\1\150\1\156\1\162\1\172\2\uffff\1\157\1\uffff\1\172\1\157\1\172\1\151\2\172\1\164\1\163\1\154\2\uffff\1\145\2\uffff\1\172\4\uffff\1\172\3\uffff\1\142\1\172\1\144\1\uffff\2\172\1\111\1\157\2\145\2\uffff\1\151\1\155\2\145\1\uffff\1\172\1\uffff\1\156\1\uffff\1\145\2\uffff\2\172\1\163\1\157\3\uffff\1\154\1\uffff\1\102\2\uffff\1\144\1\154\1\162\1\154\1\172\1\151\1\172\1\156\1\uffff\1\172\1\162\2\uffff\1\172\1\146\1\145\1\171\1\172\1\157\2\172\1\145\1\143\1\uffff\1\164\1\uffff\1\172\1\uffff\3\172\1\uffff\1\162\2\uffff\1\144\2\172\4\uffff\2\172\4\uffff";
     static final String DFA21_acceptS =
-        "\2\uffff\1\2\1\3\23\uffff\1\66\1\67\1\70\1\71\1\uffff\1\73\1\74"+
-        "\1\75\12\uffff\1\135\7\uffff\1\u0090\2\u0091\1\u0094\1\u0095\4\uffff"+
-        "\1\u0090\1\2\1\3\62\uffff\1\77\1\115\1\131\1\63\1\uffff\1\64\1\100"+
-        "\1\124\1\65\1\66\1\67\1\70\1\71\1\uffff\1\120\1\72\1\73\1\74\1\75"+
-        "\1\76\1\130\1\123\1\101\1\u0092\1\u0093\1\125\1\102\1\126\1\121"+
-        "\1\103\1\105\1\104\1\106\1\134\1\107\1\171\1\uffff\1\127\1\122\1"+
-        "\133\1\170\1\132\1\141\1\135\7\uffff\1\u008d\1\uffff\1\u008e\1\u008f"+
-        "\1\u0091\1\u0094\14\uffff\1\146\1\uffff\1\6\4\uffff\1\46\55\uffff"+
-        "\1\136\3\uffff\1\116\1\117\1\112\1\110\1\113\1\111\12\uffff\1\26"+
-        "\20\uffff\1\11\25\uffff\1\164\10\uffff\1\144\11\uffff\1\44\14\uffff"+
-        "\1\147\1\150\1\155\12\uffff\1\143\6\uffff\1\u008a\2\uffff\1\55\14"+
-        "\uffff\1\176\2\uffff\1\16\4\uffff\1\43\1\uffff\1\157\5\uffff\1\22"+
-        "\4\uffff\1\177\1\uffff\1\137\1\uffff\1\u0082\16\uffff\1\u0086\1"+
-        "\160\6\uffff\1\4\2\uffff\1\167\3\uffff\1\30\3\uffff\1\10\11\uffff"+
-        "\1\154\2\uffff\1\u0084\1\uffff\1\36\10\uffff\1\162\3\uffff\1\156"+
-        "\1\27\6\uffff\1\35\10\uffff\1\145\2\uffff\1\u0080\4\uffff\1\21\6"+
-        "\uffff\1\53\1\31\1\12\3\uffff\1\140\1\uffff\1\152\2\uffff\1\u0083"+
-        "\1\u0085\1\u0089\1\50\4\uffff\1\51\1\uffff\1\161\1\uffff\1\25\11"+
-        "\uffff\1\172\1\54\1\uffff\1\62\1\52\1\uffff\1\163\1\175\1\u0081"+
-        "\1\u0087\1\uffff\1\1\1\7\1\u008c\3\uffff\1\142\4\uffff\1\14\1\15"+
-        "\5\uffff\1\23\2\uffff\1\165\1\151\2\uffff\1\40\1\41\4\uffff\1\56"+
-        "\1\174\1\173\1\uffff\1\u0088\1\uffff\1\47\1\13\10\uffff\1\24\2\uffff"+
-        "\1\33\1\37\3\uffff\1\5\5\uffff\1\20\1\uffff\1\60\1\153\1\uffff\1"+
-        "\42\2\uffff\1\17\1\57\4\uffff\1\32\1\114\1\45\2\uffff\1\u008b\1"+
-        "\34\1\61\1\166";
+        "\2\uffff\1\2\1\3\23\uffff\1\71\1\72\1\73\1\74\1\75\1\uffff\1\77\1\100\1\101\21\uffff\1\u0092\2\u0093\1\u0096\1\u0097\4\uffff\1\u0092\1\2\1\3\61\uffff\1\103\1\121\1\135\1\63\1\104\1\130\1\67\4\uffff\1\71\1\72\1\73\1\74\1\75\1\uffff\1\124\1\76\1\77\1\100\1\101\1\102\1\134\1\127\1\105\1\u0094\1\u0095\1\131\1\106\1\132\1\125\1\107\1\111\1\110\1\112\1\141\1\113\1\173\1\uffff\1\133\1\uffff\1\136\1\126\1\140\1\172\1\137\1\145\4\uffff\1\u008f\1\uffff\1\u0090\1\u0091\1\u0093\1\u0096\14\uffff\1\152\1\uffff\1\6\63\uffff\1\142\3\uffff\1\70\3\uffff\1\116\1\114\1\117\1\115\1\122\1\123\7\uffff\1\27\37\uffff\1\12\11\uffff\1\166\7\uffff\1\150\11\uffff\1\45\12\uffff\1\157\5\uffff\1\153\1\154\7\uffff\1\147\6\uffff\1\u008c\3\uffff\1\56\13\uffff\1\u0080\2\uffff\1\47\2\uffff\1\17\4\uffff\1\44\1\uffff\1\161\4\uffff\1\23\4\uffff\1\u0081\2\uffff\1\143\1\u0084\15\uffff\1\162\3\uffff\1\u0088\4\uffff\1\4\2\uffff\1\171\3\uffff\1\31\2\uffff\1\61\12\uffff\1\156\2\uffff\1\u0086\1\11\2\uffff\1\37\7\uffff\1\164\3\uffff\1\160\1\30\6\uffff\1\36\12\uffff\1\u0082\1\151\4\uffff\1\22\6\uffff\1\54\2\uffff\1\13\3\uffff\1\144\1\uffff\1\65\1\uffff\1\u0085\1\u0087\1\32\1\u008b\1\51\4\uffff\1\52\1\163\1\uffff\1\26\11\uffff\1\174\1\55\1\uffff\1\64\1\53\1\uffff\1\165\1\177\1\u0083\1\u0089\1\uffff\1\1\1\7\1\u008e\3\uffff\1\146\6\uffff\1\15\1\16\4\uffff\1\24\1\uffff\1\167\1\uffff\1\155\1\uffff\1\41\1\42\4\uffff\1\57\1\176\1\175\1\uffff\1\u008a\1\uffff\1\50\1\14\10\uffff\1\25\2\uffff\1\34\1\40\12\uffff\1\21\1\uffff\1\66\1\uffff\1\43\3\uffff\1\10\1\uffff\1\20\1\60\3\uffff\1\33\1\120\1\46\1\5\2\uffff\1\u008d\1\35\1\62\1\170";
     static final String DFA21_specialS =
-        "\1\0\u025e\uffff}>";
+        "\1\0\u0268\uffff}>";
     static final String[] DFA21_transitionS = {
-            "\11\65\2\64\2\65\1\64\22\65\1\64\1\46\1\62\1\34\1\61\1\41\1"+
-            "\45\1\63\1\30\1\32\1\26\1\37\1\31\1\24\1\25\1\40\1\56\11\57"+
-            "\1\50\1\51\1\42\1\33\1\43\1\47\1\27\32\61\1\35\1\65\1\36\1\60"+
-            "\1\61\1\65\1\6\1\10\1\4\1\5\1\16\1\15\1\20\1\21\1\22\2\61\1"+
-            "\12\1\17\1\54\1\55\1\1\1\61\1\23\1\11\1\13\1\7\1\53\1\52\2\61"+
-            "\1\14\1\2\1\44\1\3\uff82\65",
+            "\11\65\2\64\2\65\1\64\22\65\1\64\1\47\1\62\1\35\1\61\1\42\1\46\1\63\1\31\1\33\1\25\1\40\1\32\1\24\1\50\1\41\1\56\11\57\1\52\1\27\1\43\1\34\1\44\1\51\1\30\32\61\1\36\1\65\1\37\1\60\1\61\1\65\1\6\1\11\1\4\1\5\1\16\1\15\1\20\1\21\1\22\2\61\1\12\1\17\1\26\1\55\1\1\1\61\1\23\1\7\1\13\1\10\1\54\1\53\2\61\1\14\1\2\1\45\1\3\uff82\65",
             "\1\66\7\uffff\1\70\5\uffff\1\67\11\uffff\1\71",
             "",
             "",
             "\1\100\6\uffff\1\75\6\uffff\1\77\5\uffff\1\76",
             "\1\103\3\uffff\1\101\11\uffff\1\102",
             "\1\106\1\uffff\1\105\4\uffff\1\104\4\uffff\1\107",
-            "\1\111\2\uffff\1\110",
-            "\1\112\23\uffff\1\113",
-            "\1\117\2\uffff\1\114\3\uffff\1\122\2\uffff\1\123\4\uffff\1"+
-            "\116\1\120\1\uffff\1\115\1\uffff\1\121",
+            "\1\110\2\uffff\1\111\3\uffff\1\116\2\uffff\1\117\4\uffff\1\113\1\114\1\uffff\1\112\1\uffff\1\115",
+            "\1\121\2\uffff\1\120",
+            "\1\122\23\uffff\1\123",
             "\1\125\3\uffff\1\126\3\uffff\1\124\5\uffff\1\127",
-            "\1\134\1\132\5\uffff\1\131\2\uffff\1\130\6\uffff\1\133",
-            "\1\135",
-            "\1\140\7\uffff\1\136\5\uffff\1\137",
-            "\1\144\12\uffff\1\142\1\141\12\uffff\1\143",
-            "\1\147\7\uffff\1\146\13\uffff\1\145",
-            "\1\151\20\uffff\1\150",
-            "\1\152",
-            "\1\155\6\uffff\1\154\1\153",
-            "\1\156",
-            "\1\161\17\uffff\1\157\1\160",
-            "\1\163",
-            "\1\166\22\uffff\1\165",
+            "\1\133\6\uffff\1\131\2\uffff\1\130\6\uffff\1\132",
+            "\1\134",
+            "\1\137\7\uffff\1\135\5\uffff\1\136",
+            "\1\143\12\uffff\1\142\1\140\12\uffff\1\141",
+            "\1\146\7\uffff\1\145\13\uffff\1\144",
+            "\1\150\20\uffff\1\147",
+            "\1\151",
+            "\1\154\6\uffff\1\153\1\152",
+            "\1\155",
+            "\1\160\17\uffff\1\156\1\157",
+            "\1\163\22\uffff\1\162",
+            "\1\166\11\uffff\1\170\3\uffff\1\165\1\uffff\1\167",
             "",
             "",
             "",
             "",
-            "\1\174\1\175",
+            "",
+            "\1\176\1\177",
             "",
             "",
             "",
-            "\1\u0083\21\uffff\1\u0082",
-            "\1\u0086\4\uffff\1\u0087\15\uffff\1\u0085",
-            "\1\u0089",
+            "\1\u0085\21\uffff\1\u0084",
+            "\1\u0088\4\uffff\1\u0089\15\uffff\1\u0087",
             "\1\u008b",
             "\1\u008d",
             "\1\u008f",
             "\1\u0091",
             "\1\u0093",
-            "\1\u0096\13\uffff\1\u0095",
-            "\1\u0098",
-            "",
-            "\1\u009c\2\uffff\1\u009b",
-            "\1\u009d",
-            "\1\u009e\11\uffff\1\u00a0\5\uffff\1\u009f",
+            "\1\u0095",
+            "\1\u0097",
+            "\1\u009a\13\uffff\1\u0099",
+            "\1\u009c",
+            "\1\u009f\2\uffff\1\u009e",
+            "\1\u00a0",
             "\1\u00a1",
-            "\12\u00a3\10\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5"+
-            "\13\uffff\1\u00a2\6\uffff\1\u00a3\2\uffff\1\u00a5\1\uffff\3"+
-            "\u00a5\5\uffff\1\u00a5\13\uffff\1\u00a2",
-            "\12\u00a3\10\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5"+
-            "\22\uffff\1\u00a3\2\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1"+
-            "\u00a5",
+            "\12\u00a3\10\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5\13\uffff\1\u00a2\6\uffff\1\u00a3\2\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5\13\uffff\1\u00a2",
+            "\12\u00a3\10\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5\22\uffff\1\u00a3\2\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5",
             "\1\72\34\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "",
             "",
@@ -5235,20 +5139,16 @@
             "\1\u00ae",
             "\1\u00af\1\u00b0",
             "\1\u00b2\14\uffff\1\u00b1",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\15"+
-            "\72\1\u00b3\14\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\15\72\1\u00b3\14\72",
             "\1\u00b5",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\u00b7",
-            "\1\u00b8",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\u00b8\1\uffff\1\u00b7",
             "\1\u00b9",
             "\1\u00ba",
-            "\1\u00bb",
-            "\1\u00bc",
-            "\1\u00bd",
-            "\1\u00be\15\uffff\1\u00bf",
-            "\1\u00c0\7\uffff\1\u00c1",
+            "\1\u00bc\4\uffff\1\u00bb",
+            "\1\u00bd\15\uffff\1\u00be",
+            "\1\u00bf\7\uffff\1\u00c0",
+            "\1\u00c1",
             "\1\u00c2",
             "\1\u00c3",
             "\1\u00c4",
@@ -5259,35 +5159,30 @@
             "\1\u00c9",
             "\1\u00ca",
             "\1\u00cb",
-            "\1\u00cd\3\uffff\1\u00cc\17\uffff\1\u00ce\3\uffff\1\u00cf",
-            "\1\u00d1\7\uffff\1\u00d0",
-            "\1\u00d2",
-            "\1\u00d3",
+            "\1\u00cc",
+            "\1\u00cd",
+            "\1\u00cf\3\uffff\1\u00ce\17\uffff\1\u00d0\3\uffff\1\u00d1",
+            "\1\u00d3\7\uffff\1\u00d2",
             "\1\u00d4",
             "\1\u00d5",
-            "\1\u00d6\1\uffff\1\u00d7",
-            "\1\u00d8",
-            "\1\u00d9\6\uffff\1\u00da",
-            "\1\u00db",
+            "\1\u00d6",
+            "\1\u00d7\1\uffff\1\u00d8",
+            "\1\u00d9",
+            "\1\u00da\6\uffff\1\u00db",
             "\1\u00dc",
             "\1\u00dd",
             "\1\u00de",
             "\1\u00df",
             "\1\u00e0",
-            "\1\u00e2\7\uffff\1\u00e1",
-            "\1\u00e3",
+            "\1\u00e1",
+            "\1\u00e3\7\uffff\1\u00e2",
             "\1\u00e4",
             "\1\u00e5",
-            "\1\u00e7\1\u00e6",
-            "\1\u00e8",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\u00eb\1\uffff\1\u00ea\3\uffff\1\u00ec",
-            "",
-            "",
-            "",
-            "",
-            "\1\u00ed",
+            "\1\u00e6",
+            "\1\u00e8\1\u00e7",
+            "\1\u00e9",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\u00ec\1\uffff\1\u00eb\3\uffff\1\u00ed",
             "",
             "",
             "",
@@ -5295,171 +5190,161 @@
             "",
             "",
             "",
-            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u00ef",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
+            "\1\u00f0",
             "\1\u00f1",
             "",
             "",
             "",
             "",
             "",
+            "\1\u00f2",
             "",
             "",
-            "\1\u00f3",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\u00f4",
-            "\1\u00f6\5\uffff\1\u00f5",
-            "\1\u00f7",
+            "",
+            "\1\u00f6",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\u00f8",
             "\1\u00f9",
-            "\1\u00fa",
-            "",
-            "\12\u00a3\10\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5"+
-            "\22\uffff\1\u00a3\2\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1"+
-            "\u00a5",
-            "",
-            "",
-            "",
-            "",
-            "\1\u00fb",
+            "\1\u00fb\5\uffff\1\u00fa",
             "\1\u00fc",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "",
+            "\12\u00a3\10\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5\22\uffff\1\u00a3\2\uffff\1\u00a5\1\uffff\3\u00a5\5\uffff\1\u00a5",
+            "",
+            "",
+            "",
+            "",
+            "\1\u00fd",
             "\1\u00fe",
-            "\1\u00ff",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u0100",
             "\1\u0101",
             "\1\u0102",
-            "\1\u0103\1\uffff\1\u0104",
-            "\1\u0105",
-            "\1\u0106",
+            "\1\u0103",
+            "\1\u0104",
+            "\1\u0105\1\uffff\1\u0106",
             "\1\u0107",
+            "\1\u0108",
+            "\1\u0109",
             "",
-            "\1\u0108\3\uffff\1\u0109",
+            "\1\u010a\3\uffff\1\u010b",
             "",
-            "\1\u010a",
-            "\1\u010b",
             "\1\u010c",
             "\1\u010d",
-            "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\u010e",
             "\1\u010f",
             "\1\u0110",
-            "\1\u0112\4\uffff\1\u0111",
-            "\1\u0113",
-            "\1\u0114",
-            "\1\u0115\20\uffff\1\u0116",
-            "\1\u0117",
-            "\1\u0118",
+            "\1\u0111",
+            "\1\u0112",
+            "\1\u0114\4\uffff\1\u0113",
+            "\1\u0115",
+            "\1\u0116",
+            "\1\u0117\20\uffff\1\u0118",
             "\1\u0119",
             "\1\u011a",
             "\1\u011b",
             "\1\u011c",
             "\1\u011d",
             "\1\u011e",
-            "\1\u011f",
-            "\1\u0121\10\uffff\1\u0120",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\u0120",
+            "\1\u0121",
             "\1\u0122",
             "\1\u0123",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\u0125",
-            "\1\u0126",
+            "\1\u0124",
+            "\1\u0126\10\uffff\1\u0125",
             "\1\u0127",
             "\1\u0128",
-            "\1\u0129",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u012a",
             "\1\u012b",
             "\1\u012c",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\u012d",
             "\1\u012e",
             "\1\u012f",
             "\1\u0130",
-            "\1\u0131",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u0132",
             "\1\u0133",
             "\1\u0134",
             "\1\u0135",
             "\1\u0136",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\u0137",
             "\1\u0138",
             "\1\u0139",
             "\1\u013a",
-            "\1\u013b",
-            "\1\u013c\12\uffff\1\u013d",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\u013c",
+            "\1\u013d",
             "\1\u013e",
-            "",
             "\1\u013f",
-            "\1\u0140",
-            "\1\u0141",
-            "",
-            "",
-            "",
-            "",
-            "",
-            "",
+            "\1\u0140\12\uffff\1\u0141",
             "\1\u0142",
+            "",
             "\1\u0143",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\u0144",
+            "\1\u0145",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u0147",
             "\1\u0148\6\uffff\1\u0149",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\u014a",
             "\1\u014b",
-            "\1\u014c",
-            "",
-            "\1\u014d",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u014e",
             "\1\u014f",
             "\1\u0150",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "",
+            "\1\u0151",
             "\1\u0152",
             "\1\u0153",
             "\1\u0154",
-            "\1\u0155",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u0156",
             "\1\u0157",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\u0158",
             "\1\u0159",
             "\1\u015a",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\u015c",
-            "",
+            "\1\u015b",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u015d",
             "\1\u015e",
             "\1\u015f",
-            "\1\u0160",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u0161",
             "\1\u0162",
             "\1\u0163",
@@ -5467,398 +5352,340 @@
             "\1\u0165",
             "\1\u0166",
             "\1\u0167",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\u0168",
             "\1\u0169",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\1"+
-            "\u016a\31\72",
-            "\1\u016c",
+            "\1\u016a",
+            "\1\u016b",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u016d",
             "\1\u016e",
-            "\1\u016f",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\u0171",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "",
+            "\1\u0170",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\1\u0171\31\72",
             "\1\u0173",
             "\1\u0174",
             "\1\u0175",
             "\1\u0176",
-            "\1\u0177",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\u0179\12\uffff\1\u017a",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\u0178",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "",
+            "\1\u017a",
             "\1\u017b",
-            "",
             "\1\u017c",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\u017e",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\u0180",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\u0182",
-            "\1\u0183",
-            "\1\u0184",
+            "\1\u017d",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\u017f\12\uffff\1\u0180",
+            "\1\u0181",
             "",
+            "\1\u0182",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\u0184",
             "\1\u0185",
-            "\1\u0186",
-            "\1\u0187",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u0188",
             "\1\u0189",
             "\1\u018a",
+            "",
             "\1\u018b",
             "\1\u018c",
             "\1\u018d",
             "\1\u018e",
             "\1\u018f",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "",
-            "",
-            "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\u0190",
+            "\1\u0191",
             "\1\u0192",
             "\1\u0193",
             "\1\u0194",
-            "\1\u0195",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u0196",
             "\1\u0197",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\u0199",
-            "\1\u019a",
+            "\1\u0198",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "",
+            "\1\u019a",
+            "\1\u019b",
             "\1\u019c",
             "\1\u019d",
-            "\1\u019e",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\u019f",
             "\1\u01a0",
             "",
-            "\1\u01a1",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u01a2",
-            "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\u01a3",
             "\1\u01a4",
-            "\1\u01a5",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u01a6",
+            "",
             "\1\u01a7",
-            "\1\u01a8",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u01a9",
+            "",
             "\1\u01aa",
             "\1\u01ab",
             "\1\u01ac",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\u01ad",
             "\1\u01ae",
-            "",
-            "\1\72\10\uffff\1\u01af\2\uffff\12\72\7\uffff\32\72\4\uffff"+
-            "\1\72\1\uffff\32\72",
+            "\1\u01af",
+            "\1\u01b0",
             "\1\u01b1",
-            "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\u01b3",
+            "\1\u01b2",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u01b4",
-            "\1\u01b5",
             "",
-            "\1\u01b6",
+            "\1\72\10\uffff\1\u01b5\2\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "",
-            "\1\u01b7",
             "\1\u01b8",
             "\1\u01b9",
-            "\1\u01ba",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
             "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\u01bb",
             "\1\u01bc",
             "\1\u01bd",
+            "",
             "\1\u01be",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
             "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "",
-            "\1\u01c1\16\uffff\1\u01c2",
+            "\1\u01bf",
+            "\1\u01c0",
+            "\1\u01c1",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "",
             "\1\u01c3",
             "\1\u01c4",
             "\1\u01c5",
-            "\1\u01c6",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\u01c8",
-            "\1\u01c9",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\u01c9\16\uffff\1\u01c8",
+            "",
+            "",
             "\1\u01ca",
             "\1\u01cb",
             "\1\u01cc",
             "\1\u01cd",
-            "\1\u01ce",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u01cf",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "",
-            "",
+            "\1\u01d0",
             "\1\u01d1",
-            "\1\72\10\uffff\1\u01d2\2\uffff\12\72\7\uffff\32\72\4\uffff"+
-            "\1\72\1\uffff\32\72",
+            "\1\u01d2",
+            "\1\u01d3",
             "\1\u01d4",
             "\1\u01d5",
             "\1\u01d6",
+            "",
             "\1\u01d7",
+            "\1\72\10\uffff\1\u01d8\2\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\u01d9",
-            "",
-            "\1\u01da",
             "\1\u01db",
             "\1\u01dc",
-            "",
             "\1\u01dd",
             "\1\u01de",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
             "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\u01e0",
+            "",
+            "\1\u01e1",
             "\1\u01e2",
             "\1\u01e3",
+            "",
             "\1\u01e4",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\u01e6",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\u01e5",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\u01e7",
             "\1\u01e8",
-            "",
-            "\1\u01e9",
-            "\1\u01ea\21\uffff\1\u01eb",
-            "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\u01ea",
+            "\1\u01eb",
+            "\1\u01ec",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u01ee",
-            "\1\u01ef",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "",
             "\1\u01f0",
-            "\1\u01f1",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\u01f3",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\u01f1\21\uffff\1\u01f2",
             "",
-            "\1\u01f5",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\u01f6",
             "\1\u01f7",
-            "",
-            "",
             "\1\u01f8",
             "\1\u01f9",
-            "\1\u01fa",
-            "\1\u01fb",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "",
             "\1\u01fc",
-            "\1\u01fd",
-            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u01fe",
+            "",
+            "",
             "\1\u01ff",
-            "\1\72\10\uffff\1\u0200\2\uffff\12\72\7\uffff\32\72\4\uffff"+
-            "\1\72\1\uffff\32\72",
+            "\1\u0200",
+            "\1\u0201",
             "\1\u0202",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\u0203",
+            "\1\u0204",
+            "",
             "\1\u0205",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\u0208\21\uffff\1\u0209",
-            "",
-            "\1\u020a",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "",
-            "\1\u020e",
-            "\1\u020f",
-            "\1\u0210",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\u0212",
-            "\1\u0213",
+            "\1\u0206",
+            "\1\72\10\uffff\1\u0207\2\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\u0209",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\u020c",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\u020f\21\uffff\1\u0210",
             "",
             "",
+            "\1\u0211",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "",
-            "\1\u0214",
             "\1\u0215",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "",
-            "\1\u0218",
+            "\1\u0216",
+            "\1\u0217",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u0219",
-            "",
-            "",
-            "",
-            "",
             "\1\u021a",
+            "",
             "\1\u021b",
             "\1\u021c",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
             "",
+            "\1\u021d",
             "\1\u021e",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "",
-            "\1\u021f",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\u0221",
+            "",
+            "",
+            "",
+            "",
+            "",
             "\1\u0222",
             "\1\u0223",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\u0224",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "",
+            "",
             "\1\u0226",
-            "\1\u0227",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u0228",
-            "",
-            "",
-            "\1\u0229",
-            "",
-            "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "",
-            "",
-            "",
-            "",
-            "\1\72\10\uffff\1\u022b\2\uffff\12\72\7\uffff\32\72\4\uffff"+
-            "\1\72\1\uffff\32\72",
-            "",
-            "",
-            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\u022a",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u022d",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\u022e",
             "\1\u022f",
             "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\u0232",
-            "\1\u0233",
+            "",
+            "\1\u0230",
+            "",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "",
+            "",
+            "",
+            "",
+            "\1\72\10\uffff\1\u0232\2\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "",
             "",
             "",
             "\1\u0234",
-            "\1\u0235",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u0236",
-            "\1\u0237",
-            "\1\u0238",
             "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u0239",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "",
-            "",
+            "\1\u023a",
             "\1\u023b",
             "\1\u023c",
             "",
             "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\u023d",
+            "\1\u023e",
             "\1\u023f",
             "\1\u0240",
             "",
-            "",
-            "",
-            "\1\u0241",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "",
             "\1\u0242",
             "",
-            "",
             "\1\u0243",
-            "\1\u0244",
-            "\1\u0245",
+            "",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u0246",
             "\1\u0247",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "",
+            "",
+            "",
+            "\1\u0248",
+            "",
             "\1\u0249",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
             "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "",
+            "\1\u024a",
+            "\1\u024b",
             "\1\u024c",
-            "",
-            "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\u024d",
             "\1\u024e",
             "\1\u024f",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\u0251",
             "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\u0252",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u0253",
-            "\1\u0254",
             "",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u0255",
-            "",
-            "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "",
-            "",
+            "\1\u0256",
+            "\1\u0257",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "\1\u0259",
-            "\1\u025a",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\u025c",
+            "\1\u025d",
+            "",
+            "\1\u025e",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "",
+            "\1\u0263",
+            "",
+            "",
+            "\1\u0264",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "",
             "",
             "",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
-            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32"+
-            "\72",
+            "",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
+            "\1\72\13\uffff\12\72\7\uffff\32\72\4\uffff\1\72\1\uffff\32\72",
             "",
             "",
             "",
@@ -5895,7 +5722,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 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | RULE_HEX | RULE_INT | RULE_DECIMAL | RULE_ID | RULE_STRING | RULE_ML_COMMENT | RULE_SL_COMMENT | RULE_WS | RULE_ANY_OTHER );";
+            return "1:1: Tokens : ( T__13 | T__14 | T__15 | T__16 | T__17 | T__18 | T__19 | T__20 | T__21 | T__22 | T__23 | T__24 | T__25 | T__26 | T__27 | T__28 | T__29 | T__30 | T__31 | T__32 | T__33 | T__34 | T__35 | T__36 | T__37 | T__38 | T__39 | T__40 | T__41 | T__42 | T__43 | T__44 | T__45 | T__46 | T__47 | T__48 | T__49 | T__50 | T__51 | T__52 | T__53 | T__54 | T__55 | T__56 | T__57 | T__58 | T__59 | T__60 | T__61 | T__62 | T__63 | T__64 | T__65 | T__66 | T__67 | T__68 | T__69 | T__70 | T__71 | T__72 | T__73 | T__74 | T__75 | T__76 | T__77 | T__78 | T__79 | T__80 | T__81 | T__82 | T__83 | T__84 | T__85 | T__86 | T__87 | T__88 | T__89 | T__90 | T__91 | T__92 | T__93 | T__94 | T__95 | T__96 | T__97 | T__98 | T__99 | T__100 | T__101 | T__102 | T__103 | T__104 | T__105 | T__106 | T__107 | T__108 | T__109 | T__110 | T__111 | T__112 | T__113 | T__114 | T__115 | T__116 | T__117 | T__118 | T__119 | T__120 | T__121 | T__122 | T__123 | T__124 | T__125 | T__126 | T__127 | T__128 | T__129 | T__130 | T__131 | T__132 | T__133 | T__134 | T__135 | T__136 | T__137 | T__138 | T__139 | T__140 | T__141 | T__142 | T__143 | T__144 | T__145 | T__146 | T__147 | T__148 | T__149 | T__150 | T__151 | T__152 | T__153 | T__154 | 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;
@@ -5917,11 +5744,11 @@
 
                         else if ( (LA21_0=='a') ) {s = 6;}
 
-                        else if ( (LA21_0=='u') ) {s = 7;}
+                        else if ( (LA21_0=='s') ) {s = 7;}
 
-                        else if ( (LA21_0=='b') ) {s = 8;}
+                        else if ( (LA21_0=='u') ) {s = 8;}
 
-                        else if ( (LA21_0=='s') ) {s = 9;}
+                        else if ( (LA21_0=='b') ) {s = 9;}
 
                         else if ( (LA21_0=='l') ) {s = 10;}
 
@@ -5945,53 +5772,53 @@
 
                         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=='n') ) {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 = 39;}
+                        else if ( (LA21_0=='!') ) {s = 39;}
 
-                        else if ( (LA21_0==':') ) {s = 40;}
+                        else if ( (LA21_0=='.') ) {s = 40;}
 
-                        else if ( (LA21_0==';') ) {s = 41;}
+                        else if ( (LA21_0=='?') ) {s = 41;}
 
-                        else if ( (LA21_0=='w') ) {s = 42;}
+                        else if ( (LA21_0==':') ) {s = 42;}
 
-                        else if ( (LA21_0=='v') ) {s = 43;}
+                        else if ( (LA21_0=='w') ) {s = 43;}
 
-                        else if ( (LA21_0=='n') ) {s = 44;}
+                        else if ( (LA21_0=='v') ) {s = 44;}
 
                         else if ( (LA21_0=='o') ) {s = 45;}
 
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSLParser.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSLParser.java
index d813bed..7e15f30 100644
--- a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSLParser.java
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSLParser.java
@@ -1,17 +1,4 @@
-/**
- *                                                                            
- *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
- *                                                                            
- *  All rights reserved. This program and the accompanying materials           
- *  are made available under the terms of the Eclipse Public License v1.0       
- *  which accompanies this distribution, and is available at                  
- *  http://www.eclipse.org/legal/epl-v10.html                                 
- *                                                                            
- *  Contributors:                                                      
- * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
- * 
- */
-package org.eclipse.osbp.xtext.chart.parser.antlr.internal; 
+package org.eclipse.osbp.xtext.chart.parser.antlr.internal;
 
 import org.eclipse.xtext.*;
 import org.eclipse.xtext.parser.*;
@@ -33,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 InternalChartDSLParser extends AbstractInternalAntlrParser {
     public static final String[] tokenNames = new String[] {
-        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_INT", "RULE_STRING", "RULE_ID", "RULE_HEX", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'chart'", "'described by'", "'as'", "'polling'", "'using'", "'bar'", "'shaded'", "'animated'", "'swapped'", "'stacked'", "'line'", "'showMarker'", "'trendLine'", "'cursor'", "'zoom'", "'tooltip'", "'fillZero'", "'filled'", "'pie'", "'empty'", "'donut'", "'bubble'", "'multiplier'", "'gradient'", "'transparent'", "'gauge'", "'label'", "'hasTicks'", "'minimum'", "'maximum'", "'intervals'", "'tree'", "'map'", "'collapsible'", "'up to'", "'datamart'", "'legend'", "'toggle'", "'replot'", "'always'", "'inside'", "'axis'", "'renders'", "'shortLabel'", "'tickangle'", "'segmentcolor'", "'import'", "'-'", "'.'", "'*'", "'@'", "'('", "','", "')'", "'='", "'#'", "'['", "']'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'::'", "'?.'", "'|'", "';'", "'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'", "'?'", "'&'", "'inside-grid'", "'outside'", "'outside-grid'", "'normal'", "'slow'", "'fast'", "'north'", "'north-east'", "'east'", "'south-east'", "'south'", "'south-west'", "'west'", "'north-west'", "'category'", "'linear'", "'date'", "'logarithmic'", "'pyramid'"
+        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_INT", "RULE_STRING", "RULE_ID", "RULE_HEX", "RULE_DECIMAL", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'package'", "'{'", "'}'", "'chart'", "'describedBy'", "'as'", "'polling'", "'selectById'", "'using'", "'bar'", "'shaded'", "'animated'", "'swapped'", "'stacked'", "'line'", "'showMarker'", "'trendLine'", "'cursor'", "'zoom'", "'tooltip'", "'fillZero'", "'filled'", "'pie'", "'empty'", "'donut'", "'bubble'", "'multiplier'", "'gradient'", "'transparent'", "'gauge'", "'label'", "'hasTicks'", "'minimum'", "'maximum'", "'intervals'", "'tree'", "'map'", "'collapsible'", "'upTo'", "'datamart'", "'legend'", "'toggle'", "'replot'", "'always'", "'inside'", "'axis'", "'renders'", "'shortLabel'", "'angle'", "'segmentcolor'", "'-'", "'import'", "'static'", "'extension'", "'*'", "'ns'", "';'", "'@'", "'('", "','", "')'", "'='", "'#'", "'['", "']'", "'+='", "'-='", "'*='", "'/='", "'%='", "'<'", "'>'", "'>='", "'||'", "'&&'", "'=='", "'!='", "'==='", "'!=='", "'instanceof'", "'->'", "'..<'", "'..'", "'=>'", "'<>'", "'?:'", "'+'", "'**'", "'/'", "'%'", "'!'", "'++'", "'--'", "'.'", "'::'", "'?.'", "'|'", "'if'", "'else'", "'switch'", "':'", "'default'", "'case'", "'for'", "'while'", "'do'", "'var'", "'val'", "'extends'", "'super'", "'new'", "'false'", "'true'", "'null'", "'typeof'", "'throw'", "'return'", "'try'", "'finally'", "'synchronized'", "'catch'", "'?'", "'&'", "'inside-grid'", "'outside'", "'outside-grid'", "'normal'", "'slow'", "'fast'", "'north'", "'north-east'", "'east'", "'south-east'", "'south'", "'south-west'", "'west'", "'north-west'", "'category'", "'linear'", "'date'", "'logarithmic'", "'pyramid'"
     };
     public static final int T__144=144;
     public static final int T__143=143;
@@ -94,8 +96,10 @@
     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__154=154;
     public static final int T__151=151;
     public static final int T__150=150;
+    public static final int T__153=153;
     public static final int T__152=152;
     public static final int T__48=48;
     public static final int T__49=49;
@@ -203,23 +207,23 @@
         
 
     public String[] getTokenNames() { return InternalChartDSLParser.tokenNames; }
-    public String getGrammarFileName() { return "../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g"; }
+    public String getGrammarFileName() { return "InternalChartDSL.g"; }
 
 
 
      	private ChartDSLGrammarAccess grammarAccess;
-     	
+
         public InternalChartDSLParser(TokenStream input, ChartDSLGrammarAccess grammarAccess) {
             this(input);
             this.grammarAccess = grammarAccess;
             registerRules(grammarAccess.getGrammar());
         }
-        
+
         @Override
         protected String getFirstRuleName() {
-        	return "ChartModel";	
+        	return "ChartModel";
        	}
-       	
+
        	@Override
        	protected ChartDSLGrammarAccess getGrammarAccess() {
        		return grammarAccess;
@@ -227,8 +231,9 @@
 
 
 
+
     // $ANTLR start "entryRuleChartModel"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:68:1: entryRuleChartModel returns [EObject current=null] : iv_ruleChartModel= ruleChartModel EOF ;
+    // InternalChartDSL.g:78:1: entryRuleChartModel returns [EObject current=null] : iv_ruleChartModel= ruleChartModel EOF ;
     public final EObject entryRuleChartModel() throws RecognitionException {
         EObject current = null;
 
@@ -236,13 +241,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:69:2: (iv_ruleChartModel= ruleChartModel EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:70:2: iv_ruleChartModel= ruleChartModel EOF
+            // InternalChartDSL.g:78:51: (iv_ruleChartModel= ruleChartModel EOF )
+            // InternalChartDSL.g:79:2: iv_ruleChartModel= ruleChartModel EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getChartModelRule()); 
             }
-            pushFollow(FOLLOW_ruleChartModel_in_entryRuleChartModel75);
+            pushFollow(FOLLOW_1);
             iv_ruleChartModel=ruleChartModel();
 
             state._fsp--;
@@ -250,16 +255,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleChartModel; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartModel85); 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;
@@ -268,59 +273,111 @@
 
 
     // $ANTLR start "ruleChartModel"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:77:1: ruleChartModel returns [EObject current=null] : ( (lv_packages_0_0= ruleChartPackage ) )* ;
+    // InternalChartDSL.g:85:1: ruleChartModel returns [EObject current=null] : ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleChartPackage ) )* ) ;
     public final EObject ruleChartModel() throws RecognitionException {
         EObject current = null;
 
-        EObject lv_packages_0_0 = null;
+        EObject lv_importSection_0_0 = null;
+
+        EObject lv_packages_1_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:80:28: ( ( (lv_packages_0_0= ruleChartPackage ) )* )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:81:1: ( (lv_packages_0_0= ruleChartPackage ) )*
+            // InternalChartDSL.g:91:2: ( ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleChartPackage ) )* ) )
+            // InternalChartDSL.g:92:2: ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleChartPackage ) )* )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:81:1: ( (lv_packages_0_0= ruleChartPackage ) )*
-            loop1:
-            do {
-                int alt1=2;
-                int LA1_0 = input.LA(1);
+            // InternalChartDSL.g:92:2: ( ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleChartPackage ) )* )
+            // InternalChartDSL.g:93:3: ( (lv_importSection_0_0= ruleXImportSection ) )? ( (lv_packages_1_0= ruleChartPackage ) )*
+            {
+            // InternalChartDSL.g:93:3: ( (lv_importSection_0_0= ruleXImportSection ) )?
+            int alt1=2;
+            int LA1_0 = input.LA(1);
 
-                if ( (LA1_0==13) ) {
-                    alt1=1;
+            if ( (LA1_0==64) ) {
+                alt1=1;
+            }
+            switch (alt1) {
+                case 1 :
+                    // InternalChartDSL.g:94:4: (lv_importSection_0_0= ruleXImportSection )
+                    {
+                    // InternalChartDSL.g:94:4: (lv_importSection_0_0= ruleXImportSection )
+                    // InternalChartDSL.g:95:5: lv_importSection_0_0= ruleXImportSection
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      					newCompositeNode(grammarAccess.getChartModelAccess().getImportSectionXImportSectionParserRuleCall_0_0());
+                      				
+                    }
+                    pushFollow(FOLLOW_3);
+                    lv_importSection_0_0=ruleXImportSection();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					if (current==null) {
+                      						current = createModelElementForParent(grammarAccess.getChartModelRule());
+                      					}
+                      					set(
+                      						current,
+                      						"importSection",
+                      						lv_importSection_0_0,
+                      						"org.eclipse.xtext.xbase.Xtype.XImportSection");
+                      					afterParserOrEnumRuleCall();
+                      				
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalChartDSL.g:112:3: ( (lv_packages_1_0= ruleChartPackage ) )*
+            loop2:
+            do {
+                int alt2=2;
+                int LA2_0 = input.LA(1);
+
+                if ( (LA2_0==13) ) {
+                    alt2=1;
                 }
 
 
-                switch (alt1) {
+                switch (alt2) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:82:1: (lv_packages_0_0= ruleChartPackage )
+            	    // InternalChartDSL.g:113:4: (lv_packages_1_0= ruleChartPackage )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:82:1: (lv_packages_0_0= ruleChartPackage )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:83:3: lv_packages_0_0= ruleChartPackage
+            	    // InternalChartDSL.g:113:4: (lv_packages_1_0= ruleChartPackage )
+            	    // InternalChartDSL.g:114:5: lv_packages_1_0= ruleChartPackage
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getChartModelAccess().getPackagesChartPackageParserRuleCall_0()); 
-            	      	    
+
+            	      					newCompositeNode(grammarAccess.getChartModelAccess().getPackagesChartPackageParserRuleCall_1_0());
+            	      				
             	    }
-            	    pushFollow(FOLLOW_ruleChartPackage_in_ruleChartModel130);
-            	    lv_packages_0_0=ruleChartPackage();
+            	    pushFollow(FOLLOW_3);
+            	    lv_packages_1_0=ruleChartPackage();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getChartModelRule());
-            	      	        }
-            	             		add(
-            	             			current, 
-            	             			"packages",
-            	              		lv_packages_0_0, 
-            	              		"ChartPackage");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      					if (current==null) {
+            	      						current = createModelElementForParent(grammarAccess.getChartModelRule());
+            	      					}
+            	      					add(
+            	      						current,
+            	      						"packages",
+            	      						lv_packages_1_0,
+            	      						"org.eclipse.osbp.xtext.chart.ChartDSL.ChartPackage");
+            	      					afterParserOrEnumRuleCall();
+            	      				
             	    }
 
             	    }
@@ -330,22 +387,27 @@
             	    break;
 
             	default :
-            	    break loop1;
+            	    break loop2;
                 }
             } while (true);
 
 
             }
 
+
+            }
+
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -354,7 +416,7 @@
 
 
     // $ANTLR start "entryRuleChartPackage"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:107:1: entryRuleChartPackage returns [EObject current=null] : iv_ruleChartPackage= ruleChartPackage EOF ;
+    // InternalChartDSL.g:135:1: entryRuleChartPackage returns [EObject current=null] : iv_ruleChartPackage= ruleChartPackage EOF ;
     public final EObject entryRuleChartPackage() throws RecognitionException {
         EObject current = null;
 
@@ -362,13 +424,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:108:2: (iv_ruleChartPackage= ruleChartPackage EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:109:2: iv_ruleChartPackage= ruleChartPackage EOF
+            // InternalChartDSL.g:135:53: (iv_ruleChartPackage= ruleChartPackage EOF )
+            // InternalChartDSL.g:136:2: iv_ruleChartPackage= ruleChartPackage EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getChartPackageRule()); 
             }
-            pushFollow(FOLLOW_ruleChartPackage_in_entryRuleChartPackage166);
+            pushFollow(FOLLOW_1);
             iv_ruleChartPackage=ruleChartPackage();
 
             state._fsp--;
@@ -376,16 +438,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleChartPackage; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartPackage176); 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;
@@ -394,76 +456,75 @@
 
 
     // $ANTLR start "ruleChartPackage"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:116:1: ruleChartPackage returns [EObject current=null] : ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleChartImport ) )* ( (lv_charts_5_0= ruleChart ) )* otherlv_6= '}' )? ) ;
+    // InternalChartDSL.g:142:1: ruleChartPackage returns [EObject current=null] : ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_charts_4_0= ruleChart ) )* otherlv_5= '}' )? ) ;
     public final EObject ruleChartPackage() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_1=null;
         Token otherlv_3=null;
-        Token otherlv_6=null;
+        Token otherlv_5=null;
         AntlrDatatypeRuleToken lv_name_2_0 = null;
 
-        EObject lv_imports_4_0 = null;
-
-        EObject lv_charts_5_0 = null;
+        EObject lv_charts_4_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:119:28: ( ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleChartImport ) )* ( (lv_charts_5_0= ruleChart ) )* otherlv_6= '}' )? ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:120:1: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleChartImport ) )* ( (lv_charts_5_0= ruleChart ) )* otherlv_6= '}' )? )
+            // InternalChartDSL.g:148:2: ( ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_charts_4_0= ruleChart ) )* otherlv_5= '}' )? ) )
+            // InternalChartDSL.g:149:2: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_charts_4_0= ruleChart ) )* otherlv_5= '}' )? )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:120:1: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleChartImport ) )* ( (lv_charts_5_0= ruleChart ) )* otherlv_6= '}' )? )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:120:2: () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_imports_4_0= ruleChartImport ) )* ( (lv_charts_5_0= ruleChart ) )* otherlv_6= '}' )?
+            // InternalChartDSL.g:149:2: ( () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_charts_4_0= ruleChart ) )* otherlv_5= '}' )? )
+            // InternalChartDSL.g:150:3: () otherlv_1= 'package' ( (lv_name_2_0= ruleQualifiedName ) ) (otherlv_3= '{' ( (lv_charts_4_0= ruleChart ) )* otherlv_5= '}' )?
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:120:2: ()
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:121:5: 
+            // InternalChartDSL.g:150:3: ()
+            // InternalChartDSL.g:151:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getChartPackageAccess().getChartPackageAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getChartPackageAccess().getChartPackageAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,13,FOLLOW_13_in_ruleChartPackage222); if (state.failed) return current;
+            otherlv_1=(Token)match(input,13,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getChartPackageAccess().getPackageKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getChartPackageAccess().getPackageKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:130:1: ( (lv_name_2_0= ruleQualifiedName ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:131:1: (lv_name_2_0= ruleQualifiedName )
+            // InternalChartDSL.g:161:3: ( (lv_name_2_0= ruleQualifiedName ) )
+            // InternalChartDSL.g:162:4: (lv_name_2_0= ruleQualifiedName )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:131:1: (lv_name_2_0= ruleQualifiedName )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:132:3: lv_name_2_0= ruleQualifiedName
+            // InternalChartDSL.g:162:4: (lv_name_2_0= ruleQualifiedName )
+            // InternalChartDSL.g:163:5: lv_name_2_0= ruleQualifiedName
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getChartPackageAccess().getNameQualifiedNameParserRuleCall_2_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getChartPackageAccess().getNameQualifiedNameParserRuleCall_2_0());
+              				
             }
-            pushFollow(FOLLOW_ruleQualifiedName_in_ruleChartPackage243);
+            pushFollow(FOLLOW_5);
             lv_name_2_0=ruleQualifiedName();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getChartPackageRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"name",
-                      		lv_name_2_0, 
-                      		"QualifiedName");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getChartPackageRule());
+              					}
+              					set(
+              						current,
+              						"name",
+              						lv_name_2_0,
+              						"org.eclipse.xtext.xbase.Xbase.QualifiedName");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -471,7 +532,7 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:148:2: (otherlv_3= '{' ( (lv_imports_4_0= ruleChartImport ) )* ( (lv_charts_5_0= ruleChart ) )* otherlv_6= '}' )?
+            // InternalChartDSL.g:180:3: (otherlv_3= '{' ( (lv_charts_4_0= ruleChart ) )* otherlv_5= '}' )?
             int alt4=2;
             int LA4_0 = input.LA(1);
 
@@ -480,68 +541,15 @@
             }
             switch (alt4) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:148:4: otherlv_3= '{' ( (lv_imports_4_0= ruleChartImport ) )* ( (lv_charts_5_0= ruleChart ) )* otherlv_6= '}'
+                    // InternalChartDSL.g:181:4: otherlv_3= '{' ( (lv_charts_4_0= ruleChart ) )* otherlv_5= '}'
                     {
-                    otherlv_3=(Token)match(input,14,FOLLOW_14_in_ruleChartPackage256); if (state.failed) return current;
+                    otherlv_3=(Token)match(input,14,FOLLOW_6); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_3, grammarAccess.getChartPackageAccess().getLeftCurlyBracketKeyword_3_0());
-                          
+                      				newLeafNode(otherlv_3, grammarAccess.getChartPackageAccess().getLeftCurlyBracketKeyword_3_0());
+                      			
                     }
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:152:1: ( (lv_imports_4_0= ruleChartImport ) )*
-                    loop2:
-                    do {
-                        int alt2=2;
-                        int LA2_0 = input.LA(1);
-
-                        if ( (LA2_0==62) ) {
-                            alt2=1;
-                        }
-
-
-                        switch (alt2) {
-                    	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:153:1: (lv_imports_4_0= ruleChartImport )
-                    	    {
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:153:1: (lv_imports_4_0= ruleChartImport )
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:154:3: lv_imports_4_0= ruleChartImport
-                    	    {
-                    	    if ( state.backtracking==0 ) {
-                    	       
-                    	      	        newCompositeNode(grammarAccess.getChartPackageAccess().getImportsChartImportParserRuleCall_3_1_0()); 
-                    	      	    
-                    	    }
-                    	    pushFollow(FOLLOW_ruleChartImport_in_ruleChartPackage277);
-                    	    lv_imports_4_0=ruleChartImport();
-
-                    	    state._fsp--;
-                    	    if (state.failed) return current;
-                    	    if ( state.backtracking==0 ) {
-
-                    	      	        if (current==null) {
-                    	      	            current = createModelElementForParent(grammarAccess.getChartPackageRule());
-                    	      	        }
-                    	             		add(
-                    	             			current, 
-                    	             			"imports",
-                    	              		lv_imports_4_0, 
-                    	              		"ChartImport");
-                    	      	        afterParserOrEnumRuleCall();
-                    	      	    
-                    	    }
-
-                    	    }
-
-
-                    	    }
-                    	    break;
-
-                    	default :
-                    	    break loop2;
-                        }
-                    } while (true);
-
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:170:3: ( (lv_charts_5_0= ruleChart ) )*
+                    // InternalChartDSL.g:185:4: ( (lv_charts_4_0= ruleChart ) )*
                     loop3:
                     do {
                         int alt3=2;
@@ -554,33 +562,33 @@
 
                         switch (alt3) {
                     	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:171:1: (lv_charts_5_0= ruleChart )
+                    	    // InternalChartDSL.g:186:5: (lv_charts_4_0= ruleChart )
                     	    {
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:171:1: (lv_charts_5_0= ruleChart )
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:172:3: lv_charts_5_0= ruleChart
+                    	    // InternalChartDSL.g:186:5: (lv_charts_4_0= ruleChart )
+                    	    // InternalChartDSL.g:187:6: lv_charts_4_0= ruleChart
                     	    {
                     	    if ( state.backtracking==0 ) {
-                    	       
-                    	      	        newCompositeNode(grammarAccess.getChartPackageAccess().getChartsChartParserRuleCall_3_2_0()); 
-                    	      	    
+
+                    	      						newCompositeNode(grammarAccess.getChartPackageAccess().getChartsChartParserRuleCall_3_1_0());
+                    	      					
                     	    }
-                    	    pushFollow(FOLLOW_ruleChart_in_ruleChartPackage299);
-                    	    lv_charts_5_0=ruleChart();
+                    	    pushFollow(FOLLOW_6);
+                    	    lv_charts_4_0=ruleChart();
 
                     	    state._fsp--;
                     	    if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
-                    	      	        if (current==null) {
-                    	      	            current = createModelElementForParent(grammarAccess.getChartPackageRule());
-                    	      	        }
-                    	             		add(
-                    	             			current, 
-                    	             			"charts",
-                    	              		lv_charts_5_0, 
-                    	              		"Chart");
-                    	      	        afterParserOrEnumRuleCall();
-                    	      	    
+                    	      						if (current==null) {
+                    	      							current = createModelElementForParent(grammarAccess.getChartPackageRule());
+                    	      						}
+                    	      						add(
+                    	      							current,
+                    	      							"charts",
+                    	      							lv_charts_4_0,
+                    	      							"org.eclipse.osbp.xtext.chart.ChartDSL.Chart");
+                    	      						afterParserOrEnumRuleCall();
+                    	      					
                     	    }
 
                     	    }
@@ -594,11 +602,11 @@
                         }
                     } while (true);
 
-                    otherlv_6=(Token)match(input,15,FOLLOW_15_in_ruleChartPackage312); 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.getChartPackageAccess().getRightCurlyBracketKeyword_3_3());
-                          
+                      				newLeafNode(otherlv_5, grammarAccess.getChartPackageAccess().getRightCurlyBracketKeyword_3_2());
+                      			
                     }
 
                     }
@@ -613,14 +621,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -629,7 +639,7 @@
 
 
     // $ANTLR start "entryRuleChart"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:200:1: entryRuleChart returns [EObject current=null] : iv_ruleChart= ruleChart EOF ;
+    // InternalChartDSL.g:213:1: entryRuleChart returns [EObject current=null] : iv_ruleChart= ruleChart EOF ;
     public final EObject entryRuleChart() throws RecognitionException {
         EObject current = null;
 
@@ -637,13 +647,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:201:2: (iv_ruleChart= ruleChart EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:202:2: iv_ruleChart= ruleChart EOF
+            // InternalChartDSL.g:213:46: (iv_ruleChart= ruleChart EOF )
+            // InternalChartDSL.g:214:2: iv_ruleChart= ruleChart EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getChartRule()); 
             }
-            pushFollow(FOLLOW_ruleChart_in_entryRuleChart350);
+            pushFollow(FOLLOW_1);
             iv_ruleChart=ruleChart();
 
             state._fsp--;
@@ -651,16 +661,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleChart; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChart360); 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;
@@ -669,81 +679,83 @@
 
 
     // $ANTLR start "ruleChart"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:209:1: ruleChart returns [EObject current=null] : ( () otherlv_1= 'chart' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? otherlv_5= 'as' ( (lv_charttype_6_0= ruleChartOption ) ) ( ( (lv_polling_7_0= 'polling' ) ) ( (lv_pollingTime_8_0= RULE_INT ) ) )? (otherlv_9= 'using' ( (lv_source_10_0= ruleChartDatamart ) ) )? ) ;
+    // InternalChartDSL.g:220:1: ruleChart returns [EObject current=null] : ( () otherlv_1= 'chart' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? otherlv_5= 'as' ( (lv_charttype_6_0= ruleChartOption ) ) ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_selectById_10_0= 'selectById' ) ) ) ) ) )* ) ) ) (otherlv_11= 'using' ( (lv_source_12_0= ruleChartDatamart ) ) )? ) ;
     public final EObject ruleChart() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_1=null;
         Token lv_description_3_0=null;
         Token otherlv_5=null;
-        Token lv_polling_7_0=null;
-        Token lv_pollingTime_8_0=null;
-        Token otherlv_9=null;
+        Token lv_polling_8_0=null;
+        Token lv_pollingTime_9_0=null;
+        Token lv_selectById_10_0=null;
+        Token otherlv_11=null;
         AntlrDatatypeRuleToken lv_name_2_0 = null;
 
         AntlrDatatypeRuleToken lv_descriptionValue_4_0 = null;
 
         EObject lv_charttype_6_0 = null;
 
-        EObject lv_source_10_0 = null;
+        EObject lv_source_12_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:212:28: ( ( () otherlv_1= 'chart' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? otherlv_5= 'as' ( (lv_charttype_6_0= ruleChartOption ) ) ( ( (lv_polling_7_0= 'polling' ) ) ( (lv_pollingTime_8_0= RULE_INT ) ) )? (otherlv_9= 'using' ( (lv_source_10_0= ruleChartDatamart ) ) )? ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:213:1: ( () otherlv_1= 'chart' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? otherlv_5= 'as' ( (lv_charttype_6_0= ruleChartOption ) ) ( ( (lv_polling_7_0= 'polling' ) ) ( (lv_pollingTime_8_0= RULE_INT ) ) )? (otherlv_9= 'using' ( (lv_source_10_0= ruleChartDatamart ) ) )? )
+            // InternalChartDSL.g:226:2: ( ( () otherlv_1= 'chart' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? otherlv_5= 'as' ( (lv_charttype_6_0= ruleChartOption ) ) ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_selectById_10_0= 'selectById' ) ) ) ) ) )* ) ) ) (otherlv_11= 'using' ( (lv_source_12_0= ruleChartDatamart ) ) )? ) )
+            // InternalChartDSL.g:227:2: ( () otherlv_1= 'chart' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? otherlv_5= 'as' ( (lv_charttype_6_0= ruleChartOption ) ) ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_selectById_10_0= 'selectById' ) ) ) ) ) )* ) ) ) (otherlv_11= 'using' ( (lv_source_12_0= ruleChartDatamart ) ) )? )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:213:1: ( () otherlv_1= 'chart' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? otherlv_5= 'as' ( (lv_charttype_6_0= ruleChartOption ) ) ( ( (lv_polling_7_0= 'polling' ) ) ( (lv_pollingTime_8_0= RULE_INT ) ) )? (otherlv_9= 'using' ( (lv_source_10_0= ruleChartDatamart ) ) )? )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:213:2: () otherlv_1= 'chart' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? otherlv_5= 'as' ( (lv_charttype_6_0= ruleChartOption ) ) ( ( (lv_polling_7_0= 'polling' ) ) ( (lv_pollingTime_8_0= RULE_INT ) ) )? (otherlv_9= 'using' ( (lv_source_10_0= ruleChartDatamart ) ) )?
+            // InternalChartDSL.g:227:2: ( () otherlv_1= 'chart' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? otherlv_5= 'as' ( (lv_charttype_6_0= ruleChartOption ) ) ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_selectById_10_0= 'selectById' ) ) ) ) ) )* ) ) ) (otherlv_11= 'using' ( (lv_source_12_0= ruleChartDatamart ) ) )? )
+            // InternalChartDSL.g:228:3: () otherlv_1= 'chart' ( (lv_name_2_0= ruleTRANSLATABLEID ) ) ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )? otherlv_5= 'as' ( (lv_charttype_6_0= ruleChartOption ) ) ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_selectById_10_0= 'selectById' ) ) ) ) ) )* ) ) ) (otherlv_11= 'using' ( (lv_source_12_0= ruleChartDatamart ) ) )?
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:213:2: ()
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:214:5: 
+            // InternalChartDSL.g:228:3: ()
+            // InternalChartDSL.g:229:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getChartAccess().getChartAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getChartAccess().getChartAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,16,FOLLOW_16_in_ruleChart406); if (state.failed) return current;
+            otherlv_1=(Token)match(input,16,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getChartAccess().getChartKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getChartAccess().getChartKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:223:1: ( (lv_name_2_0= ruleTRANSLATABLEID ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:224:1: (lv_name_2_0= ruleTRANSLATABLEID )
+            // InternalChartDSL.g:239:3: ( (lv_name_2_0= ruleTRANSLATABLEID ) )
+            // InternalChartDSL.g:240:4: (lv_name_2_0= ruleTRANSLATABLEID )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:224:1: (lv_name_2_0= ruleTRANSLATABLEID )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:225:3: lv_name_2_0= ruleTRANSLATABLEID
+            // InternalChartDSL.g:240:4: (lv_name_2_0= ruleTRANSLATABLEID )
+            // InternalChartDSL.g:241:5: lv_name_2_0= ruleTRANSLATABLEID
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getChartAccess().getNameTRANSLATABLEIDParserRuleCall_2_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getChartAccess().getNameTRANSLATABLEIDParserRuleCall_2_0());
+              				
             }
-            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_ruleChart427);
+            pushFollow(FOLLOW_7);
             lv_name_2_0=ruleTRANSLATABLEID();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getChartRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"name",
-                      		lv_name_2_0, 
-                      		"TRANSLATABLEID");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getChartRule());
+              					}
+              					set(
+              						current,
+              						"name",
+              						lv_name_2_0,
+              						"org.eclipse.osbp.xtext.chart.ChartDSL.TRANSLATABLEID");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -751,7 +763,7 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:241:2: ( ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )?
+            // InternalChartDSL.g:258:3: ( ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) ) )?
             int alt5=2;
             int LA5_0 = input.LA(1);
 
@@ -760,27 +772,27 @@
             }
             switch (alt5) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:241:3: ( (lv_description_3_0= 'described by' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) )
+                    // InternalChartDSL.g:259:4: ( (lv_description_3_0= 'describedBy' ) ) ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:241:3: ( (lv_description_3_0= 'described by' ) )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:242:1: (lv_description_3_0= 'described by' )
+                    // InternalChartDSL.g:259:4: ( (lv_description_3_0= 'describedBy' ) )
+                    // InternalChartDSL.g:260:5: (lv_description_3_0= 'describedBy' )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:242:1: (lv_description_3_0= 'described by' )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:243:3: lv_description_3_0= 'described by'
+                    // InternalChartDSL.g:260:5: (lv_description_3_0= 'describedBy' )
+                    // InternalChartDSL.g:261:6: lv_description_3_0= 'describedBy'
                     {
-                    lv_description_3_0=(Token)match(input,17,FOLLOW_17_in_ruleChart446); if (state.failed) return current;
+                    lv_description_3_0=(Token)match(input,17,FOLLOW_8); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              newLeafNode(lv_description_3_0, grammarAccess.getChartAccess().getDescriptionDescribedByKeyword_3_0_0());
-                          
+                      						newLeafNode(lv_description_3_0, grammarAccess.getChartAccess().getDescriptionDescribedByKeyword_3_0_0());
+                      					
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getChartRule());
-                      	        }
-                             		setWithLastConsumed(current, "description", true, "described by");
-                      	    
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getChartRule());
+                      						}
+                      						setWithLastConsumed(current, "description", true, "describedBy");
+                      					
                     }
 
                     }
@@ -788,34 +800,34 @@
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:256:2: ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:257:1: (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING )
+                    // InternalChartDSL.g:273:4: ( (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING ) )
+                    // InternalChartDSL.g:274:5: (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:257:1: (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:258:3: lv_descriptionValue_4_0= ruleTRANSLATABLESTRING
+                    // InternalChartDSL.g:274:5: (lv_descriptionValue_4_0= ruleTRANSLATABLESTRING )
+                    // InternalChartDSL.g:275:6: lv_descriptionValue_4_0= ruleTRANSLATABLESTRING
                     {
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getChartAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0()); 
-                      	    
+
+                      						newCompositeNode(grammarAccess.getChartAccess().getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0());
+                      					
                     }
-                    pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_ruleChart480);
+                    pushFollow(FOLLOW_9);
                     lv_descriptionValue_4_0=ruleTRANSLATABLESTRING();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElementForParent(grammarAccess.getChartRule());
-                      	        }
-                             		set(
-                             			current, 
-                             			"descriptionValue",
-                              		lv_descriptionValue_4_0, 
-                              		"TRANSLATABLESTRING");
-                      	        afterParserOrEnumRuleCall();
-                      	    
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getChartRule());
+                      						}
+                      						set(
+                      							current,
+                      							"descriptionValue",
+                      							lv_descriptionValue_4_0,
+                      							"org.eclipse.osbp.xtext.chart.ChartDSL.TRANSLATABLESTRING");
+                      						afterParserOrEnumRuleCall();
+                      					
                     }
 
                     }
@@ -829,40 +841,40 @@
 
             }
 
-            otherlv_5=(Token)match(input,18,FOLLOW_18_in_ruleChart494); if (state.failed) return current;
+            otherlv_5=(Token)match(input,18,FOLLOW_10); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_5, grammarAccess.getChartAccess().getAsKeyword_4());
-                  
+              			newLeafNode(otherlv_5, grammarAccess.getChartAccess().getAsKeyword_4());
+              		
             }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:278:1: ( (lv_charttype_6_0= ruleChartOption ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:279:1: (lv_charttype_6_0= ruleChartOption )
+            // InternalChartDSL.g:297:3: ( (lv_charttype_6_0= ruleChartOption ) )
+            // InternalChartDSL.g:298:4: (lv_charttype_6_0= ruleChartOption )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:279:1: (lv_charttype_6_0= ruleChartOption )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:280:3: lv_charttype_6_0= ruleChartOption
+            // InternalChartDSL.g:298:4: (lv_charttype_6_0= ruleChartOption )
+            // InternalChartDSL.g:299:5: lv_charttype_6_0= ruleChartOption
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getChartAccess().getCharttypeChartOptionParserRuleCall_5_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getChartAccess().getCharttypeChartOptionParserRuleCall_5_0());
+              				
             }
-            pushFollow(FOLLOW_ruleChartOption_in_ruleChart515);
+            pushFollow(FOLLOW_11);
             lv_charttype_6_0=ruleChartOption();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getChartRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"charttype",
-                      		lv_charttype_6_0, 
-                      		"ChartOption");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getChartRule());
+              					}
+              					set(
+              						current,
+              						"charttype",
+              						lv_charttype_6_0,
+              						"org.eclipse.osbp.xtext.chart.ChartDSL.ChartOption");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -870,124 +882,248 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:296:2: ( ( (lv_polling_7_0= 'polling' ) ) ( (lv_pollingTime_8_0= RULE_INT ) ) )?
-            int alt6=2;
-            int LA6_0 = input.LA(1);
+            // InternalChartDSL.g:316:3: ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_selectById_10_0= 'selectById' ) ) ) ) ) )* ) ) )
+            // InternalChartDSL.g:317:4: ( ( ( ({...}? => ( ({...}? => ( ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_selectById_10_0= 'selectById' ) ) ) ) ) )* ) )
+            {
+            // InternalChartDSL.g:317:4: ( ( ( ({...}? => ( ({...}? => ( ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_selectById_10_0= 'selectById' ) ) ) ) ) )* ) )
+            // InternalChartDSL.g:318:5: ( ( ({...}? => ( ({...}? => ( ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_selectById_10_0= 'selectById' ) ) ) ) ) )* )
+            {
+            getUnorderedGroupHelper().enter(grammarAccess.getChartAccess().getUnorderedGroup_6());
+            // InternalChartDSL.g:321:5: ( ( ({...}? => ( ({...}? => ( ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_selectById_10_0= 'selectById' ) ) ) ) ) )* )
+            // InternalChartDSL.g:322:6: ( ({...}? => ( ({...}? => ( ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_selectById_10_0= 'selectById' ) ) ) ) ) )*
+            {
+            // InternalChartDSL.g:322:6: ( ({...}? => ( ({...}? => ( ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_selectById_10_0= 'selectById' ) ) ) ) ) )*
+            loop6:
+            do {
+                int alt6=3;
+                int LA6_0 = input.LA(1);
 
-            if ( (LA6_0==19) ) {
-                alt6=1;
-            }
-            switch (alt6) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:296:3: ( (lv_polling_7_0= 'polling' ) ) ( (lv_pollingTime_8_0= RULE_INT ) )
-                    {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:296:3: ( (lv_polling_7_0= 'polling' ) )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:297:1: (lv_polling_7_0= 'polling' )
-                    {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:297:1: (lv_polling_7_0= 'polling' )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:298:3: lv_polling_7_0= 'polling'
-                    {
-                    lv_polling_7_0=(Token)match(input,19,FOLLOW_19_in_ruleChart534); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              newLeafNode(lv_polling_7_0, grammarAccess.getChartAccess().getPollingPollingKeyword_6_0_0());
-                          
-                    }
-                    if ( state.backtracking==0 ) {
-
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getChartRule());
-                      	        }
-                             		setWithLastConsumed(current, "polling", true, "polling");
-                      	    
-                    }
-
-                    }
+                if ( LA6_0 == 19 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 0) ) {
+                    alt6=1;
+                }
+                else if ( LA6_0 == 20 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 1) ) {
+                    alt6=2;
+                }
 
 
-                    }
+                switch (alt6) {
+            	case 1 :
+            	    // InternalChartDSL.g:323:4: ({...}? => ( ({...}? => ( ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) ) ) ) ) )
+            	    {
+            	    // InternalChartDSL.g:323:4: ({...}? => ( ({...}? => ( ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) ) ) ) ) )
+            	    // InternalChartDSL.g:324:5: {...}? => ( ({...}? => ( ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) ) ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 0) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChart", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 0)");
+            	    }
+            	    // InternalChartDSL.g:324:102: ( ({...}? => ( ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) ) ) ) )
+            	    // InternalChartDSL.g:325:6: ({...}? => ( ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) ) ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getChartAccess().getUnorderedGroup_6(), 0);
+            	    // InternalChartDSL.g:328:9: ({...}? => ( ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) ) ) )
+            	    // InternalChartDSL.g:328:10: {...}? => ( ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) ) )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChart", "true");
+            	    }
+            	    // InternalChartDSL.g:328:19: ( ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) ) )
+            	    // InternalChartDSL.g:328:20: ( (lv_polling_8_0= 'polling' ) ) ( (lv_pollingTime_9_0= RULE_INT ) )
+            	    {
+            	    // InternalChartDSL.g:328:20: ( (lv_polling_8_0= 'polling' ) )
+            	    // InternalChartDSL.g:329:10: (lv_polling_8_0= 'polling' )
+            	    {
+            	    // InternalChartDSL.g:329:10: (lv_polling_8_0= 'polling' )
+            	    // InternalChartDSL.g:330:11: lv_polling_8_0= 'polling'
+            	    {
+            	    lv_polling_8_0=(Token)match(input,19,FOLLOW_12); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
 
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:311:2: ( (lv_pollingTime_8_0= RULE_INT ) )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:312:1: (lv_pollingTime_8_0= RULE_INT )
-                    {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:312:1: (lv_pollingTime_8_0= RULE_INT )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:313:3: lv_pollingTime_8_0= RULE_INT
-                    {
-                    lv_pollingTime_8_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleChart564); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
+            	      											newLeafNode(lv_polling_8_0, grammarAccess.getChartAccess().getPollingPollingKeyword_6_0_0_0());
+            	      										
+            	    }
+            	    if ( state.backtracking==0 ) {
 
-                      			newLeafNode(lv_pollingTime_8_0, grammarAccess.getChartAccess().getPollingTimeINTTerminalRuleCall_6_1_0()); 
-                      		
-                    }
-                    if ( state.backtracking==0 ) {
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getChartRule());
+            	      											}
+            	      											setWithLastConsumed(current, "polling", true, "polling");
+            	      										
+            	    }
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getChartRule());
-                      	        }
-                             		setWithLastConsumed(
-                             			current, 
-                             			"pollingTime",
-                              		lv_pollingTime_8_0, 
-                              		"INT");
-                      	    
-                    }
-
-                    }
+            	    }
 
 
-                    }
+            	    }
+
+            	    // InternalChartDSL.g:342:9: ( (lv_pollingTime_9_0= RULE_INT ) )
+            	    // InternalChartDSL.g:343:10: (lv_pollingTime_9_0= RULE_INT )
+            	    {
+            	    // InternalChartDSL.g:343:10: (lv_pollingTime_9_0= RULE_INT )
+            	    // InternalChartDSL.g:344:11: lv_pollingTime_9_0= RULE_INT
+            	    {
+            	    lv_pollingTime_9_0=(Token)match(input,RULE_INT,FOLLOW_11); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      											newLeafNode(lv_pollingTime_9_0, grammarAccess.getChartAccess().getPollingTimeINTTerminalRuleCall_6_0_1_0());
+            	      										
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getChartRule());
+            	      											}
+            	      											setWithLastConsumed(
+            	      												current,
+            	      												"pollingTime",
+            	      												lv_pollingTime_9_0,
+            	      												"org.eclipse.xtext.xbase.Xbase.INT");
+            	      										
+            	    }
+
+            	    }
 
 
-                    }
-                    break;
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartAccess().getUnorderedGroup_6());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // InternalChartDSL.g:366:4: ({...}? => ( ({...}? => ( (lv_selectById_10_0= 'selectById' ) ) ) ) )
+            	    {
+            	    // InternalChartDSL.g:366:4: ({...}? => ( ({...}? => ( (lv_selectById_10_0= 'selectById' ) ) ) ) )
+            	    // InternalChartDSL.g:367:5: {...}? => ( ({...}? => ( (lv_selectById_10_0= 'selectById' ) ) ) )
+            	    {
+            	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 1) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChart", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartAccess().getUnorderedGroup_6(), 1)");
+            	    }
+            	    // InternalChartDSL.g:367:102: ( ({...}? => ( (lv_selectById_10_0= 'selectById' ) ) ) )
+            	    // InternalChartDSL.g:368:6: ({...}? => ( (lv_selectById_10_0= 'selectById' ) ) )
+            	    {
+            	    getUnorderedGroupHelper().select(grammarAccess.getChartAccess().getUnorderedGroup_6(), 1);
+            	    // InternalChartDSL.g:371:9: ({...}? => ( (lv_selectById_10_0= 'selectById' ) ) )
+            	    // InternalChartDSL.g:371:10: {...}? => ( (lv_selectById_10_0= 'selectById' ) )
+            	    {
+            	    if ( !((true)) ) {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        throw new FailedPredicateException(input, "ruleChart", "true");
+            	    }
+            	    // InternalChartDSL.g:371:19: ( (lv_selectById_10_0= 'selectById' ) )
+            	    // InternalChartDSL.g:371:20: (lv_selectById_10_0= 'selectById' )
+            	    {
+            	    // InternalChartDSL.g:371:20: (lv_selectById_10_0= 'selectById' )
+            	    // InternalChartDSL.g:372:10: lv_selectById_10_0= 'selectById'
+            	    {
+            	    lv_selectById_10_0=(Token)match(input,20,FOLLOW_11); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      										newLeafNode(lv_selectById_10_0, grammarAccess.getChartAccess().getSelectByIdSelectByIdKeyword_6_1_0());
+            	      									
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      										if (current==null) {
+            	      											current = createModelElement(grammarAccess.getChartRule());
+            	      										}
+            	      										setWithLastConsumed(current, "selectById", true, "selectById");
+            	      									
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    getUnorderedGroupHelper().returnFromSelection(grammarAccess.getChartAccess().getUnorderedGroup_6());
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop6;
+                }
+            } while (true);
+
 
             }
 
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:329:4: (otherlv_9= 'using' ( (lv_source_10_0= ruleChartDatamart ) ) )?
+
+            }
+
+            getUnorderedGroupHelper().leave(grammarAccess.getChartAccess().getUnorderedGroup_6());
+
+            }
+
+            // InternalChartDSL.g:396:3: (otherlv_11= 'using' ( (lv_source_12_0= ruleChartDatamart ) ) )?
             int alt7=2;
             int LA7_0 = input.LA(1);
 
-            if ( (LA7_0==20) ) {
+            if ( (LA7_0==21) ) {
                 alt7=1;
             }
             switch (alt7) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:329:6: otherlv_9= 'using' ( (lv_source_10_0= ruleChartDatamart ) )
+                    // InternalChartDSL.g:397:4: otherlv_11= 'using' ( (lv_source_12_0= ruleChartDatamart ) )
                     {
-                    otherlv_9=(Token)match(input,20,FOLLOW_20_in_ruleChart584); if (state.failed) return current;
+                    otherlv_11=(Token)match(input,21,FOLLOW_13); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_9, grammarAccess.getChartAccess().getUsingKeyword_7_0());
-                          
+                      				newLeafNode(otherlv_11, grammarAccess.getChartAccess().getUsingKeyword_7_0());
+                      			
                     }
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:333:1: ( (lv_source_10_0= ruleChartDatamart ) )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:334:1: (lv_source_10_0= ruleChartDatamart )
+                    // InternalChartDSL.g:401:4: ( (lv_source_12_0= ruleChartDatamart ) )
+                    // InternalChartDSL.g:402:5: (lv_source_12_0= ruleChartDatamart )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:334:1: (lv_source_10_0= ruleChartDatamart )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:335:3: lv_source_10_0= ruleChartDatamart
+                    // InternalChartDSL.g:402:5: (lv_source_12_0= ruleChartDatamart )
+                    // InternalChartDSL.g:403:6: lv_source_12_0= ruleChartDatamart
                     {
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getChartAccess().getSourceChartDatamartParserRuleCall_7_1_0()); 
-                      	    
+
+                      						newCompositeNode(grammarAccess.getChartAccess().getSourceChartDatamartParserRuleCall_7_1_0());
+                      					
                     }
-                    pushFollow(FOLLOW_ruleChartDatamart_in_ruleChart605);
-                    lv_source_10_0=ruleChartDatamart();
+                    pushFollow(FOLLOW_2);
+                    lv_source_12_0=ruleChartDatamart();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElementForParent(grammarAccess.getChartRule());
-                      	        }
-                             		set(
-                             			current, 
-                             			"source",
-                              		lv_source_10_0, 
-                              		"ChartDatamart");
-                      	        afterParserOrEnumRuleCall();
-                      	    
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getChartRule());
+                      						}
+                      						set(
+                      							current,
+                      							"source",
+                      							lv_source_12_0,
+                      							"org.eclipse.osbp.xtext.chart.ChartDSL.ChartDatamart");
+                      						afterParserOrEnumRuleCall();
+                      					
                     }
 
                     }
@@ -1008,14 +1144,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -1024,7 +1162,7 @@
 
 
     // $ANTLR start "entryRuleChartOption"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:359:1: entryRuleChartOption returns [EObject current=null] : iv_ruleChartOption= ruleChartOption EOF ;
+    // InternalChartDSL.g:425:1: entryRuleChartOption returns [EObject current=null] : iv_ruleChartOption= ruleChartOption EOF ;
     public final EObject entryRuleChartOption() throws RecognitionException {
         EObject current = null;
 
@@ -1032,13 +1170,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:360:2: (iv_ruleChartOption= ruleChartOption EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:361:2: iv_ruleChartOption= ruleChartOption EOF
+            // InternalChartDSL.g:425:52: (iv_ruleChartOption= ruleChartOption EOF )
+            // InternalChartDSL.g:426:2: iv_ruleChartOption= ruleChartOption EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getChartOptionRule()); 
             }
-            pushFollow(FOLLOW_ruleChartOption_in_entryRuleChartOption643);
+            pushFollow(FOLLOW_1);
             iv_ruleChartOption=ruleChartOption();
 
             state._fsp--;
@@ -1046,16 +1184,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleChartOption; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartOption653); 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;
@@ -1064,7 +1202,7 @@
 
 
     // $ANTLR start "ruleChartOption"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:368:1: ruleChartOption returns [EObject current=null] : (this_ChartBar_0= ruleChartBar | this_ChartLine_1= ruleChartLine | this_ChartPie_2= ruleChartPie | this_ChartDonut_3= ruleChartDonut | this_ChartBubble_4= ruleChartBubble | this_ChartGauge_5= ruleChartGauge | this_ChartTree_6= ruleChartTree ) ;
+    // InternalChartDSL.g:432:1: ruleChartOption returns [EObject current=null] : (this_ChartBar_0= ruleChartBar | this_ChartLine_1= ruleChartLine | this_ChartPie_2= ruleChartPie | this_ChartDonut_3= ruleChartDonut | this_ChartBubble_4= ruleChartBubble | this_ChartGauge_5= ruleChartGauge | this_ChartTree_6= ruleChartTree ) ;
     public final EObject ruleChartOption() throws RecognitionException {
         EObject current = null;
 
@@ -1083,46 +1221,47 @@
         EObject this_ChartTree_6 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:371:28: ( (this_ChartBar_0= ruleChartBar | this_ChartLine_1= ruleChartLine | this_ChartPie_2= ruleChartPie | this_ChartDonut_3= ruleChartDonut | this_ChartBubble_4= ruleChartBubble | this_ChartGauge_5= ruleChartGauge | this_ChartTree_6= ruleChartTree ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:372:1: (this_ChartBar_0= ruleChartBar | this_ChartLine_1= ruleChartLine | this_ChartPie_2= ruleChartPie | this_ChartDonut_3= ruleChartDonut | this_ChartBubble_4= ruleChartBubble | this_ChartGauge_5= ruleChartGauge | this_ChartTree_6= ruleChartTree )
+            // InternalChartDSL.g:438:2: ( (this_ChartBar_0= ruleChartBar | this_ChartLine_1= ruleChartLine | this_ChartPie_2= ruleChartPie | this_ChartDonut_3= ruleChartDonut | this_ChartBubble_4= ruleChartBubble | this_ChartGauge_5= ruleChartGauge | this_ChartTree_6= ruleChartTree ) )
+            // InternalChartDSL.g:439:2: (this_ChartBar_0= ruleChartBar | this_ChartLine_1= ruleChartLine | this_ChartPie_2= ruleChartPie | this_ChartDonut_3= ruleChartDonut | this_ChartBubble_4= ruleChartBubble | this_ChartGauge_5= ruleChartGauge | this_ChartTree_6= ruleChartTree )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:372:1: (this_ChartBar_0= ruleChartBar | this_ChartLine_1= ruleChartLine | this_ChartPie_2= ruleChartPie | this_ChartDonut_3= ruleChartDonut | this_ChartBubble_4= ruleChartBubble | this_ChartGauge_5= ruleChartGauge | this_ChartTree_6= ruleChartTree )
+            // InternalChartDSL.g:439:2: (this_ChartBar_0= ruleChartBar | this_ChartLine_1= ruleChartLine | this_ChartPie_2= ruleChartPie | this_ChartDonut_3= ruleChartDonut | this_ChartBubble_4= ruleChartBubble | this_ChartGauge_5= ruleChartGauge | this_ChartTree_6= ruleChartTree )
             int alt8=7;
             switch ( input.LA(1) ) {
-            case 21:
+            case 22:
                 {
                 alt8=1;
                 }
                 break;
-            case 26:
+            case 27:
                 {
                 alt8=2;
                 }
                 break;
-            case 34:
+            case 35:
                 {
                 alt8=3;
                 }
                 break;
-            case 36:
+            case 37:
                 {
                 alt8=4;
                 }
                 break;
-            case 37:
+            case 38:
                 {
                 alt8=5;
                 }
                 break;
-            case 41:
+            case 42:
                 {
                 alt8=6;
                 }
                 break;
-            case 47:
+            case 48:
                 {
                 alt8=7;
                 }
@@ -1137,155 +1276,155 @@
 
             switch (alt8) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:373:5: this_ChartBar_0= ruleChartBar
+                    // InternalChartDSL.g:440:3: this_ChartBar_0= ruleChartBar
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getChartOptionAccess().getChartBarParserRuleCall_0()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getChartOptionAccess().getChartBarParserRuleCall_0());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleChartBar_in_ruleChartOption700);
+                    pushFollow(FOLLOW_2);
                     this_ChartBar_0=ruleChartBar();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_ChartBar_0; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_ChartBar_0;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:383:5: this_ChartLine_1= ruleChartLine
+                    // InternalChartDSL.g:449:3: this_ChartLine_1= ruleChartLine
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getChartOptionAccess().getChartLineParserRuleCall_1()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getChartOptionAccess().getChartLineParserRuleCall_1());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleChartLine_in_ruleChartOption727);
+                    pushFollow(FOLLOW_2);
                     this_ChartLine_1=ruleChartLine();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_ChartLine_1; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_ChartLine_1;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 3 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:393:5: this_ChartPie_2= ruleChartPie
+                    // InternalChartDSL.g:458:3: this_ChartPie_2= ruleChartPie
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getChartOptionAccess().getChartPieParserRuleCall_2()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getChartOptionAccess().getChartPieParserRuleCall_2());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleChartPie_in_ruleChartOption754);
+                    pushFollow(FOLLOW_2);
                     this_ChartPie_2=ruleChartPie();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_ChartPie_2; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_ChartPie_2;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 4 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:403:5: this_ChartDonut_3= ruleChartDonut
+                    // InternalChartDSL.g:467:3: this_ChartDonut_3= ruleChartDonut
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getChartOptionAccess().getChartDonutParserRuleCall_3()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getChartOptionAccess().getChartDonutParserRuleCall_3());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleChartDonut_in_ruleChartOption781);
+                    pushFollow(FOLLOW_2);
                     this_ChartDonut_3=ruleChartDonut();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_ChartDonut_3; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_ChartDonut_3;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 5 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:413:5: this_ChartBubble_4= ruleChartBubble
+                    // InternalChartDSL.g:476:3: this_ChartBubble_4= ruleChartBubble
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getChartOptionAccess().getChartBubbleParserRuleCall_4()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getChartOptionAccess().getChartBubbleParserRuleCall_4());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleChartBubble_in_ruleChartOption808);
+                    pushFollow(FOLLOW_2);
                     this_ChartBubble_4=ruleChartBubble();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_ChartBubble_4; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_ChartBubble_4;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 6 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:423:5: this_ChartGauge_5= ruleChartGauge
+                    // InternalChartDSL.g:485:3: this_ChartGauge_5= ruleChartGauge
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getChartOptionAccess().getChartGaugeParserRuleCall_5()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getChartOptionAccess().getChartGaugeParserRuleCall_5());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleChartGauge_in_ruleChartOption835);
+                    pushFollow(FOLLOW_2);
                     this_ChartGauge_5=ruleChartGauge();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_ChartGauge_5; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_ChartGauge_5;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 7 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:433:5: this_ChartTree_6= ruleChartTree
+                    // InternalChartDSL.g:494:3: this_ChartTree_6= ruleChartTree
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getChartOptionAccess().getChartTreeParserRuleCall_6()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getChartOptionAccess().getChartTreeParserRuleCall_6());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleChartTree_in_ruleChartOption862);
+                    pushFollow(FOLLOW_2);
                     this_ChartTree_6=ruleChartTree();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_ChartTree_6; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_ChartTree_6;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
@@ -1297,14 +1436,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -1313,7 +1454,7 @@
 
 
     // $ANTLR start "entryRuleChartBar"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:449:1: entryRuleChartBar returns [EObject current=null] : iv_ruleChartBar= ruleChartBar EOF ;
+    // InternalChartDSL.g:506:1: entryRuleChartBar returns [EObject current=null] : iv_ruleChartBar= ruleChartBar EOF ;
     public final EObject entryRuleChartBar() throws RecognitionException {
         EObject current = null;
 
@@ -1321,13 +1462,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:450:2: (iv_ruleChartBar= ruleChartBar EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:451:2: iv_ruleChartBar= ruleChartBar EOF
+            // InternalChartDSL.g:506:49: (iv_ruleChartBar= ruleChartBar EOF )
+            // InternalChartDSL.g:507:2: iv_ruleChartBar= ruleChartBar EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getChartBarRule()); 
             }
-            pushFollow(FOLLOW_ruleChartBar_in_entryRuleChartBar897);
+            pushFollow(FOLLOW_1);
             iv_ruleChartBar=ruleChartBar();
 
             state._fsp--;
@@ -1335,16 +1476,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleChartBar; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartBar907); 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;
@@ -1353,7 +1494,7 @@
 
 
     // $ANTLR start "ruleChartBar"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:458:1: ruleChartBar returns [EObject current=null] : ( () otherlv_1= 'bar' ( ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) ) ) ) ;
+    // InternalChartDSL.g:513:1: ruleChartBar returns [EObject current=null] : ( () otherlv_1= 'bar' ( ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) ) ) ) ;
     public final EObject ruleChartBar() throws RecognitionException {
         EObject current = null;
 
@@ -1363,105 +1504,106 @@
         Token lv_swapped_5_0=null;
         Token lv_stacked_6_0=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:461:28: ( ( () otherlv_1= 'bar' ( ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) ) ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:462:1: ( () otherlv_1= 'bar' ( ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) ) ) )
+            // InternalChartDSL.g:519:2: ( ( () otherlv_1= 'bar' ( ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) ) ) ) )
+            // InternalChartDSL.g:520:2: ( () otherlv_1= 'bar' ( ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) ) ) )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:462:1: ( () otherlv_1= 'bar' ( ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:462:2: () otherlv_1= 'bar' ( ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) ) )
+            // InternalChartDSL.g:520:2: ( () otherlv_1= 'bar' ( ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) ) ) )
+            // InternalChartDSL.g:521:3: () otherlv_1= 'bar' ( ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) ) )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:462:2: ()
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:463:5: 
+            // InternalChartDSL.g:521:3: ()
+            // InternalChartDSL.g:522:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getChartBarAccess().getChartBarAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getChartBarAccess().getChartBarAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,21,FOLLOW_21_in_ruleChartBar953); if (state.failed) return current;
+            otherlv_1=(Token)match(input,22,FOLLOW_14); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getChartBarAccess().getBarKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getChartBarAccess().getBarKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:472:1: ( ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:474:1: ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) )
+            // InternalChartDSL.g:532:3: ( ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) ) )
+            // InternalChartDSL.g:533:4: ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:474:1: ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:475:2: ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* )
+            // InternalChartDSL.g:533:4: ( ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* ) )
+            // InternalChartDSL.g:534:5: ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* )
             {
             getUnorderedGroupHelper().enter(grammarAccess.getChartBarAccess().getUnorderedGroup_2());
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:478:2: ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:479:3: ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )*
+            // InternalChartDSL.g:537:5: ( ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )* )
+            // InternalChartDSL.g:538:6: ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )*
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:479:3: ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )*
+            // InternalChartDSL.g:538:6: ( ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) ) )*
             loop9:
             do {
                 int alt9=5;
                 int LA9_0 = input.LA(1);
 
-                if ( LA9_0 ==22 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0) ) {
+                if ( LA9_0 == 23 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0) ) {
                     alt9=1;
                 }
-                else if ( LA9_0 ==23 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1) ) {
+                else if ( LA9_0 == 24 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1) ) {
                     alt9=2;
                 }
-                else if ( LA9_0 ==24 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2) ) {
+                else if ( LA9_0 == 25 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2) ) {
                     alt9=3;
                 }
-                else if ( LA9_0 ==25 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3) ) {
+                else if ( LA9_0 == 26 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3) ) {
                     alt9=4;
                 }
 
 
                 switch (alt9) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:481:4: ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) )
+            	    // InternalChartDSL.g:539:4: ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:481:4: ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:482:5: {...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) )
+            	    // InternalChartDSL.g:539:4: ({...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) ) )
+            	    // InternalChartDSL.g:540:5: {...}? => ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartBar", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:482:105: ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:483:6: ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) )
+            	    // InternalChartDSL.g:540:105: ( ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) ) )
+            	    // InternalChartDSL.g:541:6: ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 0);
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:486:6: ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:486:7: {...}? => ( (lv_shadow_3_0= 'shaded' ) )
+            	    // InternalChartDSL.g:544:9: ({...}? => ( (lv_shadow_3_0= 'shaded' ) ) )
+            	    // InternalChartDSL.g:544:10: {...}? => ( (lv_shadow_3_0= 'shaded' ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartBar", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:486:16: ( (lv_shadow_3_0= 'shaded' ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:487:1: (lv_shadow_3_0= 'shaded' )
+            	    // InternalChartDSL.g:544:19: ( (lv_shadow_3_0= 'shaded' ) )
+            	    // InternalChartDSL.g:544:20: (lv_shadow_3_0= 'shaded' )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:487:1: (lv_shadow_3_0= 'shaded' )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:488:3: lv_shadow_3_0= 'shaded'
+            	    // InternalChartDSL.g:544:20: (lv_shadow_3_0= 'shaded' )
+            	    // InternalChartDSL.g:545:10: lv_shadow_3_0= 'shaded'
             	    {
-            	    lv_shadow_3_0=(Token)match(input,22,FOLLOW_22_in_ruleChartBar1016); if (state.failed) return current;
+            	    lv_shadow_3_0=(Token)match(input,23,FOLLOW_14); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	              newLeafNode(lv_shadow_3_0, grammarAccess.getChartBarAccess().getShadowShadedKeyword_2_0_0());
-            	          
+            	      										newLeafNode(lv_shadow_3_0, grammarAccess.getChartBarAccess().getShadowShadedKeyword_2_0_0());
+            	      									
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getChartBarRule());
-            	      	        }
-            	             		setWithLastConsumed(current, "shadow", true, "shaded");
-            	      	    
+            	      										if (current==null) {
+            	      											current = createModelElement(grammarAccess.getChartBarRule());
+            	      										}
+            	      										setWithLastConsumed(current, "shadow", true, "shaded");
+            	      									
             	    }
 
             	    }
@@ -1483,45 +1625,45 @@
             	    }
             	    break;
             	case 2 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:508:4: ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) )
+            	    // InternalChartDSL.g:562:4: ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:508:4: ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:509:5: {...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) )
+            	    // InternalChartDSL.g:562:4: ({...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) ) )
+            	    // InternalChartDSL.g:563:5: {...}? => ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartBar", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:509:105: ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:510:6: ({...}? => ( (lv_animated_4_0= 'animated' ) ) )
+            	    // InternalChartDSL.g:563:105: ( ({...}? => ( (lv_animated_4_0= 'animated' ) ) ) )
+            	    // InternalChartDSL.g:564:6: ({...}? => ( (lv_animated_4_0= 'animated' ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 1);
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:513:6: ({...}? => ( (lv_animated_4_0= 'animated' ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:513:7: {...}? => ( (lv_animated_4_0= 'animated' ) )
+            	    // InternalChartDSL.g:567:9: ({...}? => ( (lv_animated_4_0= 'animated' ) ) )
+            	    // InternalChartDSL.g:567:10: {...}? => ( (lv_animated_4_0= 'animated' ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartBar", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:513:16: ( (lv_animated_4_0= 'animated' ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:514:1: (lv_animated_4_0= 'animated' )
+            	    // InternalChartDSL.g:567:19: ( (lv_animated_4_0= 'animated' ) )
+            	    // InternalChartDSL.g:567:20: (lv_animated_4_0= 'animated' )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:514:1: (lv_animated_4_0= 'animated' )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:515:3: lv_animated_4_0= 'animated'
+            	    // InternalChartDSL.g:567:20: (lv_animated_4_0= 'animated' )
+            	    // InternalChartDSL.g:568:10: lv_animated_4_0= 'animated'
             	    {
-            	    lv_animated_4_0=(Token)match(input,23,FOLLOW_23_in_ruleChartBar1101); if (state.failed) return current;
+            	    lv_animated_4_0=(Token)match(input,24,FOLLOW_14); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	              newLeafNode(lv_animated_4_0, grammarAccess.getChartBarAccess().getAnimatedAnimatedKeyword_2_1_0());
-            	          
+            	      										newLeafNode(lv_animated_4_0, grammarAccess.getChartBarAccess().getAnimatedAnimatedKeyword_2_1_0());
+            	      									
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getChartBarRule());
-            	      	        }
-            	             		setWithLastConsumed(current, "animated", true, "animated");
-            	      	    
+            	      										if (current==null) {
+            	      											current = createModelElement(grammarAccess.getChartBarRule());
+            	      										}
+            	      										setWithLastConsumed(current, "animated", true, "animated");
+            	      									
             	    }
 
             	    }
@@ -1543,45 +1685,45 @@
             	    }
             	    break;
             	case 3 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:535:4: ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) )
+            	    // InternalChartDSL.g:585:4: ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:535:4: ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:536:5: {...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) )
+            	    // InternalChartDSL.g:585:4: ({...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) ) )
+            	    // InternalChartDSL.g:586:5: {...}? => ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartBar", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:536:105: ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:537:6: ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) )
+            	    // InternalChartDSL.g:586:105: ( ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) ) )
+            	    // InternalChartDSL.g:587:6: ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 2);
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:540:6: ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:540:7: {...}? => ( (lv_swapped_5_0= 'swapped' ) )
+            	    // InternalChartDSL.g:590:9: ({...}? => ( (lv_swapped_5_0= 'swapped' ) ) )
+            	    // InternalChartDSL.g:590:10: {...}? => ( (lv_swapped_5_0= 'swapped' ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartBar", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:540:16: ( (lv_swapped_5_0= 'swapped' ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:541:1: (lv_swapped_5_0= 'swapped' )
+            	    // InternalChartDSL.g:590:19: ( (lv_swapped_5_0= 'swapped' ) )
+            	    // InternalChartDSL.g:590:20: (lv_swapped_5_0= 'swapped' )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:541:1: (lv_swapped_5_0= 'swapped' )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:542:3: lv_swapped_5_0= 'swapped'
+            	    // InternalChartDSL.g:590:20: (lv_swapped_5_0= 'swapped' )
+            	    // InternalChartDSL.g:591:10: lv_swapped_5_0= 'swapped'
             	    {
-            	    lv_swapped_5_0=(Token)match(input,24,FOLLOW_24_in_ruleChartBar1186); if (state.failed) return current;
+            	    lv_swapped_5_0=(Token)match(input,25,FOLLOW_14); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	              newLeafNode(lv_swapped_5_0, grammarAccess.getChartBarAccess().getSwappedSwappedKeyword_2_2_0());
-            	          
+            	      										newLeafNode(lv_swapped_5_0, grammarAccess.getChartBarAccess().getSwappedSwappedKeyword_2_2_0());
+            	      									
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getChartBarRule());
-            	      	        }
-            	             		setWithLastConsumed(current, "swapped", true, "swapped");
-            	      	    
+            	      										if (current==null) {
+            	      											current = createModelElement(grammarAccess.getChartBarRule());
+            	      										}
+            	      										setWithLastConsumed(current, "swapped", true, "swapped");
+            	      									
             	    }
 
             	    }
@@ -1603,45 +1745,45 @@
             	    }
             	    break;
             	case 4 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:562:4: ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) )
+            	    // InternalChartDSL.g:608:4: ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:562:4: ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:563:5: {...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) )
+            	    // InternalChartDSL.g:608:4: ({...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) ) )
+            	    // InternalChartDSL.g:609:5: {...}? => ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartBar", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:563:105: ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:564:6: ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) )
+            	    // InternalChartDSL.g:609:105: ( ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) ) )
+            	    // InternalChartDSL.g:610:6: ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getChartBarAccess().getUnorderedGroup_2(), 3);
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:567:6: ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:567:7: {...}? => ( (lv_stacked_6_0= 'stacked' ) )
+            	    // InternalChartDSL.g:613:9: ({...}? => ( (lv_stacked_6_0= 'stacked' ) ) )
+            	    // InternalChartDSL.g:613:10: {...}? => ( (lv_stacked_6_0= 'stacked' ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartBar", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:567:16: ( (lv_stacked_6_0= 'stacked' ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:568:1: (lv_stacked_6_0= 'stacked' )
+            	    // InternalChartDSL.g:613:19: ( (lv_stacked_6_0= 'stacked' ) )
+            	    // InternalChartDSL.g:613:20: (lv_stacked_6_0= 'stacked' )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:568:1: (lv_stacked_6_0= 'stacked' )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:569:3: lv_stacked_6_0= 'stacked'
+            	    // InternalChartDSL.g:613:20: (lv_stacked_6_0= 'stacked' )
+            	    // InternalChartDSL.g:614:10: lv_stacked_6_0= 'stacked'
             	    {
-            	    lv_stacked_6_0=(Token)match(input,25,FOLLOW_25_in_ruleChartBar1271); if (state.failed) return current;
+            	    lv_stacked_6_0=(Token)match(input,26,FOLLOW_14); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	              newLeafNode(lv_stacked_6_0, grammarAccess.getChartBarAccess().getStackedStackedKeyword_2_3_0());
-            	          
+            	      										newLeafNode(lv_stacked_6_0, grammarAccess.getChartBarAccess().getStackedStackedKeyword_2_3_0());
+            	      									
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getChartBarRule());
-            	      	        }
-            	             		setWithLastConsumed(current, "stacked", true, "stacked");
-            	      	    
+            	      										if (current==null) {
+            	      											current = createModelElement(grammarAccess.getChartBarRule());
+            	      										}
+            	      										setWithLastConsumed(current, "stacked", true, "stacked");
+            	      									
             	    }
 
             	    }
@@ -1685,14 +1827,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -1701,7 +1845,7 @@
 
 
     // $ANTLR start "entryRuleChartLine"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:604:1: entryRuleChartLine returns [EObject current=null] : iv_ruleChartLine= ruleChartLine EOF ;
+    // InternalChartDSL.g:642:1: entryRuleChartLine returns [EObject current=null] : iv_ruleChartLine= ruleChartLine EOF ;
     public final EObject entryRuleChartLine() throws RecognitionException {
         EObject current = null;
 
@@ -1709,13 +1853,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:605:2: (iv_ruleChartLine= ruleChartLine EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:606:2: iv_ruleChartLine= ruleChartLine EOF
+            // InternalChartDSL.g:642:50: (iv_ruleChartLine= ruleChartLine EOF )
+            // InternalChartDSL.g:643:2: iv_ruleChartLine= ruleChartLine EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getChartLineRule()); 
             }
-            pushFollow(FOLLOW_ruleChartLine_in_entryRuleChartLine1360);
+            pushFollow(FOLLOW_1);
             iv_ruleChartLine=ruleChartLine();
 
             state._fsp--;
@@ -1723,16 +1867,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleChartLine; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartLine1370); 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;
@@ -1741,7 +1885,7 @@
 
 
     // $ANTLR start "ruleChartLine"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:613:1: ruleChartLine returns [EObject current=null] : ( () otherlv_1= 'line' ( ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) ) ) ) ;
+    // InternalChartDSL.g:649:1: ruleChartLine returns [EObject current=null] : ( () otherlv_1= 'line' ( ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) ) ) ) ;
     public final EObject ruleChartLine() throws RecognitionException {
         EObject current = null;
 
@@ -1755,111 +1899,112 @@
         Token lv_fillToZero_9_0=null;
         Token lv_fillArea_10_0=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:616:28: ( ( () otherlv_1= 'line' ( ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) ) ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:617:1: ( () otherlv_1= 'line' ( ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) ) ) )
+            // InternalChartDSL.g:655:2: ( ( () otherlv_1= 'line' ( ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) ) ) ) )
+            // InternalChartDSL.g:656:2: ( () otherlv_1= 'line' ( ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) ) ) )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:617:1: ( () otherlv_1= 'line' ( ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:617:2: () otherlv_1= 'line' ( ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) ) )
+            // InternalChartDSL.g:656:2: ( () otherlv_1= 'line' ( ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) ) ) )
+            // InternalChartDSL.g:657:3: () otherlv_1= 'line' ( ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) ) )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:617:2: ()
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:618:5: 
+            // InternalChartDSL.g:657:3: ()
+            // InternalChartDSL.g:658:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getChartLineAccess().getChartLineAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getChartLineAccess().getChartLineAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,26,FOLLOW_26_in_ruleChartLine1416); if (state.failed) return current;
+            otherlv_1=(Token)match(input,27,FOLLOW_15); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getChartLineAccess().getLineKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getChartLineAccess().getLineKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:627:1: ( ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:629:1: ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) )
+            // InternalChartDSL.g:668:3: ( ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) ) )
+            // InternalChartDSL.g:669:4: ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:629:1: ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:630:2: ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* )
+            // InternalChartDSL.g:669:4: ( ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* ) )
+            // InternalChartDSL.g:670:5: ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* )
             {
             getUnorderedGroupHelper().enter(grammarAccess.getChartLineAccess().getUnorderedGroup_2());
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:633:2: ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:634:3: ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )*
+            // InternalChartDSL.g:673:5: ( ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )* )
+            // InternalChartDSL.g:674:6: ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )*
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:634:3: ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )*
+            // InternalChartDSL.g:674:6: ( ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) ) | ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) ) )*
             loop12:
             do {
                 int alt12=7;
                 int LA12_0 = input.LA(1);
 
-                if ( LA12_0 ==23 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0) ) {
+                if ( LA12_0 == 24 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0) ) {
                     alt12=1;
                 }
-                else if ( LA12_0 ==27 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1) ) {
+                else if ( LA12_0 == 28 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1) ) {
                     alt12=2;
                 }
-                else if ( LA12_0 ==28 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2) ) {
+                else if ( LA12_0 == 29 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2) ) {
                     alt12=3;
                 }
-                else if ( LA12_0 ==29 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3) ) {
+                else if ( LA12_0 == 30 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3) ) {
                     alt12=4;
                 }
-                else if ( LA12_0 ==32 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4) ) {
+                else if ( LA12_0 == 33 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4) ) {
                     alt12=5;
                 }
-                else if ( LA12_0 ==33 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5) ) {
+                else if ( LA12_0 == 34 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5) ) {
                     alt12=6;
                 }
 
 
                 switch (alt12) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:636:4: ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) )
+            	    // InternalChartDSL.g:675:4: ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:636:4: ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:637:5: {...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) )
+            	    // InternalChartDSL.g:675:4: ({...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) ) )
+            	    // InternalChartDSL.g:676:5: {...}? => ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartLine", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:637:106: ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:638:6: ({...}? => ( (lv_animated_3_0= 'animated' ) ) )
+            	    // InternalChartDSL.g:676:106: ( ({...}? => ( (lv_animated_3_0= 'animated' ) ) ) )
+            	    // InternalChartDSL.g:677:6: ({...}? => ( (lv_animated_3_0= 'animated' ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 0);
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:641:6: ({...}? => ( (lv_animated_3_0= 'animated' ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:641:7: {...}? => ( (lv_animated_3_0= 'animated' ) )
+            	    // InternalChartDSL.g:680:9: ({...}? => ( (lv_animated_3_0= 'animated' ) ) )
+            	    // InternalChartDSL.g:680:10: {...}? => ( (lv_animated_3_0= 'animated' ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartLine", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:641:16: ( (lv_animated_3_0= 'animated' ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:642:1: (lv_animated_3_0= 'animated' )
+            	    // InternalChartDSL.g:680:19: ( (lv_animated_3_0= 'animated' ) )
+            	    // InternalChartDSL.g:680:20: (lv_animated_3_0= 'animated' )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:642:1: (lv_animated_3_0= 'animated' )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:643:3: lv_animated_3_0= 'animated'
+            	    // InternalChartDSL.g:680:20: (lv_animated_3_0= 'animated' )
+            	    // InternalChartDSL.g:681:10: lv_animated_3_0= 'animated'
             	    {
-            	    lv_animated_3_0=(Token)match(input,23,FOLLOW_23_in_ruleChartLine1479); if (state.failed) return current;
+            	    lv_animated_3_0=(Token)match(input,24,FOLLOW_15); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	              newLeafNode(lv_animated_3_0, grammarAccess.getChartLineAccess().getAnimatedAnimatedKeyword_2_0_0());
-            	          
+            	      										newLeafNode(lv_animated_3_0, grammarAccess.getChartLineAccess().getAnimatedAnimatedKeyword_2_0_0());
+            	      									
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getChartLineRule());
-            	      	        }
-            	             		setWithLastConsumed(current, "animated", true, "animated");
-            	      	    
+            	      										if (current==null) {
+            	      											current = createModelElement(grammarAccess.getChartLineRule());
+            	      										}
+            	      										setWithLastConsumed(current, "animated", true, "animated");
+            	      									
             	    }
 
             	    }
@@ -1881,45 +2026,45 @@
             	    }
             	    break;
             	case 2 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:663:4: ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) )
+            	    // InternalChartDSL.g:698:4: ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:663:4: ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:664:5: {...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) )
+            	    // InternalChartDSL.g:698:4: ({...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) ) )
+            	    // InternalChartDSL.g:699:5: {...}? => ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartLine", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:664:106: ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:665:6: ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) )
+            	    // InternalChartDSL.g:699:106: ( ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) ) )
+            	    // InternalChartDSL.g:700:6: ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 1);
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:668:6: ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:668:7: {...}? => ( (lv_showMarker_4_0= 'showMarker' ) )
+            	    // InternalChartDSL.g:703:9: ({...}? => ( (lv_showMarker_4_0= 'showMarker' ) ) )
+            	    // InternalChartDSL.g:703:10: {...}? => ( (lv_showMarker_4_0= 'showMarker' ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartLine", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:668:16: ( (lv_showMarker_4_0= 'showMarker' ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:669:1: (lv_showMarker_4_0= 'showMarker' )
+            	    // InternalChartDSL.g:703:19: ( (lv_showMarker_4_0= 'showMarker' ) )
+            	    // InternalChartDSL.g:703:20: (lv_showMarker_4_0= 'showMarker' )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:669:1: (lv_showMarker_4_0= 'showMarker' )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:670:3: lv_showMarker_4_0= 'showMarker'
+            	    // InternalChartDSL.g:703:20: (lv_showMarker_4_0= 'showMarker' )
+            	    // InternalChartDSL.g:704:10: lv_showMarker_4_0= 'showMarker'
             	    {
-            	    lv_showMarker_4_0=(Token)match(input,27,FOLLOW_27_in_ruleChartLine1564); if (state.failed) return current;
+            	    lv_showMarker_4_0=(Token)match(input,28,FOLLOW_15); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	              newLeafNode(lv_showMarker_4_0, grammarAccess.getChartLineAccess().getShowMarkerShowMarkerKeyword_2_1_0());
-            	          
+            	      										newLeafNode(lv_showMarker_4_0, grammarAccess.getChartLineAccess().getShowMarkerShowMarkerKeyword_2_1_0());
+            	      									
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getChartLineRule());
-            	      	        }
-            	             		setWithLastConsumed(current, "showMarker", true, "showMarker");
-            	      	    
+            	      										if (current==null) {
+            	      											current = createModelElement(grammarAccess.getChartLineRule());
+            	      										}
+            	      										setWithLastConsumed(current, "showMarker", true, "showMarker");
+            	      									
             	    }
 
             	    }
@@ -1941,45 +2086,45 @@
             	    }
             	    break;
             	case 3 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:690:4: ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) )
+            	    // InternalChartDSL.g:721:4: ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:690:4: ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:691:5: {...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) )
+            	    // InternalChartDSL.g:721:4: ({...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) ) )
+            	    // InternalChartDSL.g:722:5: {...}? => ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartLine", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:691:106: ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:692:6: ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) )
+            	    // InternalChartDSL.g:722:106: ( ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) ) )
+            	    // InternalChartDSL.g:723:6: ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 2);
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:695:6: ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:695:7: {...}? => ( (lv_trendLine_5_0= 'trendLine' ) )
+            	    // InternalChartDSL.g:726:9: ({...}? => ( (lv_trendLine_5_0= 'trendLine' ) ) )
+            	    // InternalChartDSL.g:726:10: {...}? => ( (lv_trendLine_5_0= 'trendLine' ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartLine", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:695:16: ( (lv_trendLine_5_0= 'trendLine' ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:696:1: (lv_trendLine_5_0= 'trendLine' )
+            	    // InternalChartDSL.g:726:19: ( (lv_trendLine_5_0= 'trendLine' ) )
+            	    // InternalChartDSL.g:726:20: (lv_trendLine_5_0= 'trendLine' )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:696:1: (lv_trendLine_5_0= 'trendLine' )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:697:3: lv_trendLine_5_0= 'trendLine'
+            	    // InternalChartDSL.g:726:20: (lv_trendLine_5_0= 'trendLine' )
+            	    // InternalChartDSL.g:727:10: lv_trendLine_5_0= 'trendLine'
             	    {
-            	    lv_trendLine_5_0=(Token)match(input,28,FOLLOW_28_in_ruleChartLine1649); if (state.failed) return current;
+            	    lv_trendLine_5_0=(Token)match(input,29,FOLLOW_15); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	              newLeafNode(lv_trendLine_5_0, grammarAccess.getChartLineAccess().getTrendLineTrendLineKeyword_2_2_0());
-            	          
+            	      										newLeafNode(lv_trendLine_5_0, grammarAccess.getChartLineAccess().getTrendLineTrendLineKeyword_2_2_0());
+            	      									
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getChartLineRule());
-            	      	        }
-            	             		setWithLastConsumed(current, "trendLine", true, "trendLine");
-            	      	    
+            	      										if (current==null) {
+            	      											current = createModelElement(grammarAccess.getChartLineRule());
+            	      										}
+            	      										setWithLastConsumed(current, "trendLine", true, "trendLine");
+            	      									
             	    }
 
             	    }
@@ -2001,48 +2146,48 @@
             	    }
             	    break;
             	case 4 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:717:4: ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) )
+            	    // InternalChartDSL.g:744:4: ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:717:4: ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:718:5: {...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) )
+            	    // InternalChartDSL.g:744:4: ({...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) ) )
+            	    // InternalChartDSL.g:745:5: {...}? => ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartLine", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:718:106: ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:719:6: ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) )
+            	    // InternalChartDSL.g:745:106: ( ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) ) )
+            	    // InternalChartDSL.g:746:6: ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 3);
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:722:6: ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:722:7: {...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? )
+            	    // InternalChartDSL.g:749:9: ({...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? ) )
+            	    // InternalChartDSL.g:749:10: {...}? => ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartLine", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:722:16: ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:722:17: ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )?
+            	    // InternalChartDSL.g:749:19: ( ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )? )
+            	    // InternalChartDSL.g:749:20: ( (lv_cursor_6_0= 'cursor' ) ) ( (lv_zoom_7_0= 'zoom' ) )? ( (lv_tooltip_8_0= 'tooltip' ) )?
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:722:17: ( (lv_cursor_6_0= 'cursor' ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:723:1: (lv_cursor_6_0= 'cursor' )
+            	    // InternalChartDSL.g:749:20: ( (lv_cursor_6_0= 'cursor' ) )
+            	    // InternalChartDSL.g:750:10: (lv_cursor_6_0= 'cursor' )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:723:1: (lv_cursor_6_0= 'cursor' )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:724:3: lv_cursor_6_0= 'cursor'
+            	    // InternalChartDSL.g:750:10: (lv_cursor_6_0= 'cursor' )
+            	    // InternalChartDSL.g:751:11: lv_cursor_6_0= 'cursor'
             	    {
-            	    lv_cursor_6_0=(Token)match(input,29,FOLLOW_29_in_ruleChartLine1735); if (state.failed) return current;
+            	    lv_cursor_6_0=(Token)match(input,30,FOLLOW_16); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	              newLeafNode(lv_cursor_6_0, grammarAccess.getChartLineAccess().getCursorCursorKeyword_2_3_0_0());
-            	          
+            	      											newLeafNode(lv_cursor_6_0, grammarAccess.getChartLineAccess().getCursorCursorKeyword_2_3_0_0());
+            	      										
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getChartLineRule());
-            	      	        }
-            	             		setWithLastConsumed(current, "cursor", true, "cursor");
-            	      	    
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getChartLineRule());
+            	      											}
+            	      											setWithLastConsumed(current, "cursor", true, "cursor");
+            	      										
             	    }
 
             	    }
@@ -2050,33 +2195,33 @@
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:737:2: ( (lv_zoom_7_0= 'zoom' ) )?
+            	    // InternalChartDSL.g:763:9: ( (lv_zoom_7_0= 'zoom' ) )?
             	    int alt10=2;
             	    int LA10_0 = input.LA(1);
 
-            	    if ( (LA10_0==30) ) {
+            	    if ( (LA10_0==31) ) {
             	        alt10=1;
             	    }
             	    switch (alt10) {
             	        case 1 :
-            	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:738:1: (lv_zoom_7_0= 'zoom' )
+            	            // InternalChartDSL.g:764:10: (lv_zoom_7_0= 'zoom' )
             	            {
-            	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:738:1: (lv_zoom_7_0= 'zoom' )
-            	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:739:3: lv_zoom_7_0= 'zoom'
+            	            // InternalChartDSL.g:764:10: (lv_zoom_7_0= 'zoom' )
+            	            // InternalChartDSL.g:765:11: lv_zoom_7_0= 'zoom'
             	            {
-            	            lv_zoom_7_0=(Token)match(input,30,FOLLOW_30_in_ruleChartLine1766); if (state.failed) return current;
+            	            lv_zoom_7_0=(Token)match(input,31,FOLLOW_17); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
-            	                      newLeafNode(lv_zoom_7_0, grammarAccess.getChartLineAccess().getZoomZoomKeyword_2_3_1_0());
-            	                  
+            	              											newLeafNode(lv_zoom_7_0, grammarAccess.getChartLineAccess().getZoomZoomKeyword_2_3_1_0());
+            	              										
             	            }
             	            if ( state.backtracking==0 ) {
 
-            	              	        if (current==null) {
-            	              	            current = createModelElement(grammarAccess.getChartLineRule());
-            	              	        }
-            	                     		setWithLastConsumed(current, "zoom", true, "zoom");
-            	              	    
+            	              											if (current==null) {
+            	              												current = createModelElement(grammarAccess.getChartLineRule());
+            	              											}
+            	              											setWithLastConsumed(current, "zoom", true, "zoom");
+            	              										
             	            }
 
             	            }
@@ -2087,33 +2232,33 @@
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:752:3: ( (lv_tooltip_8_0= 'tooltip' ) )?
+            	    // InternalChartDSL.g:777:9: ( (lv_tooltip_8_0= 'tooltip' ) )?
             	    int alt11=2;
             	    int LA11_0 = input.LA(1);
 
-            	    if ( (LA11_0==31) ) {
+            	    if ( (LA11_0==32) ) {
             	        alt11=1;
             	    }
             	    switch (alt11) {
             	        case 1 :
-            	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:753:1: (lv_tooltip_8_0= 'tooltip' )
+            	            // InternalChartDSL.g:778:10: (lv_tooltip_8_0= 'tooltip' )
             	            {
-            	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:753:1: (lv_tooltip_8_0= 'tooltip' )
-            	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:754:3: lv_tooltip_8_0= 'tooltip'
+            	            // InternalChartDSL.g:778:10: (lv_tooltip_8_0= 'tooltip' )
+            	            // InternalChartDSL.g:779:11: lv_tooltip_8_0= 'tooltip'
             	            {
-            	            lv_tooltip_8_0=(Token)match(input,31,FOLLOW_31_in_ruleChartLine1798); if (state.failed) return current;
+            	            lv_tooltip_8_0=(Token)match(input,32,FOLLOW_15); if (state.failed) return current;
             	            if ( state.backtracking==0 ) {
 
-            	                      newLeafNode(lv_tooltip_8_0, grammarAccess.getChartLineAccess().getTooltipTooltipKeyword_2_3_2_0());
-            	                  
+            	              											newLeafNode(lv_tooltip_8_0, grammarAccess.getChartLineAccess().getTooltipTooltipKeyword_2_3_2_0());
+            	              										
             	            }
             	            if ( state.backtracking==0 ) {
 
-            	              	        if (current==null) {
-            	              	            current = createModelElement(grammarAccess.getChartLineRule());
-            	              	        }
-            	                     		setWithLastConsumed(current, "tooltip", true, "tooltip");
-            	              	    
+            	              											if (current==null) {
+            	              												current = createModelElement(grammarAccess.getChartLineRule());
+            	              											}
+            	              											setWithLastConsumed(current, "tooltip", true, "tooltip");
+            	              										
             	            }
 
             	            }
@@ -2141,45 +2286,45 @@
             	    }
             	    break;
             	case 5 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:774:4: ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) )
+            	    // InternalChartDSL.g:797:4: ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:774:4: ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:775:5: {...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) )
+            	    // InternalChartDSL.g:797:4: ({...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) ) )
+            	    // InternalChartDSL.g:798:5: {...}? => ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartLine", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:775:106: ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:776:6: ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) )
+            	    // InternalChartDSL.g:798:106: ( ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) ) )
+            	    // InternalChartDSL.g:799:6: ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 4);
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:779:6: ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:779:7: {...}? => ( (lv_fillToZero_9_0= 'fillZero' ) )
+            	    // InternalChartDSL.g:802:9: ({...}? => ( (lv_fillToZero_9_0= 'fillZero' ) ) )
+            	    // InternalChartDSL.g:802:10: {...}? => ( (lv_fillToZero_9_0= 'fillZero' ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartLine", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:779:16: ( (lv_fillToZero_9_0= 'fillZero' ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:780:1: (lv_fillToZero_9_0= 'fillZero' )
+            	    // InternalChartDSL.g:802:19: ( (lv_fillToZero_9_0= 'fillZero' ) )
+            	    // InternalChartDSL.g:802:20: (lv_fillToZero_9_0= 'fillZero' )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:780:1: (lv_fillToZero_9_0= 'fillZero' )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:781:3: lv_fillToZero_9_0= 'fillZero'
+            	    // InternalChartDSL.g:802:20: (lv_fillToZero_9_0= 'fillZero' )
+            	    // InternalChartDSL.g:803:10: lv_fillToZero_9_0= 'fillZero'
             	    {
-            	    lv_fillToZero_9_0=(Token)match(input,32,FOLLOW_32_in_ruleChartLine1885); if (state.failed) return current;
+            	    lv_fillToZero_9_0=(Token)match(input,33,FOLLOW_15); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	              newLeafNode(lv_fillToZero_9_0, grammarAccess.getChartLineAccess().getFillToZeroFillZeroKeyword_2_4_0());
-            	          
+            	      										newLeafNode(lv_fillToZero_9_0, grammarAccess.getChartLineAccess().getFillToZeroFillZeroKeyword_2_4_0());
+            	      									
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getChartLineRule());
-            	      	        }
-            	             		setWithLastConsumed(current, "fillToZero", true, "fillZero");
-            	      	    
+            	      										if (current==null) {
+            	      											current = createModelElement(grammarAccess.getChartLineRule());
+            	      										}
+            	      										setWithLastConsumed(current, "fillToZero", true, "fillZero");
+            	      									
             	    }
 
             	    }
@@ -2201,45 +2346,45 @@
             	    }
             	    break;
             	case 6 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:801:4: ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) )
+            	    // InternalChartDSL.g:820:4: ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:801:4: ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:802:5: {...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) )
+            	    // InternalChartDSL.g:820:4: ({...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) ) )
+            	    // InternalChartDSL.g:821:5: {...}? => ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartLine", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:802:106: ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:803:6: ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) )
+            	    // InternalChartDSL.g:821:106: ( ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) ) )
+            	    // InternalChartDSL.g:822:6: ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getChartLineAccess().getUnorderedGroup_2(), 5);
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:806:6: ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:806:7: {...}? => ( (lv_fillArea_10_0= 'filled' ) )
+            	    // InternalChartDSL.g:825:9: ({...}? => ( (lv_fillArea_10_0= 'filled' ) ) )
+            	    // InternalChartDSL.g:825:10: {...}? => ( (lv_fillArea_10_0= 'filled' ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartLine", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:806:16: ( (lv_fillArea_10_0= 'filled' ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:807:1: (lv_fillArea_10_0= 'filled' )
+            	    // InternalChartDSL.g:825:19: ( (lv_fillArea_10_0= 'filled' ) )
+            	    // InternalChartDSL.g:825:20: (lv_fillArea_10_0= 'filled' )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:807:1: (lv_fillArea_10_0= 'filled' )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:808:3: lv_fillArea_10_0= 'filled'
+            	    // InternalChartDSL.g:825:20: (lv_fillArea_10_0= 'filled' )
+            	    // InternalChartDSL.g:826:10: lv_fillArea_10_0= 'filled'
             	    {
-            	    lv_fillArea_10_0=(Token)match(input,33,FOLLOW_33_in_ruleChartLine1970); if (state.failed) return current;
+            	    lv_fillArea_10_0=(Token)match(input,34,FOLLOW_15); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	              newLeafNode(lv_fillArea_10_0, grammarAccess.getChartLineAccess().getFillAreaFilledKeyword_2_5_0());
-            	          
+            	      										newLeafNode(lv_fillArea_10_0, grammarAccess.getChartLineAccess().getFillAreaFilledKeyword_2_5_0());
+            	      									
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getChartLineRule());
-            	      	        }
-            	             		setWithLastConsumed(current, "fillArea", true, "filled");
-            	      	    
+            	      										if (current==null) {
+            	      											current = createModelElement(grammarAccess.getChartLineRule());
+            	      										}
+            	      										setWithLastConsumed(current, "fillArea", true, "filled");
+            	      									
             	    }
 
             	    }
@@ -2283,14 +2428,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2299,7 +2446,7 @@
 
 
     // $ANTLR start "entryRuleChartPie"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:843:1: entryRuleChartPie returns [EObject current=null] : iv_ruleChartPie= ruleChartPie EOF ;
+    // InternalChartDSL.g:854:1: entryRuleChartPie returns [EObject current=null] : iv_ruleChartPie= ruleChartPie EOF ;
     public final EObject entryRuleChartPie() throws RecognitionException {
         EObject current = null;
 
@@ -2307,13 +2454,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:844:2: (iv_ruleChartPie= ruleChartPie EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:845:2: iv_ruleChartPie= ruleChartPie EOF
+            // InternalChartDSL.g:854:49: (iv_ruleChartPie= ruleChartPie EOF )
+            // InternalChartDSL.g:855:2: iv_ruleChartPie= ruleChartPie EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getChartPieRule()); 
             }
-            pushFollow(FOLLOW_ruleChartPie_in_entryRuleChartPie2059);
+            pushFollow(FOLLOW_1);
             iv_ruleChartPie=ruleChartPie();
 
             state._fsp--;
@@ -2321,16 +2468,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleChartPie; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartPie2069); 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;
@@ -2339,68 +2486,69 @@
 
 
     // $ANTLR start "ruleChartPie"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:852:1: ruleChartPie returns [EObject current=null] : ( () otherlv_1= 'pie' ( (lv_empty_2_0= 'empty' ) )? ) ;
+    // InternalChartDSL.g:861:1: ruleChartPie returns [EObject current=null] : ( () otherlv_1= 'pie' ( (lv_empty_2_0= 'empty' ) )? ) ;
     public final EObject ruleChartPie() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_1=null;
         Token lv_empty_2_0=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:855:28: ( ( () otherlv_1= 'pie' ( (lv_empty_2_0= 'empty' ) )? ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:856:1: ( () otherlv_1= 'pie' ( (lv_empty_2_0= 'empty' ) )? )
+            // InternalChartDSL.g:867:2: ( ( () otherlv_1= 'pie' ( (lv_empty_2_0= 'empty' ) )? ) )
+            // InternalChartDSL.g:868:2: ( () otherlv_1= 'pie' ( (lv_empty_2_0= 'empty' ) )? )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:856:1: ( () otherlv_1= 'pie' ( (lv_empty_2_0= 'empty' ) )? )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:856:2: () otherlv_1= 'pie' ( (lv_empty_2_0= 'empty' ) )?
+            // InternalChartDSL.g:868:2: ( () otherlv_1= 'pie' ( (lv_empty_2_0= 'empty' ) )? )
+            // InternalChartDSL.g:869:3: () otherlv_1= 'pie' ( (lv_empty_2_0= 'empty' ) )?
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:856:2: ()
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:857:5: 
+            // InternalChartDSL.g:869:3: ()
+            // InternalChartDSL.g:870:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getChartPieAccess().getChartPieAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getChartPieAccess().getChartPieAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,34,FOLLOW_34_in_ruleChartPie2115); if (state.failed) return current;
+            otherlv_1=(Token)match(input,35,FOLLOW_18); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getChartPieAccess().getPieKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getChartPieAccess().getPieKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:866:1: ( (lv_empty_2_0= 'empty' ) )?
+            // InternalChartDSL.g:880:3: ( (lv_empty_2_0= 'empty' ) )?
             int alt13=2;
             int LA13_0 = input.LA(1);
 
-            if ( (LA13_0==35) ) {
+            if ( (LA13_0==36) ) {
                 alt13=1;
             }
             switch (alt13) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:867:1: (lv_empty_2_0= 'empty' )
+                    // InternalChartDSL.g:881:4: (lv_empty_2_0= 'empty' )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:867:1: (lv_empty_2_0= 'empty' )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:868:3: lv_empty_2_0= 'empty'
+                    // InternalChartDSL.g:881:4: (lv_empty_2_0= 'empty' )
+                    // InternalChartDSL.g:882:5: lv_empty_2_0= 'empty'
                     {
-                    lv_empty_2_0=(Token)match(input,35,FOLLOW_35_in_ruleChartPie2133); if (state.failed) return current;
+                    lv_empty_2_0=(Token)match(input,36,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              newLeafNode(lv_empty_2_0, grammarAccess.getChartPieAccess().getEmptyEmptyKeyword_2_0());
-                          
+                      					newLeafNode(lv_empty_2_0, grammarAccess.getChartPieAccess().getEmptyEmptyKeyword_2_0());
+                      				
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getChartPieRule());
-                      	        }
-                             		setWithLastConsumed(current, "empty", true, "empty");
-                      	    
+                      					if (current==null) {
+                      						current = createModelElement(grammarAccess.getChartPieRule());
+                      					}
+                      					setWithLastConsumed(current, "empty", true, "empty");
+                      				
                     }
 
                     }
@@ -2418,14 +2566,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2434,7 +2584,7 @@
 
 
     // $ANTLR start "entryRuleChartDonut"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:889:1: entryRuleChartDonut returns [EObject current=null] : iv_ruleChartDonut= ruleChartDonut EOF ;
+    // InternalChartDSL.g:898:1: entryRuleChartDonut returns [EObject current=null] : iv_ruleChartDonut= ruleChartDonut EOF ;
     public final EObject entryRuleChartDonut() throws RecognitionException {
         EObject current = null;
 
@@ -2442,13 +2592,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:890:2: (iv_ruleChartDonut= ruleChartDonut EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:891:2: iv_ruleChartDonut= ruleChartDonut EOF
+            // InternalChartDSL.g:898:51: (iv_ruleChartDonut= ruleChartDonut EOF )
+            // InternalChartDSL.g:899:2: iv_ruleChartDonut= ruleChartDonut EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getChartDonutRule()); 
             }
-            pushFollow(FOLLOW_ruleChartDonut_in_entryRuleChartDonut2183);
+            pushFollow(FOLLOW_1);
             iv_ruleChartDonut=ruleChartDonut();
 
             state._fsp--;
@@ -2456,16 +2606,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleChartDonut; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartDonut2193); 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;
@@ -2474,39 +2624,40 @@
 
 
     // $ANTLR start "ruleChartDonut"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:898:1: ruleChartDonut returns [EObject current=null] : ( () otherlv_1= 'donut' ) ;
+    // InternalChartDSL.g:905:1: ruleChartDonut returns [EObject current=null] : ( () otherlv_1= 'donut' ) ;
     public final EObject ruleChartDonut() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_1=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:901:28: ( ( () otherlv_1= 'donut' ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:902:1: ( () otherlv_1= 'donut' )
+            // InternalChartDSL.g:911:2: ( ( () otherlv_1= 'donut' ) )
+            // InternalChartDSL.g:912:2: ( () otherlv_1= 'donut' )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:902:1: ( () otherlv_1= 'donut' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:902:2: () otherlv_1= 'donut'
+            // InternalChartDSL.g:912:2: ( () otherlv_1= 'donut' )
+            // InternalChartDSL.g:913:3: () otherlv_1= 'donut'
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:902:2: ()
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:903:5: 
+            // InternalChartDSL.g:913:3: ()
+            // InternalChartDSL.g:914:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getChartDonutAccess().getChartDonutAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getChartDonutAccess().getChartDonutAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,36,FOLLOW_36_in_ruleChartDonut2239); if (state.failed) return current;
+            otherlv_1=(Token)match(input,37,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getChartDonutAccess().getDonutKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getChartDonutAccess().getDonutKeyword_1());
+              		
             }
 
             }
@@ -2515,14 +2666,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2531,7 +2684,7 @@
 
 
     // $ANTLR start "entryRuleChartBubble"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:920:1: entryRuleChartBubble returns [EObject current=null] : iv_ruleChartBubble= ruleChartBubble EOF ;
+    // InternalChartDSL.g:928:1: entryRuleChartBubble returns [EObject current=null] : iv_ruleChartBubble= ruleChartBubble EOF ;
     public final EObject entryRuleChartBubble() throws RecognitionException {
         EObject current = null;
 
@@ -2539,13 +2692,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:921:2: (iv_ruleChartBubble= ruleChartBubble EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:922:2: iv_ruleChartBubble= ruleChartBubble EOF
+            // InternalChartDSL.g:928:52: (iv_ruleChartBubble= ruleChartBubble EOF )
+            // InternalChartDSL.g:929:2: iv_ruleChartBubble= ruleChartBubble EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getChartBubbleRule()); 
             }
-            pushFollow(FOLLOW_ruleChartBubble_in_entryRuleChartBubble2275);
+            pushFollow(FOLLOW_1);
             iv_ruleChartBubble=ruleChartBubble();
 
             state._fsp--;
@@ -2553,16 +2706,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleChartBubble; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartBubble2285); 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;
@@ -2571,7 +2724,7 @@
 
 
     // $ANTLR start "ruleChartBubble"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:929:1: ruleChartBubble returns [EObject current=null] : ( () otherlv_1= 'bubble' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) ) )? ) ;
+    // InternalChartDSL.g:935:1: ruleChartBubble returns [EObject current=null] : ( () otherlv_1= 'bubble' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) ) )? ) ;
     public final EObject ruleChartBubble() throws RecognitionException {
         EObject current = null;
 
@@ -2582,111 +2735,112 @@
         AntlrDatatypeRuleToken lv_multiplierValue_4_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:932:28: ( ( () otherlv_1= 'bubble' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) ) )? ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:933:1: ( () otherlv_1= 'bubble' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) ) )? )
+            // InternalChartDSL.g:941:2: ( ( () otherlv_1= 'bubble' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) ) )? ) )
+            // InternalChartDSL.g:942:2: ( () otherlv_1= 'bubble' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) ) )? )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:933:1: ( () otherlv_1= 'bubble' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) ) )? )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:933:2: () otherlv_1= 'bubble' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) ) )?
+            // InternalChartDSL.g:942:2: ( () otherlv_1= 'bubble' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) ) )? )
+            // InternalChartDSL.g:943:3: () otherlv_1= 'bubble' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) ) )?
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:933:2: ()
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:934:5: 
+            // InternalChartDSL.g:943:3: ()
+            // InternalChartDSL.g:944:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getChartBubbleAccess().getChartBubbleAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getChartBubbleAccess().getChartBubbleAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,37,FOLLOW_37_in_ruleChartBubble2331); if (state.failed) return current;
+            otherlv_1=(Token)match(input,38,FOLLOW_19); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getChartBubbleAccess().getBubbleKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getChartBubbleAccess().getBubbleKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:943:1: ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) ) )?
+            // InternalChartDSL.g:954:3: ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) ) )?
             int alt16=2;
             int LA16_0 = input.LA(1);
 
-            if ( ((LA16_0>=38 && LA16_0<=40)) ) {
+            if ( ((LA16_0>=39 && LA16_0<=41)) ) {
                 alt16=1;
             }
             switch (alt16) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:945:1: ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) )
+                    // InternalChartDSL.g:955:4: ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:945:1: ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:946:2: ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?)
+                    // InternalChartDSL.g:955:4: ( ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?) )
+                    // InternalChartDSL.g:956:5: ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?)
                     {
                     getUnorderedGroupHelper().enter(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2());
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:949:2: ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?)
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:950:3: ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?
+                    // InternalChartDSL.g:959:5: ( ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?)
+                    // InternalChartDSL.g:960:6: ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+ {...}?
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:950:3: ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+
+                    // InternalChartDSL.g:960:6: ( ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) ) )+
                     int cnt15=0;
                     loop15:
                     do {
                         int alt15=3;
                         int LA15_0 = input.LA(1);
 
-                        if ( LA15_0 ==38 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0) ) {
+                        if ( LA15_0 == 39 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0) ) {
                             alt15=1;
                         }
-                        else if ( LA15_0 >=39 && LA15_0<=40 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1) ) {
+                        else if ( LA15_0 >= 40 && LA15_0 <= 41 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1) ) {
                             alt15=2;
                         }
 
 
                         switch (alt15) {
                     	case 1 :
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:952:4: ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) )
+                    	    // InternalChartDSL.g:961:4: ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) )
                     	    {
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:952:4: ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) )
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:953:5: {...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) )
+                    	    // InternalChartDSL.g:961:4: ({...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) ) )
+                    	    // InternalChartDSL.g:962:5: {...}? => ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) )
                     	    {
                     	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0) ) {
                     	        if (state.backtracking>0) {state.failed=true; return current;}
                     	        throw new FailedPredicateException(input, "ruleChartBubble", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0)");
                     	    }
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:953:108: ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) )
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:954:6: ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) )
+                    	    // InternalChartDSL.g:962:108: ( ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) ) )
+                    	    // InternalChartDSL.g:963:6: ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) )
                     	    {
                     	    getUnorderedGroupHelper().select(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 0);
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:957:6: ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) )
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:957:7: {...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) )
+                    	    // InternalChartDSL.g:966:9: ({...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) ) )
+                    	    // InternalChartDSL.g:966:10: {...}? => ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) )
                     	    {
                     	    if ( !((true)) ) {
                     	        if (state.backtracking>0) {state.failed=true; return current;}
                     	        throw new FailedPredicateException(input, "ruleChartBubble", "true");
                     	    }
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:957:16: ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) )
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:957:17: ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) )
+                    	    // InternalChartDSL.g:966:19: ( ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) ) )
+                    	    // InternalChartDSL.g:966:20: ( (lv_multiplier_3_0= 'multiplier' ) ) ( (lv_multiplierValue_4_0= ruleNumber ) )
                     	    {
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:957:17: ( (lv_multiplier_3_0= 'multiplier' ) )
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:958:1: (lv_multiplier_3_0= 'multiplier' )
+                    	    // InternalChartDSL.g:966:20: ( (lv_multiplier_3_0= 'multiplier' ) )
+                    	    // InternalChartDSL.g:967:10: (lv_multiplier_3_0= 'multiplier' )
                     	    {
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:958:1: (lv_multiplier_3_0= 'multiplier' )
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:959:3: lv_multiplier_3_0= 'multiplier'
+                    	    // InternalChartDSL.g:967:10: (lv_multiplier_3_0= 'multiplier' )
+                    	    // InternalChartDSL.g:968:11: lv_multiplier_3_0= 'multiplier'
                     	    {
-                    	    lv_multiplier_3_0=(Token)match(input,38,FOLLOW_38_in_ruleChartBubble2395); if (state.failed) return current;
+                    	    lv_multiplier_3_0=(Token)match(input,39,FOLLOW_20); if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
-                    	              newLeafNode(lv_multiplier_3_0, grammarAccess.getChartBubbleAccess().getMultiplierMultiplierKeyword_2_0_0_0());
-                    	          
+                    	      											newLeafNode(lv_multiplier_3_0, grammarAccess.getChartBubbleAccess().getMultiplierMultiplierKeyword_2_0_0_0());
+                    	      										
                     	    }
                     	    if ( state.backtracking==0 ) {
 
-                    	      	        if (current==null) {
-                    	      	            current = createModelElement(grammarAccess.getChartBubbleRule());
-                    	      	        }
-                    	             		setWithLastConsumed(current, "multiplier", true, "multiplier");
-                    	      	    
+                    	      											if (current==null) {
+                    	      												current = createModelElement(grammarAccess.getChartBubbleRule());
+                    	      											}
+                    	      											setWithLastConsumed(current, "multiplier", true, "multiplier");
+                    	      										
                     	    }
 
                     	    }
@@ -2694,34 +2848,34 @@
 
                     	    }
 
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:972:2: ( (lv_multiplierValue_4_0= ruleNumber ) )
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:973:1: (lv_multiplierValue_4_0= ruleNumber )
+                    	    // InternalChartDSL.g:980:9: ( (lv_multiplierValue_4_0= ruleNumber ) )
+                    	    // InternalChartDSL.g:981:10: (lv_multiplierValue_4_0= ruleNumber )
                     	    {
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:973:1: (lv_multiplierValue_4_0= ruleNumber )
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:974:3: lv_multiplierValue_4_0= ruleNumber
+                    	    // InternalChartDSL.g:981:10: (lv_multiplierValue_4_0= ruleNumber )
+                    	    // InternalChartDSL.g:982:11: lv_multiplierValue_4_0= ruleNumber
                     	    {
                     	    if ( state.backtracking==0 ) {
-                    	       
-                    	      	        newCompositeNode(grammarAccess.getChartBubbleAccess().getMultiplierValueNumberParserRuleCall_2_0_1_0()); 
-                    	      	    
+
+                    	      											newCompositeNode(grammarAccess.getChartBubbleAccess().getMultiplierValueNumberParserRuleCall_2_0_1_0());
+                    	      										
                     	    }
-                    	    pushFollow(FOLLOW_ruleNumber_in_ruleChartBubble2429);
+                    	    pushFollow(FOLLOW_19);
                     	    lv_multiplierValue_4_0=ruleNumber();
 
                     	    state._fsp--;
                     	    if (state.failed) return current;
                     	    if ( state.backtracking==0 ) {
 
-                    	      	        if (current==null) {
-                    	      	            current = createModelElementForParent(grammarAccess.getChartBubbleRule());
-                    	      	        }
-                    	             		set(
-                    	             			current, 
-                    	             			"multiplierValue",
-                    	              		lv_multiplierValue_4_0, 
-                    	              		"Number");
-                    	      	        afterParserOrEnumRuleCall();
-                    	      	    
+                    	      											if (current==null) {
+                    	      												current = createModelElementForParent(grammarAccess.getChartBubbleRule());
+                    	      											}
+                    	      											set(
+                    	      												current,
+                    	      												"multiplierValue",
+                    	      												lv_multiplierValue_4_0,
+                    	      												"org.eclipse.xtext.xbase.Xbase.Number");
+                    	      											afterParserOrEnumRuleCall();
+                    	      										
                     	    }
 
                     	    }
@@ -2746,34 +2900,34 @@
                     	    }
                     	    break;
                     	case 2 :
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:997:4: ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) )
+                    	    // InternalChartDSL.g:1005:4: ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) )
                     	    {
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:997:4: ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) )
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:998:5: {...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) )
+                    	    // InternalChartDSL.g:1005:4: ({...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) ) )
+                    	    // InternalChartDSL.g:1006:5: {...}? => ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) )
                     	    {
                     	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1) ) {
                     	        if (state.backtracking>0) {state.failed=true; return current;}
                     	        throw new FailedPredicateException(input, "ruleChartBubble", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1)");
                     	    }
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:998:108: ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) )
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:999:6: ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) )
+                    	    // InternalChartDSL.g:1006:108: ( ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) ) )
+                    	    // InternalChartDSL.g:1007:6: ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) )
                     	    {
                     	    getUnorderedGroupHelper().select(grammarAccess.getChartBubbleAccess().getUnorderedGroup_2(), 1);
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1002:6: ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) )
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1002:7: {...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) )
+                    	    // InternalChartDSL.g:1010:9: ({...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) ) )
+                    	    // InternalChartDSL.g:1010:10: {...}? => ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) )
                     	    {
                     	    if ( !((true)) ) {
                     	        if (state.backtracking>0) {state.failed=true; return current;}
                     	        throw new FailedPredicateException(input, "ruleChartBubble", "true");
                     	    }
-                    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1002:16: ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) )
+                    	    // InternalChartDSL.g:1010:19: ( ( (lv_gradient_5_0= 'gradient' ) ) | ( (lv_transparent_6_0= 'transparent' ) ) )
                     	    int alt14=2;
                     	    int LA14_0 = input.LA(1);
 
-                    	    if ( (LA14_0==39) ) {
+                    	    if ( (LA14_0==40) ) {
                     	        alt14=1;
                     	    }
-                    	    else if ( (LA14_0==40) ) {
+                    	    else if ( (LA14_0==41) ) {
                     	        alt14=2;
                     	    }
                     	    else {
@@ -2785,27 +2939,27 @@
                     	    }
                     	    switch (alt14) {
                     	        case 1 :
-                    	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1002:17: ( (lv_gradient_5_0= 'gradient' ) )
+                    	            // InternalChartDSL.g:1010:20: ( (lv_gradient_5_0= 'gradient' ) )
                     	            {
-                    	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1002:17: ( (lv_gradient_5_0= 'gradient' ) )
-                    	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1003:1: (lv_gradient_5_0= 'gradient' )
+                    	            // InternalChartDSL.g:1010:20: ( (lv_gradient_5_0= 'gradient' ) )
+                    	            // InternalChartDSL.g:1011:10: (lv_gradient_5_0= 'gradient' )
                     	            {
-                    	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1003:1: (lv_gradient_5_0= 'gradient' )
-                    	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1004:3: lv_gradient_5_0= 'gradient'
+                    	            // InternalChartDSL.g:1011:10: (lv_gradient_5_0= 'gradient' )
+                    	            // InternalChartDSL.g:1012:11: lv_gradient_5_0= 'gradient'
                     	            {
-                    	            lv_gradient_5_0=(Token)match(input,39,FOLLOW_39_in_ruleChartBubble2503); if (state.failed) return current;
+                    	            lv_gradient_5_0=(Token)match(input,40,FOLLOW_19); if (state.failed) return current;
                     	            if ( state.backtracking==0 ) {
 
-                    	                      newLeafNode(lv_gradient_5_0, grammarAccess.getChartBubbleAccess().getGradientGradientKeyword_2_1_0_0());
-                    	                  
+                    	              											newLeafNode(lv_gradient_5_0, grammarAccess.getChartBubbleAccess().getGradientGradientKeyword_2_1_0_0());
+                    	              										
                     	            }
                     	            if ( state.backtracking==0 ) {
 
-                    	              	        if (current==null) {
-                    	              	            current = createModelElement(grammarAccess.getChartBubbleRule());
-                    	              	        }
-                    	                     		setWithLastConsumed(current, "gradient", true, "gradient");
-                    	              	    
+                    	              											if (current==null) {
+                    	              												current = createModelElement(grammarAccess.getChartBubbleRule());
+                    	              											}
+                    	              											setWithLastConsumed(current, "gradient", true, "gradient");
+                    	              										
                     	            }
 
                     	            }
@@ -2817,27 +2971,27 @@
                     	            }
                     	            break;
                     	        case 2 :
-                    	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1018:6: ( (lv_transparent_6_0= 'transparent' ) )
+                    	            // InternalChartDSL.g:1025:9: ( (lv_transparent_6_0= 'transparent' ) )
                     	            {
-                    	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1018:6: ( (lv_transparent_6_0= 'transparent' ) )
-                    	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1019:1: (lv_transparent_6_0= 'transparent' )
+                    	            // InternalChartDSL.g:1025:9: ( (lv_transparent_6_0= 'transparent' ) )
+                    	            // InternalChartDSL.g:1026:10: (lv_transparent_6_0= 'transparent' )
                     	            {
-                    	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1019:1: (lv_transparent_6_0= 'transparent' )
-                    	            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1020:3: lv_transparent_6_0= 'transparent'
+                    	            // InternalChartDSL.g:1026:10: (lv_transparent_6_0= 'transparent' )
+                    	            // InternalChartDSL.g:1027:11: lv_transparent_6_0= 'transparent'
                     	            {
-                    	            lv_transparent_6_0=(Token)match(input,40,FOLLOW_40_in_ruleChartBubble2540); if (state.failed) return current;
+                    	            lv_transparent_6_0=(Token)match(input,41,FOLLOW_19); if (state.failed) return current;
                     	            if ( state.backtracking==0 ) {
 
-                    	                      newLeafNode(lv_transparent_6_0, grammarAccess.getChartBubbleAccess().getTransparentTransparentKeyword_2_1_1_0());
-                    	                  
+                    	              											newLeafNode(lv_transparent_6_0, grammarAccess.getChartBubbleAccess().getTransparentTransparentKeyword_2_1_1_0());
+                    	              										
                     	            }
                     	            if ( state.backtracking==0 ) {
 
-                    	              	        if (current==null) {
-                    	              	            current = createModelElement(grammarAccess.getChartBubbleRule());
-                    	              	        }
-                    	                     		setWithLastConsumed(current, "transparent", true, "transparent");
-                    	              	    
+                    	              											if (current==null) {
+                    	              												current = createModelElement(grammarAccess.getChartBubbleRule());
+                    	              											}
+                    	              											setWithLastConsumed(current, "transparent", true, "transparent");
+                    	              										
                     	            }
 
                     	            }
@@ -2899,14 +3053,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -2915,7 +3071,7 @@
 
 
     // $ANTLR start "entryRuleChartGauge"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1056:1: entryRuleChartGauge returns [EObject current=null] : iv_ruleChartGauge= ruleChartGauge EOF ;
+    // InternalChartDSL.g:1057:1: entryRuleChartGauge returns [EObject current=null] : iv_ruleChartGauge= ruleChartGauge EOF ;
     public final EObject entryRuleChartGauge() throws RecognitionException {
         EObject current = null;
 
@@ -2923,13 +3079,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1057:2: (iv_ruleChartGauge= ruleChartGauge EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1058:2: iv_ruleChartGauge= ruleChartGauge EOF
+            // InternalChartDSL.g:1057:51: (iv_ruleChartGauge= ruleChartGauge EOF )
+            // InternalChartDSL.g:1058:2: iv_ruleChartGauge= ruleChartGauge EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getChartGaugeRule()); 
             }
-            pushFollow(FOLLOW_ruleChartGauge_in_entryRuleChartGauge2637);
+            pushFollow(FOLLOW_1);
             iv_ruleChartGauge=ruleChartGauge();
 
             state._fsp--;
@@ -2937,16 +3093,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleChartGauge; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartGauge2647); 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;
@@ -2955,7 +3111,7 @@
 
 
     // $ANTLR start "ruleChartGauge"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1065:1: ruleChartGauge returns [EObject current=null] : ( () otherlv_1= 'gauge' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) ) ) ) ;
+    // InternalChartDSL.g:1064:1: ruleChartGauge returns [EObject current=null] : ( () otherlv_1= 'gauge' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) ) ) ) ;
     public final EObject ruleChartGauge() throws RecognitionException {
         EObject current = null;
 
@@ -2973,105 +3129,106 @@
         EObject lv_intervals_12_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1068:28: ( ( () otherlv_1= 'gauge' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) ) ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1069:1: ( () otherlv_1= 'gauge' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) ) ) )
+            // InternalChartDSL.g:1070:2: ( ( () otherlv_1= 'gauge' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) ) ) ) )
+            // InternalChartDSL.g:1071:2: ( () otherlv_1= 'gauge' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) ) ) )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1069:1: ( () otherlv_1= 'gauge' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1069:2: () otherlv_1= 'gauge' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) ) )
+            // InternalChartDSL.g:1071:2: ( () otherlv_1= 'gauge' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) ) ) )
+            // InternalChartDSL.g:1072:3: () otherlv_1= 'gauge' ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) ) )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1069:2: ()
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1070:5: 
+            // InternalChartDSL.g:1072:3: ()
+            // InternalChartDSL.g:1073:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getChartGaugeAccess().getChartGaugeAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getChartGaugeAccess().getChartGaugeAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,41,FOLLOW_41_in_ruleChartGauge2693); if (state.failed) return current;
+            otherlv_1=(Token)match(input,42,FOLLOW_21); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getChartGaugeAccess().getGaugeKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getChartGaugeAccess().getGaugeKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1079:1: ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1081:1: ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) )
+            // InternalChartDSL.g:1083:3: ( ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) ) )
+            // InternalChartDSL.g:1084:4: ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1081:1: ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1082:2: ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* )
+            // InternalChartDSL.g:1084:4: ( ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* ) )
+            // InternalChartDSL.g:1085:5: ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* )
             {
             getUnorderedGroupHelper().enter(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2());
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1085:2: ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1086:3: ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )*
+            // InternalChartDSL.g:1088:5: ( ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )* )
+            // InternalChartDSL.g:1089:6: ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )*
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1086:3: ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )*
+            // InternalChartDSL.g:1089:6: ( ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) ) | ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) ) )*
             loop18:
             do {
                 int alt18=4;
                 int LA18_0 = input.LA(1);
 
-                if ( LA18_0 ==42 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0) ) {
+                if ( LA18_0 == 43 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0) ) {
                     alt18=1;
                 }
-                else if ( LA18_0 ==43 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1) ) {
+                else if ( LA18_0 == 44 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1) ) {
                     alt18=2;
                 }
-                else if ( LA18_0 ==46 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2) ) {
+                else if ( LA18_0 == 47 && getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2) ) {
                     alt18=3;
                 }
 
 
                 switch (alt18) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1088:4: ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalChartDSL.g:1090:4: ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1088:4: ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1089:5: {...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) )
+            	    // InternalChartDSL.g:1090:4: ({...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) ) )
+            	    // InternalChartDSL.g:1091:5: {...}? => ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartGauge", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1089:107: ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1090:6: ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) )
+            	    // InternalChartDSL.g:1091:107: ( ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) ) )
+            	    // InternalChartDSL.g:1092:6: ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 0);
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1093:6: ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1093:7: {...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) )
+            	    // InternalChartDSL.g:1095:9: ({...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) ) )
+            	    // InternalChartDSL.g:1095:10: {...}? => ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartGauge", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1093:16: ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1093:17: ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) )
+            	    // InternalChartDSL.g:1095:19: ( ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) ) )
+            	    // InternalChartDSL.g:1095:20: ( (lv_labeled_3_0= 'label' ) ) ( (lv_labelValue_4_0= RULE_STRING ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1093:17: ( (lv_labeled_3_0= 'label' ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1094:1: (lv_labeled_3_0= 'label' )
+            	    // InternalChartDSL.g:1095:20: ( (lv_labeled_3_0= 'label' ) )
+            	    // InternalChartDSL.g:1096:10: (lv_labeled_3_0= 'label' )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1094:1: (lv_labeled_3_0= 'label' )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1095:3: lv_labeled_3_0= 'label'
+            	    // InternalChartDSL.g:1096:10: (lv_labeled_3_0= 'label' )
+            	    // InternalChartDSL.g:1097:11: lv_labeled_3_0= 'label'
             	    {
-            	    lv_labeled_3_0=(Token)match(input,42,FOLLOW_42_in_ruleChartGauge2757); if (state.failed) return current;
+            	    lv_labeled_3_0=(Token)match(input,43,FOLLOW_8); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	              newLeafNode(lv_labeled_3_0, grammarAccess.getChartGaugeAccess().getLabeledLabelKeyword_2_0_0_0());
-            	          
+            	      											newLeafNode(lv_labeled_3_0, grammarAccess.getChartGaugeAccess().getLabeledLabelKeyword_2_0_0_0());
+            	      										
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getChartGaugeRule());
-            	      	        }
-            	             		setWithLastConsumed(current, "labeled", true, "label");
-            	      	    
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getChartGaugeRule());
+            	      											}
+            	      											setWithLastConsumed(current, "labeled", true, "label");
+            	      										
             	    }
 
             	    }
@@ -3079,29 +3236,29 @@
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1108:2: ( (lv_labelValue_4_0= RULE_STRING ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1109:1: (lv_labelValue_4_0= RULE_STRING )
+            	    // InternalChartDSL.g:1109:9: ( (lv_labelValue_4_0= RULE_STRING ) )
+            	    // InternalChartDSL.g:1110:10: (lv_labelValue_4_0= RULE_STRING )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1109:1: (lv_labelValue_4_0= RULE_STRING )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1110:3: lv_labelValue_4_0= RULE_STRING
+            	    // InternalChartDSL.g:1110:10: (lv_labelValue_4_0= RULE_STRING )
+            	    // InternalChartDSL.g:1111:11: lv_labelValue_4_0= RULE_STRING
             	    {
-            	    lv_labelValue_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleChartGauge2787); if (state.failed) return current;
+            	    lv_labelValue_4_0=(Token)match(input,RULE_STRING,FOLLOW_21); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      			newLeafNode(lv_labelValue_4_0, grammarAccess.getChartGaugeAccess().getLabelValueSTRINGTerminalRuleCall_2_0_1_0()); 
-            	      		
+            	      											newLeafNode(lv_labelValue_4_0, grammarAccess.getChartGaugeAccess().getLabelValueSTRINGTerminalRuleCall_2_0_1_0());
+            	      										
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getChartGaugeRule());
-            	      	        }
-            	             		setWithLastConsumed(
-            	             			current, 
-            	             			"labelValue",
-            	              		lv_labelValue_4_0, 
-            	              		"STRING");
-            	      	    
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getChartGaugeRule());
+            	      											}
+            	      											setWithLastConsumed(
+            	      												current,
+            	      												"labelValue",
+            	      												lv_labelValue_4_0,
+            	      												"org.eclipse.xtext.xbase.Xtype.STRING");
+            	      										
             	    }
 
             	    }
@@ -3126,48 +3283,48 @@
             	    }
             	    break;
             	case 2 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1133:4: ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) )
+            	    // InternalChartDSL.g:1133:4: ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1133:4: ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1134:5: {...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) )
+            	    // InternalChartDSL.g:1133:4: ({...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) ) )
+            	    // InternalChartDSL.g:1134:5: {...}? => ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartGauge", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1134:107: ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1135:6: ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) )
+            	    // InternalChartDSL.g:1134:107: ( ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) ) )
+            	    // InternalChartDSL.g:1135:6: ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 1);
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1138:6: ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1138:7: {...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) )
+            	    // InternalChartDSL.g:1138:9: ({...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) ) )
+            	    // InternalChartDSL.g:1138:10: {...}? => ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartGauge", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1138:16: ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1138:17: ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) )
+            	    // InternalChartDSL.g:1138:19: ( ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) ) )
+            	    // InternalChartDSL.g:1138:20: ( (lv_hasTicks_5_0= 'hasTicks' ) ) otherlv_6= 'minimum' ( (lv_minValue_7_0= RULE_INT ) ) otherlv_8= 'maximum' ( (lv_maxValue_9_0= RULE_INT ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1138:17: ( (lv_hasTicks_5_0= 'hasTicks' ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1139:1: (lv_hasTicks_5_0= 'hasTicks' )
+            	    // InternalChartDSL.g:1138:20: ( (lv_hasTicks_5_0= 'hasTicks' ) )
+            	    // InternalChartDSL.g:1139:10: (lv_hasTicks_5_0= 'hasTicks' )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1139:1: (lv_hasTicks_5_0= 'hasTicks' )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1140:3: lv_hasTicks_5_0= 'hasTicks'
+            	    // InternalChartDSL.g:1139:10: (lv_hasTicks_5_0= 'hasTicks' )
+            	    // InternalChartDSL.g:1140:11: lv_hasTicks_5_0= 'hasTicks'
             	    {
-            	    lv_hasTicks_5_0=(Token)match(input,43,FOLLOW_43_in_ruleChartGauge2866); if (state.failed) return current;
+            	    lv_hasTicks_5_0=(Token)match(input,44,FOLLOW_22); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	              newLeafNode(lv_hasTicks_5_0, grammarAccess.getChartGaugeAccess().getHasTicksHasTicksKeyword_2_1_0_0());
-            	          
+            	      											newLeafNode(lv_hasTicks_5_0, grammarAccess.getChartGaugeAccess().getHasTicksHasTicksKeyword_2_1_0_0());
+            	      										
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getChartGaugeRule());
-            	      	        }
-            	             		setWithLastConsumed(current, "hasTicks", true, "hasTicks");
-            	      	    
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getChartGaugeRule());
+            	      											}
+            	      											setWithLastConsumed(current, "hasTicks", true, "hasTicks");
+            	      										
             	    }
 
             	    }
@@ -3175,35 +3332,35 @@
 
             	    }
 
-            	    otherlv_6=(Token)match(input,44,FOLLOW_44_in_ruleChartGauge2891); if (state.failed) return current;
+            	    otherlv_6=(Token)match(input,45,FOLLOW_12); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	          	newLeafNode(otherlv_6, grammarAccess.getChartGaugeAccess().getMinimumKeyword_2_1_1());
-            	          
+            	      									newLeafNode(otherlv_6, grammarAccess.getChartGaugeAccess().getMinimumKeyword_2_1_1());
+            	      								
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1157:1: ( (lv_minValue_7_0= RULE_INT ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1158:1: (lv_minValue_7_0= RULE_INT )
+            	    // InternalChartDSL.g:1156:9: ( (lv_minValue_7_0= RULE_INT ) )
+            	    // InternalChartDSL.g:1157:10: (lv_minValue_7_0= RULE_INT )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1158:1: (lv_minValue_7_0= RULE_INT )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1159:3: lv_minValue_7_0= RULE_INT
+            	    // InternalChartDSL.g:1157:10: (lv_minValue_7_0= RULE_INT )
+            	    // InternalChartDSL.g:1158:11: lv_minValue_7_0= RULE_INT
             	    {
-            	    lv_minValue_7_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleChartGauge2908); if (state.failed) return current;
+            	    lv_minValue_7_0=(Token)match(input,RULE_INT,FOLLOW_23); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      			newLeafNode(lv_minValue_7_0, grammarAccess.getChartGaugeAccess().getMinValueINTTerminalRuleCall_2_1_2_0()); 
-            	      		
+            	      											newLeafNode(lv_minValue_7_0, grammarAccess.getChartGaugeAccess().getMinValueINTTerminalRuleCall_2_1_2_0());
+            	      										
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getChartGaugeRule());
-            	      	        }
-            	             		setWithLastConsumed(
-            	             			current, 
-            	             			"minValue",
-            	              		lv_minValue_7_0, 
-            	              		"INT");
-            	      	    
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getChartGaugeRule());
+            	      											}
+            	      											setWithLastConsumed(
+            	      												current,
+            	      												"minValue",
+            	      												lv_minValue_7_0,
+            	      												"org.eclipse.xtext.xbase.Xbase.INT");
+            	      										
             	    }
 
             	    }
@@ -3211,35 +3368,35 @@
 
             	    }
 
-            	    otherlv_8=(Token)match(input,45,FOLLOW_45_in_ruleChartGauge2925); if (state.failed) return current;
+            	    otherlv_8=(Token)match(input,46,FOLLOW_12); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	          	newLeafNode(otherlv_8, grammarAccess.getChartGaugeAccess().getMaximumKeyword_2_1_3());
-            	          
+            	      									newLeafNode(otherlv_8, grammarAccess.getChartGaugeAccess().getMaximumKeyword_2_1_3());
+            	      								
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1179:1: ( (lv_maxValue_9_0= RULE_INT ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1180:1: (lv_maxValue_9_0= RULE_INT )
+            	    // InternalChartDSL.g:1178:9: ( (lv_maxValue_9_0= RULE_INT ) )
+            	    // InternalChartDSL.g:1179:10: (lv_maxValue_9_0= RULE_INT )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1180:1: (lv_maxValue_9_0= RULE_INT )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1181:3: lv_maxValue_9_0= RULE_INT
+            	    // InternalChartDSL.g:1179:10: (lv_maxValue_9_0= RULE_INT )
+            	    // InternalChartDSL.g:1180:11: lv_maxValue_9_0= RULE_INT
             	    {
-            	    lv_maxValue_9_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleChartGauge2942); if (state.failed) return current;
+            	    lv_maxValue_9_0=(Token)match(input,RULE_INT,FOLLOW_21); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      			newLeafNode(lv_maxValue_9_0, grammarAccess.getChartGaugeAccess().getMaxValueINTTerminalRuleCall_2_1_4_0()); 
-            	      		
+            	      											newLeafNode(lv_maxValue_9_0, grammarAccess.getChartGaugeAccess().getMaxValueINTTerminalRuleCall_2_1_4_0());
+            	      										
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getChartGaugeRule());
-            	      	        }
-            	             		setWithLastConsumed(
-            	             			current, 
-            	             			"maxValue",
-            	              		lv_maxValue_9_0, 
-            	              		"INT");
-            	      	    
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getChartGaugeRule());
+            	      											}
+            	      											setWithLastConsumed(
+            	      												current,
+            	      												"maxValue",
+            	      												lv_maxValue_9_0,
+            	      												"org.eclipse.xtext.xbase.Xbase.INT");
+            	      										
             	    }
 
             	    }
@@ -3264,48 +3421,48 @@
             	    }
             	    break;
             	case 3 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1204:4: ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) )
+            	    // InternalChartDSL.g:1202:4: ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1204:4: ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1205:5: {...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) )
+            	    // InternalChartDSL.g:1202:4: ({...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) ) )
+            	    // InternalChartDSL.g:1203:5: {...}? => ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) )
             	    {
             	    if ( ! getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartGauge", "getUnorderedGroupHelper().canSelect(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2)");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1205:107: ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1206:6: ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) )
+            	    // InternalChartDSL.g:1203:107: ( ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) ) )
+            	    // InternalChartDSL.g:1204:6: ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) )
             	    {
             	    getUnorderedGroupHelper().select(grammarAccess.getChartGaugeAccess().getUnorderedGroup_2(), 2);
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1209:6: ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1209:7: {...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' )
+            	    // InternalChartDSL.g:1207:9: ({...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' ) )
+            	    // InternalChartDSL.g:1207:10: {...}? => ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' )
             	    {
             	    if ( !((true)) ) {
             	        if (state.backtracking>0) {state.failed=true; return current;}
             	        throw new FailedPredicateException(input, "ruleChartGauge", "true");
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1209:16: ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1209:17: ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}'
+            	    // InternalChartDSL.g:1207:19: ( ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}' )
+            	    // InternalChartDSL.g:1207:20: ( (lv_hasIntervals_10_0= 'intervals' ) ) otherlv_11= '{' ( (lv_intervals_12_0= ruleChartInterval ) )* otherlv_13= '}'
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1209:17: ( (lv_hasIntervals_10_0= 'intervals' ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1210:1: (lv_hasIntervals_10_0= 'intervals' )
+            	    // InternalChartDSL.g:1207:20: ( (lv_hasIntervals_10_0= 'intervals' ) )
+            	    // InternalChartDSL.g:1208:10: (lv_hasIntervals_10_0= 'intervals' )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1210:1: (lv_hasIntervals_10_0= 'intervals' )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1211:3: lv_hasIntervals_10_0= 'intervals'
+            	    // InternalChartDSL.g:1208:10: (lv_hasIntervals_10_0= 'intervals' )
+            	    // InternalChartDSL.g:1209:11: lv_hasIntervals_10_0= 'intervals'
             	    {
-            	    lv_hasIntervals_10_0=(Token)match(input,46,FOLLOW_46_in_ruleChartGauge3021); if (state.failed) return current;
+            	    lv_hasIntervals_10_0=(Token)match(input,47,FOLLOW_24); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	              newLeafNode(lv_hasIntervals_10_0, grammarAccess.getChartGaugeAccess().getHasIntervalsIntervalsKeyword_2_2_0_0());
-            	          
+            	      											newLeafNode(lv_hasIntervals_10_0, grammarAccess.getChartGaugeAccess().getHasIntervalsIntervalsKeyword_2_2_0_0());
+            	      										
             	    }
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getChartGaugeRule());
-            	      	        }
-            	             		setWithLastConsumed(current, "hasIntervals", true, "intervals");
-            	      	    
+            	      											if (current==null) {
+            	      												current = createModelElement(grammarAccess.getChartGaugeRule());
+            	      											}
+            	      											setWithLastConsumed(current, "hasIntervals", true, "intervals");
+            	      										
             	    }
 
             	    }
@@ -3313,52 +3470,52 @@
 
             	    }
 
-            	    otherlv_11=(Token)match(input,14,FOLLOW_14_in_ruleChartGauge3046); if (state.failed) return current;
+            	    otherlv_11=(Token)match(input,14,FOLLOW_25); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	          	newLeafNode(otherlv_11, grammarAccess.getChartGaugeAccess().getLeftCurlyBracketKeyword_2_2_1());
-            	          
+            	      									newLeafNode(otherlv_11, grammarAccess.getChartGaugeAccess().getLeftCurlyBracketKeyword_2_2_1());
+            	      								
             	    }
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1228:1: ( (lv_intervals_12_0= ruleChartInterval ) )*
+            	    // InternalChartDSL.g:1225:9: ( (lv_intervals_12_0= ruleChartInterval ) )*
             	    loop17:
             	    do {
             	        int alt17=2;
             	        int LA17_0 = input.LA(1);
 
-            	        if ( (LA17_0==50) ) {
+            	        if ( (LA17_0==51) ) {
             	            alt17=1;
             	        }
 
 
             	        switch (alt17) {
             	    	case 1 :
-            	    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1229:1: (lv_intervals_12_0= ruleChartInterval )
+            	    	    // InternalChartDSL.g:1226:10: (lv_intervals_12_0= ruleChartInterval )
             	    	    {
-            	    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1229:1: (lv_intervals_12_0= ruleChartInterval )
-            	    	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1230:3: lv_intervals_12_0= ruleChartInterval
+            	    	    // InternalChartDSL.g:1226:10: (lv_intervals_12_0= ruleChartInterval )
+            	    	    // InternalChartDSL.g:1227:11: lv_intervals_12_0= ruleChartInterval
             	    	    {
             	    	    if ( state.backtracking==0 ) {
-            	    	       
-            	    	      	        newCompositeNode(grammarAccess.getChartGaugeAccess().getIntervalsChartIntervalParserRuleCall_2_2_2_0()); 
-            	    	      	    
+
+            	    	      											newCompositeNode(grammarAccess.getChartGaugeAccess().getIntervalsChartIntervalParserRuleCall_2_2_2_0());
+            	    	      										
             	    	    }
-            	    	    pushFollow(FOLLOW_ruleChartInterval_in_ruleChartGauge3067);
+            	    	    pushFollow(FOLLOW_25);
             	    	    lv_intervals_12_0=ruleChartInterval();
 
             	    	    state._fsp--;
             	    	    if (state.failed) return current;
             	    	    if ( state.backtracking==0 ) {
 
-            	    	      	        if (current==null) {
-            	    	      	            current = createModelElementForParent(grammarAccess.getChartGaugeRule());
-            	    	      	        }
-            	    	             		add(
-            	    	             			current, 
-            	    	             			"intervals",
-            	    	              		lv_intervals_12_0, 
-            	    	              		"ChartInterval");
-            	    	      	        afterParserOrEnumRuleCall();
-            	    	      	    
+            	    	      											if (current==null) {
+            	    	      												current = createModelElementForParent(grammarAccess.getChartGaugeRule());
+            	    	      											}
+            	    	      											add(
+            	    	      												current,
+            	    	      												"intervals",
+            	    	      												lv_intervals_12_0,
+            	    	      												"org.eclipse.osbp.xtext.chart.ChartDSL.ChartInterval");
+            	    	      											afterParserOrEnumRuleCall();
+            	    	      										
             	    	    }
 
             	    	    }
@@ -3372,11 +3529,11 @@
             	        }
             	    } while (true);
 
-            	    otherlv_13=(Token)match(input,15,FOLLOW_15_in_ruleChartGauge3080); if (state.failed) return current;
+            	    otherlv_13=(Token)match(input,15,FOLLOW_21); if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	          	newLeafNode(otherlv_13, grammarAccess.getChartGaugeAccess().getRightCurlyBracketKeyword_2_2_3());
-            	          
+            	      									newLeafNode(otherlv_13, grammarAccess.getChartGaugeAccess().getRightCurlyBracketKeyword_2_2_3());
+            	      								
             	    }
 
             	    }
@@ -3417,14 +3574,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -3433,7 +3592,7 @@
 
 
     // $ANTLR start "entryRuleChartTree"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1272:1: entryRuleChartTree returns [EObject current=null] : iv_ruleChartTree= ruleChartTree EOF ;
+    // InternalChartDSL.g:1265:1: entryRuleChartTree returns [EObject current=null] : iv_ruleChartTree= ruleChartTree EOF ;
     public final EObject entryRuleChartTree() throws RecognitionException {
         EObject current = null;
 
@@ -3441,13 +3600,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1273:2: (iv_ruleChartTree= ruleChartTree EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1274:2: iv_ruleChartTree= ruleChartTree EOF
+            // InternalChartDSL.g:1265:50: (iv_ruleChartTree= ruleChartTree EOF )
+            // InternalChartDSL.g:1266:2: iv_ruleChartTree= ruleChartTree EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getChartTreeRule()); 
             }
-            pushFollow(FOLLOW_ruleChartTree_in_entryRuleChartTree3157);
+            pushFollow(FOLLOW_1);
             iv_ruleChartTree=ruleChartTree();
 
             state._fsp--;
@@ -3455,16 +3614,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleChartTree; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartTree3167); 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;
@@ -3473,7 +3632,7 @@
 
 
     // $ANTLR start "ruleChartTree"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1281:1: ruleChartTree returns [EObject current=null] : ( () otherlv_1= 'tree' ( ( (lv_map_2_0= 'map' ) ) | ( (lv_collapsible_3_0= 'collapsible' ) ) ) ) ;
+    // InternalChartDSL.g:1272:1: ruleChartTree returns [EObject current=null] : ( () otherlv_1= 'tree' ( ( (lv_map_2_0= 'map' ) ) | ( (lv_collapsible_3_0= 'collapsible' ) ) ) ) ;
     public final EObject ruleChartTree() throws RecognitionException {
         EObject current = null;
 
@@ -3481,42 +3640,43 @@
         Token lv_map_2_0=null;
         Token lv_collapsible_3_0=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1284:28: ( ( () otherlv_1= 'tree' ( ( (lv_map_2_0= 'map' ) ) | ( (lv_collapsible_3_0= 'collapsible' ) ) ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1285:1: ( () otherlv_1= 'tree' ( ( (lv_map_2_0= 'map' ) ) | ( (lv_collapsible_3_0= 'collapsible' ) ) ) )
+            // InternalChartDSL.g:1278:2: ( ( () otherlv_1= 'tree' ( ( (lv_map_2_0= 'map' ) ) | ( (lv_collapsible_3_0= 'collapsible' ) ) ) ) )
+            // InternalChartDSL.g:1279:2: ( () otherlv_1= 'tree' ( ( (lv_map_2_0= 'map' ) ) | ( (lv_collapsible_3_0= 'collapsible' ) ) ) )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1285:1: ( () otherlv_1= 'tree' ( ( (lv_map_2_0= 'map' ) ) | ( (lv_collapsible_3_0= 'collapsible' ) ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1285:2: () otherlv_1= 'tree' ( ( (lv_map_2_0= 'map' ) ) | ( (lv_collapsible_3_0= 'collapsible' ) ) )
+            // InternalChartDSL.g:1279:2: ( () otherlv_1= 'tree' ( ( (lv_map_2_0= 'map' ) ) | ( (lv_collapsible_3_0= 'collapsible' ) ) ) )
+            // InternalChartDSL.g:1280:3: () otherlv_1= 'tree' ( ( (lv_map_2_0= 'map' ) ) | ( (lv_collapsible_3_0= 'collapsible' ) ) )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1285:2: ()
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1286:5: 
+            // InternalChartDSL.g:1280:3: ()
+            // InternalChartDSL.g:1281:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getChartTreeAccess().getChartTreeAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getChartTreeAccess().getChartTreeAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,47,FOLLOW_47_in_ruleChartTree3213); if (state.failed) return current;
+            otherlv_1=(Token)match(input,48,FOLLOW_26); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getChartTreeAccess().getTreeKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getChartTreeAccess().getTreeKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1295:1: ( ( (lv_map_2_0= 'map' ) ) | ( (lv_collapsible_3_0= 'collapsible' ) ) )
+            // InternalChartDSL.g:1291:3: ( ( (lv_map_2_0= 'map' ) ) | ( (lv_collapsible_3_0= 'collapsible' ) ) )
             int alt19=2;
             int LA19_0 = input.LA(1);
 
-            if ( (LA19_0==48) ) {
+            if ( (LA19_0==49) ) {
                 alt19=1;
             }
-            else if ( (LA19_0==49) ) {
+            else if ( (LA19_0==50) ) {
                 alt19=2;
             }
             else {
@@ -3528,27 +3688,27 @@
             }
             switch (alt19) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1295:2: ( (lv_map_2_0= 'map' ) )
+                    // InternalChartDSL.g:1292:4: ( (lv_map_2_0= 'map' ) )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1295:2: ( (lv_map_2_0= 'map' ) )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1296:1: (lv_map_2_0= 'map' )
+                    // InternalChartDSL.g:1292:4: ( (lv_map_2_0= 'map' ) )
+                    // InternalChartDSL.g:1293:5: (lv_map_2_0= 'map' )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1296:1: (lv_map_2_0= 'map' )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1297:3: lv_map_2_0= 'map'
+                    // InternalChartDSL.g:1293:5: (lv_map_2_0= 'map' )
+                    // InternalChartDSL.g:1294:6: lv_map_2_0= 'map'
                     {
-                    lv_map_2_0=(Token)match(input,48,FOLLOW_48_in_ruleChartTree3232); if (state.failed) return current;
+                    lv_map_2_0=(Token)match(input,49,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              newLeafNode(lv_map_2_0, grammarAccess.getChartTreeAccess().getMapMapKeyword_2_0_0());
-                          
+                      						newLeafNode(lv_map_2_0, grammarAccess.getChartTreeAccess().getMapMapKeyword_2_0_0());
+                      					
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getChartTreeRule());
-                      	        }
-                             		setWithLastConsumed(current, "map", true, "map");
-                      	    
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getChartTreeRule());
+                      						}
+                      						setWithLastConsumed(current, "map", true, "map");
+                      					
                     }
 
                     }
@@ -3560,27 +3720,27 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1311:6: ( (lv_collapsible_3_0= 'collapsible' ) )
+                    // InternalChartDSL.g:1307:4: ( (lv_collapsible_3_0= 'collapsible' ) )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1311:6: ( (lv_collapsible_3_0= 'collapsible' ) )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1312:1: (lv_collapsible_3_0= 'collapsible' )
+                    // InternalChartDSL.g:1307:4: ( (lv_collapsible_3_0= 'collapsible' ) )
+                    // InternalChartDSL.g:1308:5: (lv_collapsible_3_0= 'collapsible' )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1312:1: (lv_collapsible_3_0= 'collapsible' )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1313:3: lv_collapsible_3_0= 'collapsible'
+                    // InternalChartDSL.g:1308:5: (lv_collapsible_3_0= 'collapsible' )
+                    // InternalChartDSL.g:1309:6: lv_collapsible_3_0= 'collapsible'
                     {
-                    lv_collapsible_3_0=(Token)match(input,49,FOLLOW_49_in_ruleChartTree3269); if (state.failed) return current;
+                    lv_collapsible_3_0=(Token)match(input,50,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              newLeafNode(lv_collapsible_3_0, grammarAccess.getChartTreeAccess().getCollapsibleCollapsibleKeyword_2_1_0());
-                          
+                      						newLeafNode(lv_collapsible_3_0, grammarAccess.getChartTreeAccess().getCollapsibleCollapsibleKeyword_2_1_0());
+                      					
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getChartTreeRule());
-                      	        }
-                             		setWithLastConsumed(current, "collapsible", true, "collapsible");
-                      	    
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getChartTreeRule());
+                      						}
+                      						setWithLastConsumed(current, "collapsible", true, "collapsible");
+                      					
                     }
 
                     }
@@ -3601,14 +3761,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -3617,7 +3779,7 @@
 
 
     // $ANTLR start "entryRuleChartInterval"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1334:1: entryRuleChartInterval returns [EObject current=null] : iv_ruleChartInterval= ruleChartInterval EOF ;
+    // InternalChartDSL.g:1326:1: entryRuleChartInterval returns [EObject current=null] : iv_ruleChartInterval= ruleChartInterval EOF ;
     public final EObject entryRuleChartInterval() throws RecognitionException {
         EObject current = null;
 
@@ -3625,13 +3787,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1335:2: (iv_ruleChartInterval= ruleChartInterval EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1336:2: iv_ruleChartInterval= ruleChartInterval EOF
+            // InternalChartDSL.g:1326:54: (iv_ruleChartInterval= ruleChartInterval EOF )
+            // InternalChartDSL.g:1327:2: iv_ruleChartInterval= ruleChartInterval EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getChartIntervalRule()); 
             }
-            pushFollow(FOLLOW_ruleChartInterval_in_entryRuleChartInterval3319);
+            pushFollow(FOLLOW_1);
             iv_ruleChartInterval=ruleChartInterval();
 
             state._fsp--;
@@ -3639,16 +3801,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleChartInterval; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartInterval3329); 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;
@@ -3657,47 +3819,50 @@
 
 
     // $ANTLR start "ruleChartInterval"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1343:1: ruleChartInterval returns [EObject current=null] : this_ChartNumberInterval_0= ruleChartNumberInterval ;
+    // InternalChartDSL.g:1333:1: ruleChartInterval returns [EObject current=null] : this_ChartNumberInterval_0= ruleChartNumberInterval ;
     public final EObject ruleChartInterval() throws RecognitionException {
         EObject current = null;
 
         EObject this_ChartNumberInterval_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1346:28: (this_ChartNumberInterval_0= ruleChartNumberInterval )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1348:5: this_ChartNumberInterval_0= ruleChartNumberInterval
+            // InternalChartDSL.g:1339:2: (this_ChartNumberInterval_0= ruleChartNumberInterval )
+            // InternalChartDSL.g:1340:2: this_ChartNumberInterval_0= ruleChartNumberInterval
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getChartIntervalAccess().getChartNumberIntervalParserRuleCall()); 
-                  
+
+              		newCompositeNode(grammarAccess.getChartIntervalAccess().getChartNumberIntervalParserRuleCall());
+              	
             }
-            pushFollow(FOLLOW_ruleChartNumberInterval_in_ruleChartInterval3375);
+            pushFollow(FOLLOW_2);
             this_ChartNumberInterval_0=ruleChartNumberInterval();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-                      current = this_ChartNumberInterval_0; 
-                      afterParserOrEnumRuleCall();
-                  
+
+              		current = this_ChartNumberInterval_0;
+              		afterParserOrEnumRuleCall();
+              	
             }
 
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -3706,7 +3871,7 @@
 
 
     // $ANTLR start "entryRuleChartNumberInterval"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1364:1: entryRuleChartNumberInterval returns [EObject current=null] : iv_ruleChartNumberInterval= ruleChartNumberInterval EOF ;
+    // InternalChartDSL.g:1351:1: entryRuleChartNumberInterval returns [EObject current=null] : iv_ruleChartNumberInterval= ruleChartNumberInterval EOF ;
     public final EObject entryRuleChartNumberInterval() throws RecognitionException {
         EObject current = null;
 
@@ -3714,13 +3879,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1365:2: (iv_ruleChartNumberInterval= ruleChartNumberInterval EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1366:2: iv_ruleChartNumberInterval= ruleChartNumberInterval EOF
+            // InternalChartDSL.g:1351:60: (iv_ruleChartNumberInterval= ruleChartNumberInterval EOF )
+            // InternalChartDSL.g:1352:2: iv_ruleChartNumberInterval= ruleChartNumberInterval EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getChartNumberIntervalRule()); 
             }
-            pushFollow(FOLLOW_ruleChartNumberInterval_in_entryRuleChartNumberInterval3409);
+            pushFollow(FOLLOW_1);
             iv_ruleChartNumberInterval=ruleChartNumberInterval();
 
             state._fsp--;
@@ -3728,16 +3893,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleChartNumberInterval; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartNumberInterval3419); 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;
@@ -3746,7 +3911,7 @@
 
 
     // $ANTLR start "ruleChartNumberInterval"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1373:1: ruleChartNumberInterval returns [EObject current=null] : ( () otherlv_1= 'up to' ( (lv_numberIntervalValue_2_0= ruleSignedNumber ) ) ( (lv_numberRange_3_0= ruleChartRangeElement ) ) ) ;
+    // InternalChartDSL.g:1358:1: ruleChartNumberInterval returns [EObject current=null] : ( () otherlv_1= 'upTo' ( (lv_numberIntervalValue_2_0= ruleSignedNumber ) ) ( (lv_numberRange_3_0= ruleChartRangeElement ) ) ) ;
     public final EObject ruleChartNumberInterval() throws RecognitionException {
         EObject current = null;
 
@@ -3756,62 +3921,63 @@
         EObject lv_numberRange_3_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1376:28: ( ( () otherlv_1= 'up to' ( (lv_numberIntervalValue_2_0= ruleSignedNumber ) ) ( (lv_numberRange_3_0= ruleChartRangeElement ) ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1377:1: ( () otherlv_1= 'up to' ( (lv_numberIntervalValue_2_0= ruleSignedNumber ) ) ( (lv_numberRange_3_0= ruleChartRangeElement ) ) )
+            // InternalChartDSL.g:1364:2: ( ( () otherlv_1= 'upTo' ( (lv_numberIntervalValue_2_0= ruleSignedNumber ) ) ( (lv_numberRange_3_0= ruleChartRangeElement ) ) ) )
+            // InternalChartDSL.g:1365:2: ( () otherlv_1= 'upTo' ( (lv_numberIntervalValue_2_0= ruleSignedNumber ) ) ( (lv_numberRange_3_0= ruleChartRangeElement ) ) )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1377:1: ( () otherlv_1= 'up to' ( (lv_numberIntervalValue_2_0= ruleSignedNumber ) ) ( (lv_numberRange_3_0= ruleChartRangeElement ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1377:2: () otherlv_1= 'up to' ( (lv_numberIntervalValue_2_0= ruleSignedNumber ) ) ( (lv_numberRange_3_0= ruleChartRangeElement ) )
+            // InternalChartDSL.g:1365:2: ( () otherlv_1= 'upTo' ( (lv_numberIntervalValue_2_0= ruleSignedNumber ) ) ( (lv_numberRange_3_0= ruleChartRangeElement ) ) )
+            // InternalChartDSL.g:1366:3: () otherlv_1= 'upTo' ( (lv_numberIntervalValue_2_0= ruleSignedNumber ) ) ( (lv_numberRange_3_0= ruleChartRangeElement ) )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1377:2: ()
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1378:5: 
+            // InternalChartDSL.g:1366:3: ()
+            // InternalChartDSL.g:1367:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getChartNumberIntervalAccess().getChartNumberIntervalAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getChartNumberIntervalAccess().getChartNumberIntervalAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,50,FOLLOW_50_in_ruleChartNumberInterval3465); if (state.failed) return current;
+            otherlv_1=(Token)match(input,51,FOLLOW_27); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_1, grammarAccess.getChartNumberIntervalAccess().getUpToKeyword_1());
-                  
+              			newLeafNode(otherlv_1, grammarAccess.getChartNumberIntervalAccess().getUpToKeyword_1());
+              		
             }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1387:1: ( (lv_numberIntervalValue_2_0= ruleSignedNumber ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1388:1: (lv_numberIntervalValue_2_0= ruleSignedNumber )
+            // InternalChartDSL.g:1377:3: ( (lv_numberIntervalValue_2_0= ruleSignedNumber ) )
+            // InternalChartDSL.g:1378:4: (lv_numberIntervalValue_2_0= ruleSignedNumber )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1388:1: (lv_numberIntervalValue_2_0= ruleSignedNumber )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1389:3: lv_numberIntervalValue_2_0= ruleSignedNumber
+            // InternalChartDSL.g:1378:4: (lv_numberIntervalValue_2_0= ruleSignedNumber )
+            // InternalChartDSL.g:1379:5: lv_numberIntervalValue_2_0= ruleSignedNumber
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getChartNumberIntervalAccess().getNumberIntervalValueSignedNumberParserRuleCall_2_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getChartNumberIntervalAccess().getNumberIntervalValueSignedNumberParserRuleCall_2_0());
+              				
             }
-            pushFollow(FOLLOW_ruleSignedNumber_in_ruleChartNumberInterval3486);
+            pushFollow(FOLLOW_27);
             lv_numberIntervalValue_2_0=ruleSignedNumber();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getChartNumberIntervalRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"numberIntervalValue",
-                      		lv_numberIntervalValue_2_0, 
-                      		"SignedNumber");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getChartNumberIntervalRule());
+              					}
+              					set(
+              						current,
+              						"numberIntervalValue",
+              						lv_numberIntervalValue_2_0,
+              						"org.eclipse.osbp.xtext.chart.ChartDSL.SignedNumber");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -3819,34 +3985,34 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1405:2: ( (lv_numberRange_3_0= ruleChartRangeElement ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1406:1: (lv_numberRange_3_0= ruleChartRangeElement )
+            // InternalChartDSL.g:1396:3: ( (lv_numberRange_3_0= ruleChartRangeElement ) )
+            // InternalChartDSL.g:1397:4: (lv_numberRange_3_0= ruleChartRangeElement )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1406:1: (lv_numberRange_3_0= ruleChartRangeElement )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1407:3: lv_numberRange_3_0= ruleChartRangeElement
+            // InternalChartDSL.g:1397:4: (lv_numberRange_3_0= ruleChartRangeElement )
+            // InternalChartDSL.g:1398:5: lv_numberRange_3_0= ruleChartRangeElement
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getChartNumberIntervalAccess().getNumberRangeChartRangeElementParserRuleCall_3_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getChartNumberIntervalAccess().getNumberRangeChartRangeElementParserRuleCall_3_0());
+              				
             }
-            pushFollow(FOLLOW_ruleChartRangeElement_in_ruleChartNumberInterval3507);
+            pushFollow(FOLLOW_2);
             lv_numberRange_3_0=ruleChartRangeElement();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getChartNumberIntervalRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"numberRange",
-                      		lv_numberRange_3_0, 
-                      		"ChartRangeElement");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getChartNumberIntervalRule());
+              					}
+              					set(
+              						current,
+              						"numberRange",
+              						lv_numberRange_3_0,
+              						"org.eclipse.osbp.xtext.chart.ChartDSL.ChartRangeElement");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -3861,14 +4027,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -3877,7 +4045,7 @@
 
 
     // $ANTLR start "entryRuleChartDatamart"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1431:1: entryRuleChartDatamart returns [EObject current=null] : iv_ruleChartDatamart= ruleChartDatamart EOF ;
+    // InternalChartDSL.g:1419:1: entryRuleChartDatamart returns [EObject current=null] : iv_ruleChartDatamart= ruleChartDatamart EOF ;
     public final EObject entryRuleChartDatamart() throws RecognitionException {
         EObject current = null;
 
@@ -3885,13 +4053,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1432:2: (iv_ruleChartDatamart= ruleChartDatamart EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1433:2: iv_ruleChartDatamart= ruleChartDatamart EOF
+            // InternalChartDSL.g:1419:54: (iv_ruleChartDatamart= ruleChartDatamart EOF )
+            // InternalChartDSL.g:1420:2: iv_ruleChartDatamart= ruleChartDatamart EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getChartDatamartRule()); 
             }
-            pushFollow(FOLLOW_ruleChartDatamart_in_entryRuleChartDatamart3543);
+            pushFollow(FOLLOW_1);
             iv_ruleChartDatamart=ruleChartDatamart();
 
             state._fsp--;
@@ -3899,16 +4067,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleChartDatamart; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartDatamart3553); 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;
@@ -3917,7 +4085,7 @@
 
 
     // $ANTLR start "ruleChartDatamart"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1440:1: ruleChartDatamart returns [EObject current=null] : (otherlv_0= 'datamart' ( (otherlv_1= RULE_ID ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleChartElement ) )* otherlv_4= '}' ) ;
+    // InternalChartDSL.g:1426:1: ruleChartDatamart returns [EObject current=null] : (otherlv_0= 'datamart' ( (otherlv_1= RULE_ID ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleChartElement ) )* otherlv_4= '}' ) ;
     public final EObject ruleChartDatamart() throws RecognitionException {
         EObject current = null;
 
@@ -3928,39 +4096,40 @@
         EObject lv_elements_3_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1443:28: ( (otherlv_0= 'datamart' ( (otherlv_1= RULE_ID ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleChartElement ) )* otherlv_4= '}' ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1444:1: (otherlv_0= 'datamart' ( (otherlv_1= RULE_ID ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleChartElement ) )* otherlv_4= '}' )
+            // InternalChartDSL.g:1432:2: ( (otherlv_0= 'datamart' ( (otherlv_1= RULE_ID ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleChartElement ) )* otherlv_4= '}' ) )
+            // InternalChartDSL.g:1433:2: (otherlv_0= 'datamart' ( (otherlv_1= RULE_ID ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleChartElement ) )* otherlv_4= '}' )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1444:1: (otherlv_0= 'datamart' ( (otherlv_1= RULE_ID ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleChartElement ) )* otherlv_4= '}' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1444:3: otherlv_0= 'datamart' ( (otherlv_1= RULE_ID ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleChartElement ) )* otherlv_4= '}'
+            // InternalChartDSL.g:1433:2: (otherlv_0= 'datamart' ( (otherlv_1= RULE_ID ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleChartElement ) )* otherlv_4= '}' )
+            // InternalChartDSL.g:1434:3: otherlv_0= 'datamart' ( (otherlv_1= RULE_ID ) ) otherlv_2= '{' ( (lv_elements_3_0= ruleChartElement ) )* otherlv_4= '}'
             {
-            otherlv_0=(Token)match(input,51,FOLLOW_51_in_ruleChartDatamart3590); if (state.failed) return current;
+            otherlv_0=(Token)match(input,52,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getChartDatamartAccess().getDatamartKeyword_0());
-                  
+              			newLeafNode(otherlv_0, grammarAccess.getChartDatamartAccess().getDatamartKeyword_0());
+              		
             }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1448:1: ( (otherlv_1= RULE_ID ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1449:1: (otherlv_1= RULE_ID )
+            // InternalChartDSL.g:1438:3: ( (otherlv_1= RULE_ID ) )
+            // InternalChartDSL.g:1439:4: (otherlv_1= RULE_ID )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1449:1: (otherlv_1= RULE_ID )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1450:3: otherlv_1= RULE_ID
+            // InternalChartDSL.g:1439:4: (otherlv_1= RULE_ID )
+            // InternalChartDSL.g:1440:5: otherlv_1= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getChartDatamartRule());
-              	        }
-                      
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getChartDatamartRule());
+              					}
+              				
             }
-            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleChartDatamart3610); if (state.failed) return current;
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_24); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              		newLeafNode(otherlv_1, grammarAccess.getChartDatamartAccess().getDatamartRefDatamartDefinitionCrossReference_1_0()); 
-              	
+              					newLeafNode(otherlv_1, grammarAccess.getChartDatamartAccess().getDatamartRefDatamartDefinitionCrossReference_1_0());
+              				
             }
 
             }
@@ -3968,52 +4137,52 @@
 
             }
 
-            otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleChartDatamart3622); if (state.failed) return current;
+            otherlv_2=(Token)match(input,14,FOLLOW_28); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_2, grammarAccess.getChartDatamartAccess().getLeftCurlyBracketKeyword_2());
-                  
+              			newLeafNode(otherlv_2, grammarAccess.getChartDatamartAccess().getLeftCurlyBracketKeyword_2());
+              		
             }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1465:1: ( (lv_elements_3_0= ruleChartElement ) )*
+            // InternalChartDSL.g:1455:3: ( (lv_elements_3_0= ruleChartElement ) )*
             loop20:
             do {
                 int alt20=2;
                 int LA20_0 = input.LA(1);
 
-                if ( (LA20_0==31||LA20_0==52||LA20_0==57) ) {
+                if ( (LA20_0==32||LA20_0==53||LA20_0==58) ) {
                     alt20=1;
                 }
 
 
                 switch (alt20) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1466:1: (lv_elements_3_0= ruleChartElement )
+            	    // InternalChartDSL.g:1456:4: (lv_elements_3_0= ruleChartElement )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1466:1: (lv_elements_3_0= ruleChartElement )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1467:3: lv_elements_3_0= ruleChartElement
+            	    // InternalChartDSL.g:1456:4: (lv_elements_3_0= ruleChartElement )
+            	    // InternalChartDSL.g:1457:5: lv_elements_3_0= ruleChartElement
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getChartDatamartAccess().getElementsChartElementParserRuleCall_3_0()); 
-            	      	    
+
+            	      					newCompositeNode(grammarAccess.getChartDatamartAccess().getElementsChartElementParserRuleCall_3_0());
+            	      				
             	    }
-            	    pushFollow(FOLLOW_ruleChartElement_in_ruleChartDatamart3643);
+            	    pushFollow(FOLLOW_28);
             	    lv_elements_3_0=ruleChartElement();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getChartDatamartRule());
-            	      	        }
-            	             		add(
-            	             			current, 
-            	             			"elements",
-            	              		lv_elements_3_0, 
-            	              		"ChartElement");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      					if (current==null) {
+            	      						current = createModelElementForParent(grammarAccess.getChartDatamartRule());
+            	      					}
+            	      					add(
+            	      						current,
+            	      						"elements",
+            	      						lv_elements_3_0,
+            	      						"org.eclipse.osbp.xtext.chart.ChartDSL.ChartElement");
+            	      					afterParserOrEnumRuleCall();
+            	      				
             	    }
 
             	    }
@@ -4027,11 +4196,11 @@
                 }
             } while (true);
 
-            otherlv_4=(Token)match(input,15,FOLLOW_15_in_ruleChartDatamart3656); 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.getChartDatamartAccess().getRightCurlyBracketKeyword_4());
-                  
+              			newLeafNode(otherlv_4, grammarAccess.getChartDatamartAccess().getRightCurlyBracketKeyword_4());
+              		
             }
 
             }
@@ -4040,14 +4209,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4056,7 +4227,7 @@
 
 
     // $ANTLR start "entryRuleChartElement"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1495:1: entryRuleChartElement returns [EObject current=null] : iv_ruleChartElement= ruleChartElement EOF ;
+    // InternalChartDSL.g:1482:1: entryRuleChartElement returns [EObject current=null] : iv_ruleChartElement= ruleChartElement EOF ;
     public final EObject entryRuleChartElement() throws RecognitionException {
         EObject current = null;
 
@@ -4064,13 +4235,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1496:2: (iv_ruleChartElement= ruleChartElement EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1497:2: iv_ruleChartElement= ruleChartElement EOF
+            // InternalChartDSL.g:1482:53: (iv_ruleChartElement= ruleChartElement EOF )
+            // InternalChartDSL.g:1483:2: iv_ruleChartElement= ruleChartElement EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getChartElementRule()); 
             }
-            pushFollow(FOLLOW_ruleChartElement_in_entryRuleChartElement3692);
+            pushFollow(FOLLOW_1);
             iv_ruleChartElement=ruleChartElement();
 
             state._fsp--;
@@ -4078,16 +4249,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleChartElement; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartElement3702); 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;
@@ -4096,7 +4267,7 @@
 
 
     // $ANTLR start "ruleChartElement"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1504:1: ruleChartElement returns [EObject current=null] : (this_ChartAxis_0= ruleChartAxis | this_ChartLegend_1= ruleChartLegend | this_ChartHighlighter_2= ruleChartHighlighter ) ;
+    // InternalChartDSL.g:1489:1: ruleChartElement returns [EObject current=null] : (this_ChartAxis_0= ruleChartAxis | this_ChartLegend_1= ruleChartLegend | this_ChartHighlighter_2= ruleChartHighlighter ) ;
     public final EObject ruleChartElement() throws RecognitionException {
         EObject current = null;
 
@@ -4107,26 +4278,27 @@
         EObject this_ChartHighlighter_2 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1507:28: ( (this_ChartAxis_0= ruleChartAxis | this_ChartLegend_1= ruleChartLegend | this_ChartHighlighter_2= ruleChartHighlighter ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1508:1: (this_ChartAxis_0= ruleChartAxis | this_ChartLegend_1= ruleChartLegend | this_ChartHighlighter_2= ruleChartHighlighter )
+            // InternalChartDSL.g:1495:2: ( (this_ChartAxis_0= ruleChartAxis | this_ChartLegend_1= ruleChartLegend | this_ChartHighlighter_2= ruleChartHighlighter ) )
+            // InternalChartDSL.g:1496:2: (this_ChartAxis_0= ruleChartAxis | this_ChartLegend_1= ruleChartLegend | this_ChartHighlighter_2= ruleChartHighlighter )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1508:1: (this_ChartAxis_0= ruleChartAxis | this_ChartLegend_1= ruleChartLegend | this_ChartHighlighter_2= ruleChartHighlighter )
+            // InternalChartDSL.g:1496:2: (this_ChartAxis_0= ruleChartAxis | this_ChartLegend_1= ruleChartLegend | this_ChartHighlighter_2= ruleChartHighlighter )
             int alt21=3;
             switch ( input.LA(1) ) {
-            case 57:
+            case 58:
                 {
                 alt21=1;
                 }
                 break;
-            case 52:
+            case 53:
                 {
                 alt21=2;
                 }
                 break;
-            case 31:
+            case 32:
                 {
                 alt21=3;
                 }
@@ -4141,67 +4313,67 @@
 
             switch (alt21) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1509:5: this_ChartAxis_0= ruleChartAxis
+                    // InternalChartDSL.g:1497:3: this_ChartAxis_0= ruleChartAxis
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getChartElementAccess().getChartAxisParserRuleCall_0()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getChartElementAccess().getChartAxisParserRuleCall_0());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleChartAxis_in_ruleChartElement3749);
+                    pushFollow(FOLLOW_2);
                     this_ChartAxis_0=ruleChartAxis();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_ChartAxis_0; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_ChartAxis_0;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1519:5: this_ChartLegend_1= ruleChartLegend
+                    // InternalChartDSL.g:1506:3: this_ChartLegend_1= ruleChartLegend
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getChartElementAccess().getChartLegendParserRuleCall_1()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getChartElementAccess().getChartLegendParserRuleCall_1());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleChartLegend_in_ruleChartElement3776);
+                    pushFollow(FOLLOW_2);
                     this_ChartLegend_1=ruleChartLegend();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_ChartLegend_1; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_ChartLegend_1;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
                     break;
                 case 3 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1529:5: this_ChartHighlighter_2= ruleChartHighlighter
+                    // InternalChartDSL.g:1515:3: this_ChartHighlighter_2= ruleChartHighlighter
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getChartElementAccess().getChartHighlighterParserRuleCall_2()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getChartElementAccess().getChartHighlighterParserRuleCall_2());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleChartHighlighter_in_ruleChartElement3803);
+                    pushFollow(FOLLOW_2);
                     this_ChartHighlighter_2=ruleChartHighlighter();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_ChartHighlighter_2; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      			current = this_ChartHighlighter_2;
+                      			afterParserOrEnumRuleCall();
+                      		
                     }
 
                     }
@@ -4213,14 +4385,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4229,7 +4403,7 @@
 
 
     // $ANTLR start "entryRuleChartLegend"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1545:1: entryRuleChartLegend returns [EObject current=null] : iv_ruleChartLegend= ruleChartLegend EOF ;
+    // InternalChartDSL.g:1527:1: entryRuleChartLegend returns [EObject current=null] : iv_ruleChartLegend= ruleChartLegend EOF ;
     public final EObject entryRuleChartLegend() throws RecognitionException {
         EObject current = null;
 
@@ -4237,13 +4411,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1546:2: (iv_ruleChartLegend= ruleChartLegend EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1547:2: iv_ruleChartLegend= ruleChartLegend EOF
+            // InternalChartDSL.g:1527:52: (iv_ruleChartLegend= ruleChartLegend EOF )
+            // InternalChartDSL.g:1528:2: iv_ruleChartLegend= ruleChartLegend EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getChartLegendRule()); 
             }
-            pushFollow(FOLLOW_ruleChartLegend_in_entryRuleChartLegend3838);
+            pushFollow(FOLLOW_1);
             iv_ruleChartLegend=ruleChartLegend();
 
             state._fsp--;
@@ -4251,16 +4425,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleChartLegend; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartLegend3848); 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;
@@ -4269,7 +4443,7 @@
 
 
     // $ANTLR start "ruleChartLegend"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1554:1: ruleChartLegend returns [EObject current=null] : (otherlv_0= 'legend' ( (lv_placement_1_0= ruleLegendPlacementEnum ) ) ( ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) ) )? ) ;
+    // InternalChartDSL.g:1534:1: ruleChartLegend returns [EObject current=null] : (otherlv_0= 'legend' ( (lv_placement_1_0= ruleLegendPlacementEnum ) ) ( ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) ) )? ) ;
     public final EObject ruleChartLegend() throws RecognitionException {
         EObject current = null;
 
@@ -4281,49 +4455,50 @@
         Enumerator lv_toggleType_4_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1557:28: ( (otherlv_0= 'legend' ( (lv_placement_1_0= ruleLegendPlacementEnum ) ) ( ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) ) )? ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1558:1: (otherlv_0= 'legend' ( (lv_placement_1_0= ruleLegendPlacementEnum ) ) ( ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) ) )? )
+            // InternalChartDSL.g:1540:2: ( (otherlv_0= 'legend' ( (lv_placement_1_0= ruleLegendPlacementEnum ) ) ( ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) ) )? ) )
+            // InternalChartDSL.g:1541:2: (otherlv_0= 'legend' ( (lv_placement_1_0= ruleLegendPlacementEnum ) ) ( ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) ) )? )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1558:1: (otherlv_0= 'legend' ( (lv_placement_1_0= ruleLegendPlacementEnum ) ) ( ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) ) )? )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1558:3: otherlv_0= 'legend' ( (lv_placement_1_0= ruleLegendPlacementEnum ) ) ( ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) ) )?
+            // InternalChartDSL.g:1541:2: (otherlv_0= 'legend' ( (lv_placement_1_0= ruleLegendPlacementEnum ) ) ( ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) ) )? )
+            // InternalChartDSL.g:1542:3: otherlv_0= 'legend' ( (lv_placement_1_0= ruleLegendPlacementEnum ) ) ( ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) ) )?
             {
-            otherlv_0=(Token)match(input,52,FOLLOW_52_in_ruleChartLegend3885); if (state.failed) return current;
+            otherlv_0=(Token)match(input,53,FOLLOW_29); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getChartLegendAccess().getLegendKeyword_0());
-                  
+              			newLeafNode(otherlv_0, grammarAccess.getChartLegendAccess().getLegendKeyword_0());
+              		
             }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1562:1: ( (lv_placement_1_0= ruleLegendPlacementEnum ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1563:1: (lv_placement_1_0= ruleLegendPlacementEnum )
+            // InternalChartDSL.g:1546:3: ( (lv_placement_1_0= ruleLegendPlacementEnum ) )
+            // InternalChartDSL.g:1547:4: (lv_placement_1_0= ruleLegendPlacementEnum )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1563:1: (lv_placement_1_0= ruleLegendPlacementEnum )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1564:3: lv_placement_1_0= ruleLegendPlacementEnum
+            // InternalChartDSL.g:1547:4: (lv_placement_1_0= ruleLegendPlacementEnum )
+            // InternalChartDSL.g:1548:5: lv_placement_1_0= ruleLegendPlacementEnum
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getChartLegendAccess().getPlacementLegendPlacementEnumEnumRuleCall_1_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getChartLegendAccess().getPlacementLegendPlacementEnumEnumRuleCall_1_0());
+              				
             }
-            pushFollow(FOLLOW_ruleLegendPlacementEnum_in_ruleChartLegend3906);
+            pushFollow(FOLLOW_30);
             lv_placement_1_0=ruleLegendPlacementEnum();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getChartLegendRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"placement",
-                      		lv_placement_1_0, 
-                      		"LegendPlacementEnum");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getChartLegendRule());
+              					}
+              					set(
+              						current,
+              						"placement",
+              						lv_placement_1_0,
+              						"org.eclipse.osbp.xtext.chart.ChartDSL.LegendPlacementEnum");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -4331,36 +4506,36 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1580:2: ( ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) ) )?
+            // InternalChartDSL.g:1565:3: ( ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) ) )?
             int alt22=2;
             int LA22_0 = input.LA(1);
 
-            if ( (LA22_0==53) ) {
+            if ( (LA22_0==54) ) {
                 alt22=1;
             }
             switch (alt22) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1580:3: ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) )
+                    // InternalChartDSL.g:1566:4: ( (lv_toggle_2_0= 'toggle' ) ) ( (lv_replot_3_0= 'replot' ) ) ( (lv_toggleType_4_0= ruleToggleTypeEnum ) )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1580:3: ( (lv_toggle_2_0= 'toggle' ) )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1581:1: (lv_toggle_2_0= 'toggle' )
+                    // InternalChartDSL.g:1566:4: ( (lv_toggle_2_0= 'toggle' ) )
+                    // InternalChartDSL.g:1567:5: (lv_toggle_2_0= 'toggle' )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1581:1: (lv_toggle_2_0= 'toggle' )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1582:3: lv_toggle_2_0= 'toggle'
+                    // InternalChartDSL.g:1567:5: (lv_toggle_2_0= 'toggle' )
+                    // InternalChartDSL.g:1568:6: lv_toggle_2_0= 'toggle'
                     {
-                    lv_toggle_2_0=(Token)match(input,53,FOLLOW_53_in_ruleChartLegend3925); if (state.failed) return current;
+                    lv_toggle_2_0=(Token)match(input,54,FOLLOW_31); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              newLeafNode(lv_toggle_2_0, grammarAccess.getChartLegendAccess().getToggleToggleKeyword_2_0_0());
-                          
+                      						newLeafNode(lv_toggle_2_0, grammarAccess.getChartLegendAccess().getToggleToggleKeyword_2_0_0());
+                      					
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getChartLegendRule());
-                      	        }
-                             		setWithLastConsumed(current, "toggle", true, "toggle");
-                      	    
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getChartLegendRule());
+                      						}
+                      						setWithLastConsumed(current, "toggle", true, "toggle");
+                      					
                     }
 
                     }
@@ -4368,25 +4543,25 @@
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1595:2: ( (lv_replot_3_0= 'replot' ) )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1596:1: (lv_replot_3_0= 'replot' )
+                    // InternalChartDSL.g:1580:4: ( (lv_replot_3_0= 'replot' ) )
+                    // InternalChartDSL.g:1581:5: (lv_replot_3_0= 'replot' )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1596:1: (lv_replot_3_0= 'replot' )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1597:3: lv_replot_3_0= 'replot'
+                    // InternalChartDSL.g:1581:5: (lv_replot_3_0= 'replot' )
+                    // InternalChartDSL.g:1582:6: lv_replot_3_0= 'replot'
                     {
-                    lv_replot_3_0=(Token)match(input,54,FOLLOW_54_in_ruleChartLegend3956); if (state.failed) return current;
+                    lv_replot_3_0=(Token)match(input,55,FOLLOW_32); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              newLeafNode(lv_replot_3_0, grammarAccess.getChartLegendAccess().getReplotReplotKeyword_2_1_0());
-                          
+                      						newLeafNode(lv_replot_3_0, grammarAccess.getChartLegendAccess().getReplotReplotKeyword_2_1_0());
+                      					
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getChartLegendRule());
-                      	        }
-                             		setWithLastConsumed(current, "replot", true, "replot");
-                      	    
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getChartLegendRule());
+                      						}
+                      						setWithLastConsumed(current, "replot", true, "replot");
+                      					
                     }
 
                     }
@@ -4394,34 +4569,34 @@
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1610:2: ( (lv_toggleType_4_0= ruleToggleTypeEnum ) )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1611:1: (lv_toggleType_4_0= ruleToggleTypeEnum )
+                    // InternalChartDSL.g:1594:4: ( (lv_toggleType_4_0= ruleToggleTypeEnum ) )
+                    // InternalChartDSL.g:1595:5: (lv_toggleType_4_0= ruleToggleTypeEnum )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1611:1: (lv_toggleType_4_0= ruleToggleTypeEnum )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1612:3: lv_toggleType_4_0= ruleToggleTypeEnum
+                    // InternalChartDSL.g:1595:5: (lv_toggleType_4_0= ruleToggleTypeEnum )
+                    // InternalChartDSL.g:1596:6: lv_toggleType_4_0= ruleToggleTypeEnum
                     {
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getChartLegendAccess().getToggleTypeToggleTypeEnumEnumRuleCall_2_2_0()); 
-                      	    
+
+                      						newCompositeNode(grammarAccess.getChartLegendAccess().getToggleTypeToggleTypeEnumEnumRuleCall_2_2_0());
+                      					
                     }
-                    pushFollow(FOLLOW_ruleToggleTypeEnum_in_ruleChartLegend3990);
+                    pushFollow(FOLLOW_2);
                     lv_toggleType_4_0=ruleToggleTypeEnum();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElementForParent(grammarAccess.getChartLegendRule());
-                      	        }
-                             		set(
-                             			current, 
-                             			"toggleType",
-                              		lv_toggleType_4_0, 
-                              		"ToggleTypeEnum");
-                      	        afterParserOrEnumRuleCall();
-                      	    
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getChartLegendRule());
+                      						}
+                      						set(
+                      							current,
+                      							"toggleType",
+                      							lv_toggleType_4_0,
+                      							"org.eclipse.osbp.xtext.chart.ChartDSL.ToggleTypeEnum");
+                      						afterParserOrEnumRuleCall();
+                      					
                     }
 
                     }
@@ -4442,14 +4617,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4458,7 +4635,7 @@
 
 
     // $ANTLR start "entryRuleChartHighlighter"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1636:1: entryRuleChartHighlighter returns [EObject current=null] : iv_ruleChartHighlighter= ruleChartHighlighter EOF ;
+    // InternalChartDSL.g:1618:1: entryRuleChartHighlighter returns [EObject current=null] : iv_ruleChartHighlighter= ruleChartHighlighter EOF ;
     public final EObject entryRuleChartHighlighter() throws RecognitionException {
         EObject current = null;
 
@@ -4466,13 +4643,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1637:2: (iv_ruleChartHighlighter= ruleChartHighlighter EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1638:2: iv_ruleChartHighlighter= ruleChartHighlighter EOF
+            // InternalChartDSL.g:1618:57: (iv_ruleChartHighlighter= ruleChartHighlighter EOF )
+            // InternalChartDSL.g:1619:2: iv_ruleChartHighlighter= ruleChartHighlighter EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getChartHighlighterRule()); 
             }
-            pushFollow(FOLLOW_ruleChartHighlighter_in_entryRuleChartHighlighter4028);
+            pushFollow(FOLLOW_1);
             iv_ruleChartHighlighter=ruleChartHighlighter();
 
             state._fsp--;
@@ -4480,16 +4657,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleChartHighlighter; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartHighlighter4038); 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;
@@ -4498,7 +4675,7 @@
 
 
     // $ANTLR start "ruleChartHighlighter"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1645:1: ruleChartHighlighter returns [EObject current=null] : (otherlv_0= 'tooltip' ( (lv_location_1_0= ruleTooltipLocationEnum ) ) ( ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )? ) ) ;
+    // InternalChartDSL.g:1625:1: ruleChartHighlighter returns [EObject current=null] : (otherlv_0= 'tooltip' ( (lv_location_1_0= ruleTooltipLocationEnum ) ) ( ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )? ) ) ;
     public final EObject ruleChartHighlighter() throws RecognitionException {
         EObject current = null;
 
@@ -4508,49 +4685,50 @@
         Enumerator lv_location_1_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1648:28: ( (otherlv_0= 'tooltip' ( (lv_location_1_0= ruleTooltipLocationEnum ) ) ( ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )? ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1649:1: (otherlv_0= 'tooltip' ( (lv_location_1_0= ruleTooltipLocationEnum ) ) ( ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )? ) )
+            // InternalChartDSL.g:1631:2: ( (otherlv_0= 'tooltip' ( (lv_location_1_0= ruleTooltipLocationEnum ) ) ( ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )? ) ) )
+            // InternalChartDSL.g:1632:2: (otherlv_0= 'tooltip' ( (lv_location_1_0= ruleTooltipLocationEnum ) ) ( ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )? ) )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1649:1: (otherlv_0= 'tooltip' ( (lv_location_1_0= ruleTooltipLocationEnum ) ) ( ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )? ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1649:3: otherlv_0= 'tooltip' ( (lv_location_1_0= ruleTooltipLocationEnum ) ) ( ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )? )
+            // InternalChartDSL.g:1632:2: (otherlv_0= 'tooltip' ( (lv_location_1_0= ruleTooltipLocationEnum ) ) ( ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )? ) )
+            // InternalChartDSL.g:1633:3: otherlv_0= 'tooltip' ( (lv_location_1_0= ruleTooltipLocationEnum ) ) ( ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )? )
             {
-            otherlv_0=(Token)match(input,31,FOLLOW_31_in_ruleChartHighlighter4075); if (state.failed) return current;
+            otherlv_0=(Token)match(input,32,FOLLOW_33); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getChartHighlighterAccess().getTooltipKeyword_0());
-                  
+              			newLeafNode(otherlv_0, grammarAccess.getChartHighlighterAccess().getTooltipKeyword_0());
+              		
             }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1653:1: ( (lv_location_1_0= ruleTooltipLocationEnum ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1654:1: (lv_location_1_0= ruleTooltipLocationEnum )
+            // InternalChartDSL.g:1637:3: ( (lv_location_1_0= ruleTooltipLocationEnum ) )
+            // InternalChartDSL.g:1638:4: (lv_location_1_0= ruleTooltipLocationEnum )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1654:1: (lv_location_1_0= ruleTooltipLocationEnum )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1655:3: lv_location_1_0= ruleTooltipLocationEnum
+            // InternalChartDSL.g:1638:4: (lv_location_1_0= ruleTooltipLocationEnum )
+            // InternalChartDSL.g:1639:5: lv_location_1_0= ruleTooltipLocationEnum
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getChartHighlighterAccess().getLocationTooltipLocationEnumEnumRuleCall_1_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getChartHighlighterAccess().getLocationTooltipLocationEnumEnumRuleCall_1_0());
+              				
             }
-            pushFollow(FOLLOW_ruleTooltipLocationEnum_in_ruleChartHighlighter4096);
+            pushFollow(FOLLOW_34);
             lv_location_1_0=ruleTooltipLocationEnum();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getChartHighlighterRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"location",
-                      		lv_location_1_0, 
-                      		"TooltipLocationEnum");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getChartHighlighterRule());
+              					}
+              					set(
+              						current,
+              						"location",
+              						lv_location_1_0,
+              						"org.eclipse.osbp.xtext.chart.ChartDSL.TooltipLocationEnum");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -4558,36 +4736,36 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1671:2: ( ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )? )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1671:3: ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )?
+            // InternalChartDSL.g:1656:3: ( ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )? )
+            // InternalChartDSL.g:1657:4: ( (lv_tooltipAlways_2_0= 'always' ) )? ( (lv_insideChart_3_0= 'inside' ) )?
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1671:3: ( (lv_tooltipAlways_2_0= 'always' ) )?
+            // InternalChartDSL.g:1657:4: ( (lv_tooltipAlways_2_0= 'always' ) )?
             int alt23=2;
             int LA23_0 = input.LA(1);
 
-            if ( (LA23_0==55) ) {
+            if ( (LA23_0==56) ) {
                 alt23=1;
             }
             switch (alt23) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1672:1: (lv_tooltipAlways_2_0= 'always' )
+                    // InternalChartDSL.g:1658:5: (lv_tooltipAlways_2_0= 'always' )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1672:1: (lv_tooltipAlways_2_0= 'always' )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1673:3: lv_tooltipAlways_2_0= 'always'
+                    // InternalChartDSL.g:1658:5: (lv_tooltipAlways_2_0= 'always' )
+                    // InternalChartDSL.g:1659:6: lv_tooltipAlways_2_0= 'always'
                     {
-                    lv_tooltipAlways_2_0=(Token)match(input,55,FOLLOW_55_in_ruleChartHighlighter4115); if (state.failed) return current;
+                    lv_tooltipAlways_2_0=(Token)match(input,56,FOLLOW_35); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              newLeafNode(lv_tooltipAlways_2_0, grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAlwaysKeyword_2_0_0());
-                          
+                      						newLeafNode(lv_tooltipAlways_2_0, grammarAccess.getChartHighlighterAccess().getTooltipAlwaysAlwaysKeyword_2_0_0());
+                      					
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getChartHighlighterRule());
-                      	        }
-                             		setWithLastConsumed(current, "tooltipAlways", true, "always");
-                      	    
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getChartHighlighterRule());
+                      						}
+                      						setWithLastConsumed(current, "tooltipAlways", true, "always");
+                      					
                     }
 
                     }
@@ -4598,33 +4776,33 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1686:3: ( (lv_insideChart_3_0= 'inside' ) )?
+            // InternalChartDSL.g:1671:4: ( (lv_insideChart_3_0= 'inside' ) )?
             int alt24=2;
             int LA24_0 = input.LA(1);
 
-            if ( (LA24_0==56) ) {
+            if ( (LA24_0==57) ) {
                 alt24=1;
             }
             switch (alt24) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1687:1: (lv_insideChart_3_0= 'inside' )
+                    // InternalChartDSL.g:1672:5: (lv_insideChart_3_0= 'inside' )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1687:1: (lv_insideChart_3_0= 'inside' )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1688:3: lv_insideChart_3_0= 'inside'
+                    // InternalChartDSL.g:1672:5: (lv_insideChart_3_0= 'inside' )
+                    // InternalChartDSL.g:1673:6: lv_insideChart_3_0= 'inside'
                     {
-                    lv_insideChart_3_0=(Token)match(input,56,FOLLOW_56_in_ruleChartHighlighter4147); if (state.failed) return current;
+                    lv_insideChart_3_0=(Token)match(input,57,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              newLeafNode(lv_insideChart_3_0, grammarAccess.getChartHighlighterAccess().getInsideChartInsideKeyword_2_1_0());
-                          
+                      						newLeafNode(lv_insideChart_3_0, grammarAccess.getChartHighlighterAccess().getInsideChartInsideKeyword_2_1_0());
+                      					
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getChartHighlighterRule());
-                      	        }
-                             		setWithLastConsumed(current, "insideChart", true, "inside");
-                      	    
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getChartHighlighterRule());
+                      						}
+                      						setWithLastConsumed(current, "insideChart", true, "inside");
+                      					
                     }
 
                     }
@@ -4645,14 +4823,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4661,7 +4841,7 @@
 
 
     // $ANTLR start "entryRuleChartAxis"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1709:1: entryRuleChartAxis returns [EObject current=null] : iv_ruleChartAxis= ruleChartAxis EOF ;
+    // InternalChartDSL.g:1690:1: entryRuleChartAxis returns [EObject current=null] : iv_ruleChartAxis= ruleChartAxis EOF ;
     public final EObject entryRuleChartAxis() throws RecognitionException {
         EObject current = null;
 
@@ -4669,13 +4849,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1710:2: (iv_ruleChartAxis= ruleChartAxis EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1711:2: iv_ruleChartAxis= ruleChartAxis EOF
+            // InternalChartDSL.g:1690:50: (iv_ruleChartAxis= ruleChartAxis EOF )
+            // InternalChartDSL.g:1691:2: iv_ruleChartAxis= ruleChartAxis EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getChartAxisRule()); 
             }
-            pushFollow(FOLLOW_ruleChartAxis_in_entryRuleChartAxis4198);
+            pushFollow(FOLLOW_1);
             iv_ruleChartAxis=ruleChartAxis();
 
             state._fsp--;
@@ -4683,16 +4863,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleChartAxis; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartAxis4208); 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;
@@ -4701,7 +4881,7 @@
 
 
     // $ANTLR start "ruleChartAxis"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1718:1: ruleChartAxis returns [EObject current=null] : (otherlv_0= 'axis' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'renders' ( (lv_renderType_3_0= ruleRenderTypeEnum ) ) ( (lv_shortLabel_4_0= 'shortLabel' ) )? (otherlv_5= 'tickangle' ( (lv_angle_6_0= ruleSignedNumber ) ) )? ) ;
+    // InternalChartDSL.g:1697:1: ruleChartAxis returns [EObject current=null] : (otherlv_0= 'axis' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'renders' ( (lv_renderType_3_0= ruleRenderTypeEnum ) ) ( (lv_shortLabel_4_0= 'shortLabel' ) )? (otherlv_5= 'angle' ( (lv_angle_6_0= ruleSignedNumber ) ) )? ) ;
     public final EObject ruleChartAxis() throws RecognitionException {
         EObject current = null;
 
@@ -4715,39 +4895,40 @@
         AntlrDatatypeRuleToken lv_angle_6_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1721:28: ( (otherlv_0= 'axis' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'renders' ( (lv_renderType_3_0= ruleRenderTypeEnum ) ) ( (lv_shortLabel_4_0= 'shortLabel' ) )? (otherlv_5= 'tickangle' ( (lv_angle_6_0= ruleSignedNumber ) ) )? ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1722:1: (otherlv_0= 'axis' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'renders' ( (lv_renderType_3_0= ruleRenderTypeEnum ) ) ( (lv_shortLabel_4_0= 'shortLabel' ) )? (otherlv_5= 'tickangle' ( (lv_angle_6_0= ruleSignedNumber ) ) )? )
+            // InternalChartDSL.g:1703:2: ( (otherlv_0= 'axis' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'renders' ( (lv_renderType_3_0= ruleRenderTypeEnum ) ) ( (lv_shortLabel_4_0= 'shortLabel' ) )? (otherlv_5= 'angle' ( (lv_angle_6_0= ruleSignedNumber ) ) )? ) )
+            // InternalChartDSL.g:1704:2: (otherlv_0= 'axis' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'renders' ( (lv_renderType_3_0= ruleRenderTypeEnum ) ) ( (lv_shortLabel_4_0= 'shortLabel' ) )? (otherlv_5= 'angle' ( (lv_angle_6_0= ruleSignedNumber ) ) )? )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1722:1: (otherlv_0= 'axis' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'renders' ( (lv_renderType_3_0= ruleRenderTypeEnum ) ) ( (lv_shortLabel_4_0= 'shortLabel' ) )? (otherlv_5= 'tickangle' ( (lv_angle_6_0= ruleSignedNumber ) ) )? )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1722:3: otherlv_0= 'axis' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'renders' ( (lv_renderType_3_0= ruleRenderTypeEnum ) ) ( (lv_shortLabel_4_0= 'shortLabel' ) )? (otherlv_5= 'tickangle' ( (lv_angle_6_0= ruleSignedNumber ) ) )?
+            // InternalChartDSL.g:1704:2: (otherlv_0= 'axis' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'renders' ( (lv_renderType_3_0= ruleRenderTypeEnum ) ) ( (lv_shortLabel_4_0= 'shortLabel' ) )? (otherlv_5= 'angle' ( (lv_angle_6_0= ruleSignedNumber ) ) )? )
+            // InternalChartDSL.g:1705:3: otherlv_0= 'axis' ( (otherlv_1= RULE_ID ) ) otherlv_2= 'renders' ( (lv_renderType_3_0= ruleRenderTypeEnum ) ) ( (lv_shortLabel_4_0= 'shortLabel' ) )? (otherlv_5= 'angle' ( (lv_angle_6_0= ruleSignedNumber ) ) )?
             {
-            otherlv_0=(Token)match(input,57,FOLLOW_57_in_ruleChartAxis4245); if (state.failed) return current;
+            otherlv_0=(Token)match(input,58,FOLLOW_4); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getChartAxisAccess().getAxisKeyword_0());
-                  
+              			newLeafNode(otherlv_0, grammarAccess.getChartAxisAccess().getAxisKeyword_0());
+              		
             }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1726:1: ( (otherlv_1= RULE_ID ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1727:1: (otherlv_1= RULE_ID )
+            // InternalChartDSL.g:1709:3: ( (otherlv_1= RULE_ID ) )
+            // InternalChartDSL.g:1710:4: (otherlv_1= RULE_ID )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1727:1: (otherlv_1= RULE_ID )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1728:3: otherlv_1= RULE_ID
+            // InternalChartDSL.g:1710:4: (otherlv_1= RULE_ID )
+            // InternalChartDSL.g:1711:5: otherlv_1= RULE_ID
             {
             if ( state.backtracking==0 ) {
 
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getChartAxisRule());
-              	        }
-                      
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getChartAxisRule());
+              					}
+              				
             }
-            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleChartAxis4265); if (state.failed) return current;
+            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_36); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              		newLeafNode(otherlv_1, grammarAccess.getChartAxisAccess().getAxisDatamartAxisCrossReference_1_0()); 
-              	
+              					newLeafNode(otherlv_1, grammarAccess.getChartAxisAccess().getAxisDatamartAxisCrossReference_1_0());
+              				
             }
 
             }
@@ -4755,40 +4936,40 @@
 
             }
 
-            otherlv_2=(Token)match(input,58,FOLLOW_58_in_ruleChartAxis4277); if (state.failed) return current;
+            otherlv_2=(Token)match(input,59,FOLLOW_37); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_2, grammarAccess.getChartAxisAccess().getRendersKeyword_2());
-                  
+              			newLeafNode(otherlv_2, grammarAccess.getChartAxisAccess().getRendersKeyword_2());
+              		
             }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1743:1: ( (lv_renderType_3_0= ruleRenderTypeEnum ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1744:1: (lv_renderType_3_0= ruleRenderTypeEnum )
+            // InternalChartDSL.g:1726:3: ( (lv_renderType_3_0= ruleRenderTypeEnum ) )
+            // InternalChartDSL.g:1727:4: (lv_renderType_3_0= ruleRenderTypeEnum )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1744:1: (lv_renderType_3_0= ruleRenderTypeEnum )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1745:3: lv_renderType_3_0= ruleRenderTypeEnum
+            // InternalChartDSL.g:1727:4: (lv_renderType_3_0= ruleRenderTypeEnum )
+            // InternalChartDSL.g:1728:5: lv_renderType_3_0= ruleRenderTypeEnum
             {
             if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getChartAxisAccess().getRenderTypeRenderTypeEnumEnumRuleCall_3_0()); 
-              	    
+
+              					newCompositeNode(grammarAccess.getChartAxisAccess().getRenderTypeRenderTypeEnumEnumRuleCall_3_0());
+              				
             }
-            pushFollow(FOLLOW_ruleRenderTypeEnum_in_ruleChartAxis4298);
+            pushFollow(FOLLOW_38);
             lv_renderType_3_0=ruleRenderTypeEnum();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getChartAxisRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"renderType",
-                      		lv_renderType_3_0, 
-                      		"RenderTypeEnum");
-              	        afterParserOrEnumRuleCall();
-              	    
+              					if (current==null) {
+              						current = createModelElementForParent(grammarAccess.getChartAxisRule());
+              					}
+              					set(
+              						current,
+              						"renderType",
+              						lv_renderType_3_0,
+              						"org.eclipse.osbp.xtext.chart.ChartDSL.RenderTypeEnum");
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -4796,33 +4977,33 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1761:2: ( (lv_shortLabel_4_0= 'shortLabel' ) )?
+            // InternalChartDSL.g:1745:3: ( (lv_shortLabel_4_0= 'shortLabel' ) )?
             int alt25=2;
             int LA25_0 = input.LA(1);
 
-            if ( (LA25_0==59) ) {
+            if ( (LA25_0==60) ) {
                 alt25=1;
             }
             switch (alt25) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1762:1: (lv_shortLabel_4_0= 'shortLabel' )
+                    // InternalChartDSL.g:1746:4: (lv_shortLabel_4_0= 'shortLabel' )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1762:1: (lv_shortLabel_4_0= 'shortLabel' )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1763:3: lv_shortLabel_4_0= 'shortLabel'
+                    // InternalChartDSL.g:1746:4: (lv_shortLabel_4_0= 'shortLabel' )
+                    // InternalChartDSL.g:1747:5: lv_shortLabel_4_0= 'shortLabel'
                     {
-                    lv_shortLabel_4_0=(Token)match(input,59,FOLLOW_59_in_ruleChartAxis4316); if (state.failed) return current;
+                    lv_shortLabel_4_0=(Token)match(input,60,FOLLOW_39); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              newLeafNode(lv_shortLabel_4_0, grammarAccess.getChartAxisAccess().getShortLabelShortLabelKeyword_4_0());
-                          
+                      					newLeafNode(lv_shortLabel_4_0, grammarAccess.getChartAxisAccess().getShortLabelShortLabelKeyword_4_0());
+                      				
                     }
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElement(grammarAccess.getChartAxisRule());
-                      	        }
-                             		setWithLastConsumed(current, "shortLabel", true, "shortLabel");
-                      	    
+                      					if (current==null) {
+                      						current = createModelElement(grammarAccess.getChartAxisRule());
+                      					}
+                      					setWithLastConsumed(current, "shortLabel", true, "shortLabel");
+                      				
                     }
 
                     }
@@ -4833,51 +5014,51 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1776:3: (otherlv_5= 'tickangle' ( (lv_angle_6_0= ruleSignedNumber ) ) )?
+            // InternalChartDSL.g:1759:3: (otherlv_5= 'angle' ( (lv_angle_6_0= ruleSignedNumber ) ) )?
             int alt26=2;
             int LA26_0 = input.LA(1);
 
-            if ( (LA26_0==60) ) {
+            if ( (LA26_0==61) ) {
                 alt26=1;
             }
             switch (alt26) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1776:5: otherlv_5= 'tickangle' ( (lv_angle_6_0= ruleSignedNumber ) )
+                    // InternalChartDSL.g:1760:4: otherlv_5= 'angle' ( (lv_angle_6_0= ruleSignedNumber ) )
                     {
-                    otherlv_5=(Token)match(input,60,FOLLOW_60_in_ruleChartAxis4343); if (state.failed) return current;
+                    otherlv_5=(Token)match(input,61,FOLLOW_40); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_5, grammarAccess.getChartAxisAccess().getTickangleKeyword_5_0());
-                          
+                      				newLeafNode(otherlv_5, grammarAccess.getChartAxisAccess().getAngleKeyword_5_0());
+                      			
                     }
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1780:1: ( (lv_angle_6_0= ruleSignedNumber ) )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1781:1: (lv_angle_6_0= ruleSignedNumber )
+                    // InternalChartDSL.g:1764:4: ( (lv_angle_6_0= ruleSignedNumber ) )
+                    // InternalChartDSL.g:1765:5: (lv_angle_6_0= ruleSignedNumber )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1781:1: (lv_angle_6_0= ruleSignedNumber )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1782:3: lv_angle_6_0= ruleSignedNumber
+                    // InternalChartDSL.g:1765:5: (lv_angle_6_0= ruleSignedNumber )
+                    // InternalChartDSL.g:1766:6: lv_angle_6_0= ruleSignedNumber
                     {
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getChartAxisAccess().getAngleSignedNumberParserRuleCall_5_1_0()); 
-                      	    
+
+                      						newCompositeNode(grammarAccess.getChartAxisAccess().getAngleSignedNumberParserRuleCall_5_1_0());
+                      					
                     }
-                    pushFollow(FOLLOW_ruleSignedNumber_in_ruleChartAxis4364);
+                    pushFollow(FOLLOW_2);
                     lv_angle_6_0=ruleSignedNumber();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElementForParent(grammarAccess.getChartAxisRule());
-                      	        }
-                             		set(
-                             			current, 
-                             			"angle",
-                              		lv_angle_6_0, 
-                              		"SignedNumber");
-                      	        afterParserOrEnumRuleCall();
-                      	    
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getChartAxisRule());
+                      						}
+                      						set(
+                      							current,
+                      							"angle",
+                      							lv_angle_6_0,
+                      							"org.eclipse.osbp.xtext.chart.ChartDSL.SignedNumber");
+                      						afterParserOrEnumRuleCall();
+                      					
                     }
 
                     }
@@ -4898,14 +5079,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -4914,7 +5097,7 @@
 
 
     // $ANTLR start "entryRuleChartRangeElement"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1806:1: entryRuleChartRangeElement returns [EObject current=null] : iv_ruleChartRangeElement= ruleChartRangeElement EOF ;
+    // InternalChartDSL.g:1788:1: entryRuleChartRangeElement returns [EObject current=null] : iv_ruleChartRangeElement= ruleChartRangeElement EOF ;
     public final EObject entryRuleChartRangeElement() throws RecognitionException {
         EObject current = null;
 
@@ -4922,13 +5105,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1807:2: (iv_ruleChartRangeElement= ruleChartRangeElement EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1808:2: iv_ruleChartRangeElement= ruleChartRangeElement EOF
+            // InternalChartDSL.g:1788:58: (iv_ruleChartRangeElement= ruleChartRangeElement EOF )
+            // InternalChartDSL.g:1789:2: iv_ruleChartRangeElement= ruleChartRangeElement EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getChartRangeElementRule()); 
             }
-            pushFollow(FOLLOW_ruleChartRangeElement_in_entryRuleChartRangeElement4402);
+            pushFollow(FOLLOW_1);
             iv_ruleChartRangeElement=ruleChartRangeElement();
 
             state._fsp--;
@@ -4936,16 +5119,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleChartRangeElement; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartRangeElement4412); 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;
@@ -4954,47 +5137,50 @@
 
 
     // $ANTLR start "ruleChartRangeElement"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1815:1: ruleChartRangeElement returns [EObject current=null] : this_ChartSegmentColor_0= ruleChartSegmentColor ;
+    // InternalChartDSL.g:1795:1: ruleChartRangeElement returns [EObject current=null] : this_ChartSegmentColor_0= ruleChartSegmentColor ;
     public final EObject ruleChartRangeElement() throws RecognitionException {
         EObject current = null;
 
         EObject this_ChartSegmentColor_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1818:28: (this_ChartSegmentColor_0= ruleChartSegmentColor )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1820:5: this_ChartSegmentColor_0= ruleChartSegmentColor
+            // InternalChartDSL.g:1801:2: (this_ChartSegmentColor_0= ruleChartSegmentColor )
+            // InternalChartDSL.g:1802:2: this_ChartSegmentColor_0= ruleChartSegmentColor
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getChartRangeElementAccess().getChartSegmentColorParserRuleCall()); 
-                  
+
+              		newCompositeNode(grammarAccess.getChartRangeElementAccess().getChartSegmentColorParserRuleCall());
+              	
             }
-            pushFollow(FOLLOW_ruleChartSegmentColor_in_ruleChartRangeElement4458);
+            pushFollow(FOLLOW_2);
             this_ChartSegmentColor_0=ruleChartSegmentColor();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-                      current = this_ChartSegmentColor_0; 
-                      afterParserOrEnumRuleCall();
-                  
+
+              		current = this_ChartSegmentColor_0;
+              		afterParserOrEnumRuleCall();
+              	
             }
 
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -5003,7 +5189,7 @@
 
 
     // $ANTLR start "entryRuleChartSegmentColor"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1836:1: entryRuleChartSegmentColor returns [EObject current=null] : iv_ruleChartSegmentColor= ruleChartSegmentColor EOF ;
+    // InternalChartDSL.g:1813:1: entryRuleChartSegmentColor returns [EObject current=null] : iv_ruleChartSegmentColor= ruleChartSegmentColor EOF ;
     public final EObject entryRuleChartSegmentColor() throws RecognitionException {
         EObject current = null;
 
@@ -5011,13 +5197,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1837:2: (iv_ruleChartSegmentColor= ruleChartSegmentColor EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1838:2: iv_ruleChartSegmentColor= ruleChartSegmentColor EOF
+            // InternalChartDSL.g:1813:58: (iv_ruleChartSegmentColor= ruleChartSegmentColor EOF )
+            // InternalChartDSL.g:1814:2: iv_ruleChartSegmentColor= ruleChartSegmentColor EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getChartSegmentColorRule()); 
             }
-            pushFollow(FOLLOW_ruleChartSegmentColor_in_entryRuleChartSegmentColor4492);
+            pushFollow(FOLLOW_1);
             iv_ruleChartSegmentColor=ruleChartSegmentColor();
 
             state._fsp--;
@@ -5025,16 +5211,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleChartSegmentColor; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartSegmentColor4502); 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;
@@ -5043,51 +5229,52 @@
 
 
     // $ANTLR start "ruleChartSegmentColor"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1845:1: ruleChartSegmentColor returns [EObject current=null] : (otherlv_0= 'segmentcolor' ( (lv_rgb_1_0= RULE_STRING ) ) ) ;
+    // InternalChartDSL.g:1820:1: ruleChartSegmentColor returns [EObject current=null] : (otherlv_0= 'segmentcolor' ( (lv_rgb_1_0= RULE_STRING ) ) ) ;
     public final EObject ruleChartSegmentColor() throws RecognitionException {
         EObject current = null;
 
         Token otherlv_0=null;
         Token lv_rgb_1_0=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1848:28: ( (otherlv_0= 'segmentcolor' ( (lv_rgb_1_0= RULE_STRING ) ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1849:1: (otherlv_0= 'segmentcolor' ( (lv_rgb_1_0= RULE_STRING ) ) )
+            // InternalChartDSL.g:1826:2: ( (otherlv_0= 'segmentcolor' ( (lv_rgb_1_0= RULE_STRING ) ) ) )
+            // InternalChartDSL.g:1827:2: (otherlv_0= 'segmentcolor' ( (lv_rgb_1_0= RULE_STRING ) ) )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1849:1: (otherlv_0= 'segmentcolor' ( (lv_rgb_1_0= RULE_STRING ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1849:3: otherlv_0= 'segmentcolor' ( (lv_rgb_1_0= RULE_STRING ) )
+            // InternalChartDSL.g:1827:2: (otherlv_0= 'segmentcolor' ( (lv_rgb_1_0= RULE_STRING ) ) )
+            // InternalChartDSL.g:1828:3: otherlv_0= 'segmentcolor' ( (lv_rgb_1_0= RULE_STRING ) )
             {
-            otherlv_0=(Token)match(input,61,FOLLOW_61_in_ruleChartSegmentColor4539); if (state.failed) return current;
+            otherlv_0=(Token)match(input,62,FOLLOW_8); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                  	newLeafNode(otherlv_0, grammarAccess.getChartSegmentColorAccess().getSegmentcolorKeyword_0());
-                  
-            }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1853:1: ( (lv_rgb_1_0= RULE_STRING ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1854:1: (lv_rgb_1_0= RULE_STRING )
-            {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1854:1: (lv_rgb_1_0= RULE_STRING )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1855:3: lv_rgb_1_0= RULE_STRING
-            {
-            lv_rgb_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleChartSegmentColor4556); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              			newLeafNode(lv_rgb_1_0, grammarAccess.getChartSegmentColorAccess().getRgbSTRINGTerminalRuleCall_1_0()); 
+              			newLeafNode(otherlv_0, grammarAccess.getChartSegmentColorAccess().getSegmentcolorKeyword_0());
               		
             }
+            // InternalChartDSL.g:1832:3: ( (lv_rgb_1_0= RULE_STRING ) )
+            // InternalChartDSL.g:1833:4: (lv_rgb_1_0= RULE_STRING )
+            {
+            // InternalChartDSL.g:1833:4: (lv_rgb_1_0= RULE_STRING )
+            // InternalChartDSL.g:1834:5: lv_rgb_1_0= RULE_STRING
+            {
+            lv_rgb_1_0=(Token)match(input,RULE_STRING,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-              	        if (current==null) {
-              	            current = createModelElement(grammarAccess.getChartSegmentColorRule());
-              	        }
-                     		setWithLastConsumed(
-                     			current, 
-                     			"rgb",
-                      		lv_rgb_1_0, 
-                      		"STRING");
-              	    
+              					newLeafNode(lv_rgb_1_0, grammarAccess.getChartSegmentColorAccess().getRgbSTRINGTerminalRuleCall_1_0());
+              				
+            }
+            if ( state.backtracking==0 ) {
+
+              					if (current==null) {
+              						current = createModelElement(grammarAccess.getChartSegmentColorRule());
+              					}
+              					setWithLastConsumed(
+              						current,
+              						"rgb",
+              						lv_rgb_1_0,
+              						"org.eclipse.xtext.xbase.Xtype.STRING");
+              				
             }
 
             }
@@ -5102,14 +5289,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -5117,129 +5306,8 @@
     // $ANTLR end "ruleChartSegmentColor"
 
 
-    // $ANTLR start "entryRuleChartImport"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1879:1: entryRuleChartImport returns [EObject current=null] : iv_ruleChartImport= ruleChartImport EOF ;
-    public final EObject entryRuleChartImport() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleChartImport = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1880:2: (iv_ruleChartImport= ruleChartImport EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1881:2: iv_ruleChartImport= ruleChartImport EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getChartImportRule()); 
-            }
-            pushFollow(FOLLOW_ruleChartImport_in_entryRuleChartImport4597);
-            iv_ruleChartImport=ruleChartImport();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleChartImport; 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartImport4607); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleChartImport"
-
-
-    // $ANTLR start "ruleChartImport"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1888:1: ruleChartImport returns [EObject current=null] : (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleChartQualifiedNameWithWildCard ) ) ) ;
-    public final EObject ruleChartImport() throws RecognitionException {
-        EObject current = null;
-
-        Token otherlv_0=null;
-        AntlrDatatypeRuleToken lv_importedNamespace_1_0 = null;
-
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1891:28: ( (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleChartQualifiedNameWithWildCard ) ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1892:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleChartQualifiedNameWithWildCard ) ) )
-            {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1892:1: (otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleChartQualifiedNameWithWildCard ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1892:3: otherlv_0= 'import' ( (lv_importedNamespace_1_0= ruleChartQualifiedNameWithWildCard ) )
-            {
-            otherlv_0=(Token)match(input,62,FOLLOW_62_in_ruleChartImport4644); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-                  	newLeafNode(otherlv_0, grammarAccess.getChartImportAccess().getImportKeyword_0());
-                  
-            }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1896:1: ( (lv_importedNamespace_1_0= ruleChartQualifiedNameWithWildCard ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1897:1: (lv_importedNamespace_1_0= ruleChartQualifiedNameWithWildCard )
-            {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1897:1: (lv_importedNamespace_1_0= ruleChartQualifiedNameWithWildCard )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1898:3: lv_importedNamespace_1_0= ruleChartQualifiedNameWithWildCard
-            {
-            if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getChartImportAccess().getImportedNamespaceChartQualifiedNameWithWildCardParserRuleCall_1_0()); 
-              	    
-            }
-            pushFollow(FOLLOW_ruleChartQualifiedNameWithWildCard_in_ruleChartImport4665);
-            lv_importedNamespace_1_0=ruleChartQualifiedNameWithWildCard();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-              	        if (current==null) {
-              	            current = createModelElementForParent(grammarAccess.getChartImportRule());
-              	        }
-                     		set(
-                     			current, 
-                     			"importedNamespace",
-                      		lv_importedNamespace_1_0, 
-                      		"ChartQualifiedNameWithWildCard");
-              	        afterParserOrEnumRuleCall();
-              	    
-            }
-
-            }
-
-
-            }
-
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleChartImport"
-
-
     // $ANTLR start "entryRuleSignedNumber"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1922:1: entryRuleSignedNumber returns [String current=null] : iv_ruleSignedNumber= ruleSignedNumber EOF ;
+    // InternalChartDSL.g:1854:1: entryRuleSignedNumber returns [String current=null] : iv_ruleSignedNumber= ruleSignedNumber EOF ;
     public final String entryRuleSignedNumber() throws RecognitionException {
         String current = null;
 
@@ -5247,13 +5315,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1923:2: (iv_ruleSignedNumber= ruleSignedNumber EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1924:2: iv_ruleSignedNumber= ruleSignedNumber EOF
+            // InternalChartDSL.g:1854:52: (iv_ruleSignedNumber= ruleSignedNumber EOF )
+            // InternalChartDSL.g:1855:2: iv_ruleSignedNumber= ruleSignedNumber EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getSignedNumberRule()); 
             }
-            pushFollow(FOLLOW_ruleSignedNumber_in_entryRuleSignedNumber4702);
+            pushFollow(FOLLOW_1);
             iv_ruleSignedNumber=ruleSignedNumber();
 
             state._fsp--;
@@ -5261,16 +5329,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleSignedNumber.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleSignedNumber4713); 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;
@@ -5279,20 +5347,21 @@
 
 
     // $ANTLR start "ruleSignedNumber"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1931:1: ruleSignedNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (kw= '-' )? this_INT_1= RULE_INT )? ;
+    // InternalChartDSL.g:1861:1: ruleSignedNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (kw= '-' )? this_INT_1= RULE_INT )? ;
     public final AntlrDatatypeRuleToken ruleSignedNumber() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
         Token kw=null;
         Token this_INT_1=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1934:28: ( ( (kw= '-' )? this_INT_1= RULE_INT )? )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1935:1: ( (kw= '-' )? this_INT_1= RULE_INT )?
+            // InternalChartDSL.g:1867:2: ( ( (kw= '-' )? this_INT_1= RULE_INT )? )
+            // InternalChartDSL.g:1868:2: ( (kw= '-' )? this_INT_1= RULE_INT )?
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1935:1: ( (kw= '-' )? this_INT_1= RULE_INT )?
+            // InternalChartDSL.g:1868:2: ( (kw= '-' )? this_INT_1= RULE_INT )?
             int alt28=2;
             int LA28_0 = input.LA(1);
 
@@ -5301,9 +5370,9 @@
             }
             switch (alt28) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1935:2: (kw= '-' )? this_INT_1= RULE_INT
+                    // InternalChartDSL.g:1869:3: (kw= '-' )? this_INT_1= RULE_INT
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1935:2: (kw= '-' )?
+                    // InternalChartDSL.g:1869:3: (kw= '-' )?
                     int alt27=2;
                     int LA27_0 = input.LA(1);
 
@@ -5312,14 +5381,14 @@
                     }
                     switch (alt27) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1936:2: kw= '-'
+                            // InternalChartDSL.g:1870:4: kw= '-'
                             {
-                            kw=(Token)match(input,63,FOLLOW_63_in_ruleSignedNumber4752); if (state.failed) return current;
+                            kw=(Token)match(input,63,FOLLOW_12); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
-                                      current.merge(kw);
-                                      newLeafNode(kw, grammarAccess.getSignedNumberAccess().getHyphenMinusKeyword_0()); 
-                                  
+                              				current.merge(kw);
+                              				newLeafNode(kw, grammarAccess.getSignedNumberAccess().getHyphenMinusKeyword_0());
+                              			
                             }
 
                             }
@@ -5327,16 +5396,16 @@
 
                     }
 
-                    this_INT_1=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleSignedNumber4769); if (state.failed) return current;
+                    this_INT_1=(Token)match(input,RULE_INT,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      		current.merge(this_INT_1);
-                          
+                      			current.merge(this_INT_1);
+                      		
                     }
                     if ( state.backtracking==0 ) {
-                       
-                          newLeafNode(this_INT_1, grammarAccess.getSignedNumberAccess().getINTTerminalRuleCall_1()); 
-                          
+
+                      			newLeafNode(this_INT_1, grammarAccess.getSignedNumberAccess().getINTTerminalRuleCall_1());
+                      		
                     }
 
                     }
@@ -5348,14 +5417,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -5363,139 +5434,8 @@
     // $ANTLR end "ruleSignedNumber"
 
 
-    // $ANTLR start "entryRuleChartQualifiedNameWithWildCard"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1956:1: entryRuleChartQualifiedNameWithWildCard returns [String current=null] : iv_ruleChartQualifiedNameWithWildCard= ruleChartQualifiedNameWithWildCard EOF ;
-    public final String entryRuleChartQualifiedNameWithWildCard() throws RecognitionException {
-        String current = null;
-
-        AntlrDatatypeRuleToken iv_ruleChartQualifiedNameWithWildCard = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1957:2: (iv_ruleChartQualifiedNameWithWildCard= ruleChartQualifiedNameWithWildCard EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1958:2: iv_ruleChartQualifiedNameWithWildCard= ruleChartQualifiedNameWithWildCard EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getChartQualifiedNameWithWildCardRule()); 
-            }
-            pushFollow(FOLLOW_ruleChartQualifiedNameWithWildCard_in_entryRuleChartQualifiedNameWithWildCard4816);
-            iv_ruleChartQualifiedNameWithWildCard=ruleChartQualifiedNameWithWildCard();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleChartQualifiedNameWithWildCard.getText(); 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleChartQualifiedNameWithWildCard4827); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleChartQualifiedNameWithWildCard"
-
-
-    // $ANTLR start "ruleChartQualifiedNameWithWildCard"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1965:1: ruleChartQualifiedNameWithWildCard returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? ) ;
-    public final AntlrDatatypeRuleToken ruleChartQualifiedNameWithWildCard() throws RecognitionException {
-        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
-
-        Token kw=null;
-        AntlrDatatypeRuleToken this_QualifiedName_0 = null;
-
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1968:28: ( (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1969:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? )
-            {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1969:1: (this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )? )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1970:5: this_QualifiedName_0= ruleQualifiedName (kw= '.' kw= '*' )?
-            {
-            if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getChartQualifiedNameWithWildCardAccess().getQualifiedNameParserRuleCall_0()); 
-                  
-            }
-            pushFollow(FOLLOW_ruleQualifiedName_in_ruleChartQualifiedNameWithWildCard4874);
-            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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1980:1: (kw= '.' kw= '*' )?
-            int alt29=2;
-            int LA29_0 = input.LA(1);
-
-            if ( (LA29_0==64) ) {
-                alt29=1;
-            }
-            switch (alt29) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:1981:2: kw= '.' kw= '*'
-                    {
-                    kw=(Token)match(input,64,FOLLOW_64_in_ruleChartQualifiedNameWithWildCard4893); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getChartQualifiedNameWithWildCardAccess().getFullStopKeyword_1_0()); 
-                          
-                    }
-                    kw=(Token)match(input,65,FOLLOW_65_in_ruleChartQualifiedNameWithWildCard4906); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getChartQualifiedNameWithWildCardAccess().getAsteriskKeyword_1_1()); 
-                          
-                    }
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleChartQualifiedNameWithWildCard"
-
-
     // $ANTLR start "entryRuleTRANSLATABLESTRING"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2000:1: entryRuleTRANSLATABLESTRING returns [String current=null] : iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF ;
+    // InternalChartDSL.g:1887:1: entryRuleTRANSLATABLESTRING returns [String current=null] : iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF ;
     public final String entryRuleTRANSLATABLESTRING() throws RecognitionException {
         String current = null;
 
@@ -5503,13 +5443,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2001:2: (iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2002:2: iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF
+            // InternalChartDSL.g:1887:58: (iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF )
+            // InternalChartDSL.g:1888:2: iv_ruleTRANSLATABLESTRING= ruleTRANSLATABLESTRING EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTRANSLATABLESTRINGRule()); 
             }
-            pushFollow(FOLLOW_ruleTRANSLATABLESTRING_in_entryRuleTRANSLATABLESTRING4949);
+            pushFollow(FOLLOW_1);
             iv_ruleTRANSLATABLESTRING=ruleTRANSLATABLESTRING();
 
             state._fsp--;
@@ -5517,16 +5457,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTRANSLATABLESTRING.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleTRANSLATABLESTRING4960); 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;
@@ -5535,41 +5475,44 @@
 
 
     // $ANTLR start "ruleTRANSLATABLESTRING"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2009:1: ruleTRANSLATABLESTRING returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_STRING_0= RULE_STRING ;
+    // InternalChartDSL.g:1894: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2012:28: (this_STRING_0= RULE_STRING )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2013:5: this_STRING_0= RULE_STRING
+            // InternalChartDSL.g:1900:2: (this_STRING_0= RULE_STRING )
+            // InternalChartDSL.g:1901:2: this_STRING_0= RULE_STRING
             {
-            this_STRING_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleTRANSLATABLESTRING4999); 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;
@@ -5578,7 +5521,7 @@
 
 
     // $ANTLR start "entryRuleTRANSLATABLEID"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2028:1: entryRuleTRANSLATABLEID returns [String current=null] : iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF ;
+    // InternalChartDSL.g:1911:1: entryRuleTRANSLATABLEID returns [String current=null] : iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF ;
     public final String entryRuleTRANSLATABLEID() throws RecognitionException {
         String current = null;
 
@@ -5586,13 +5529,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2029:2: (iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2030:2: iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF
+            // InternalChartDSL.g:1911:54: (iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF )
+            // InternalChartDSL.g:1912:2: iv_ruleTRANSLATABLEID= ruleTRANSLATABLEID EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getTRANSLATABLEIDRule()); 
             }
-            pushFollow(FOLLOW_ruleTRANSLATABLEID_in_entryRuleTRANSLATABLEID5044);
+            pushFollow(FOLLOW_1);
             iv_ruleTRANSLATABLEID=ruleTRANSLATABLEID();
 
             state._fsp--;
@@ -5600,16 +5543,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleTRANSLATABLEID.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleTRANSLATABLEID5055); 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;
@@ -5618,41 +5561,44 @@
 
 
     // $ANTLR start "ruleTRANSLATABLEID"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2037:1: ruleTRANSLATABLEID returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : this_ID_0= RULE_ID ;
+    // InternalChartDSL.g:1918: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2040:28: (this_ID_0= RULE_ID )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2041:5: this_ID_0= RULE_ID
+            // InternalChartDSL.g:1924:2: (this_ID_0= RULE_ID )
+            // InternalChartDSL.g:1925:2: this_ID_0= RULE_ID
             {
-            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTRANSLATABLEID5094); 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;
@@ -5660,8 +5606,506 @@
     // $ANTLR end "ruleTRANSLATABLEID"
 
 
+    // $ANTLR start "entryRuleXImportDeclaration"
+    // InternalChartDSL.g:1935:1: entryRuleXImportDeclaration returns [EObject current=null] : iv_ruleXImportDeclaration= ruleXImportDeclaration EOF ;
+    public final EObject entryRuleXImportDeclaration() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXImportDeclaration = null;
+
+
+        try {
+            // InternalChartDSL.g:1935:59: (iv_ruleXImportDeclaration= ruleXImportDeclaration EOF )
+            // InternalChartDSL.g:1936: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"
+    // InternalChartDSL.g:1942: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 {
+            // InternalChartDSL.g:1948: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= ';' )? ) )
+            // InternalChartDSL.g:1949: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= ';' )? )
+            {
+            // InternalChartDSL.g:1949: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= ';' )? )
+            // InternalChartDSL.g:1950: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= ';' )?
+            {
+            // InternalChartDSL.g:1950:3: ()
+            // InternalChartDSL.g:1951:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXImportDeclarationAccess().getOXImportDeclarationAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,64,FOLLOW_41); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXImportDeclarationAccess().getImportKeyword_1());
+              		
+            }
+            // InternalChartDSL.g:1961: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 alt31=4;
+            alt31 = dfa31.predict(input);
+            switch (alt31) {
+                case 1 :
+                    // InternalChartDSL.g:1962:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
+                    {
+                    // InternalChartDSL.g:1962:4: ( ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) ) )
+                    // InternalChartDSL.g:1963:5: ( (lv_static_2_0= 'static' ) ) ( (lv_extension_3_0= 'extension' ) )? ( ( ruleQualifiedNameInStaticImport ) ) ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
+                    {
+                    // InternalChartDSL.g:1963:5: ( (lv_static_2_0= 'static' ) )
+                    // InternalChartDSL.g:1964:6: (lv_static_2_0= 'static' )
+                    {
+                    // InternalChartDSL.g:1964:6: (lv_static_2_0= 'static' )
+                    // InternalChartDSL.g:1965:7: lv_static_2_0= 'static'
+                    {
+                    lv_static_2_0=(Token)match(input,65,FOLLOW_42); 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");
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalChartDSL.g:1977:5: ( (lv_extension_3_0= 'extension' ) )?
+                    int alt29=2;
+                    int LA29_0 = input.LA(1);
+
+                    if ( (LA29_0==66) ) {
+                        alt29=1;
+                    }
+                    switch (alt29) {
+                        case 1 :
+                            // InternalChartDSL.g:1978:6: (lv_extension_3_0= 'extension' )
+                            {
+                            // InternalChartDSL.g:1978:6: (lv_extension_3_0= 'extension' )
+                            // InternalChartDSL.g:1979:7: lv_extension_3_0= 'extension'
+                            {
+                            lv_extension_3_0=(Token)match(input,66,FOLLOW_42); 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;
+
+                    }
+
+                    // InternalChartDSL.g:1991:5: ( ( ruleQualifiedNameInStaticImport ) )
+                    // InternalChartDSL.g:1992:6: ( ruleQualifiedNameInStaticImport )
+                    {
+                    // InternalChartDSL.g:1992:6: ( ruleQualifiedNameInStaticImport )
+                    // InternalChartDSL.g:1993: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_43);
+                    ruleQualifiedNameInStaticImport();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							afterParserOrEnumRuleCall();
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalChartDSL.g:2007:5: ( ( (lv_wildcard_5_0= '*' ) ) | ( (lv_memberName_6_0= ruleValidID ) ) )
+                    int alt30=2;
+                    int LA30_0 = input.LA(1);
+
+                    if ( (LA30_0==67) ) {
+                        alt30=1;
+                    }
+                    else if ( (LA30_0==RULE_ID) ) {
+                        alt30=2;
+                    }
+                    else {
+                        if (state.backtracking>0) {state.failed=true; return current;}
+                        NoViableAltException nvae =
+                            new NoViableAltException("", 30, 0, input);
+
+                        throw nvae;
+                    }
+                    switch (alt30) {
+                        case 1 :
+                            // InternalChartDSL.g:2008:6: ( (lv_wildcard_5_0= '*' ) )
+                            {
+                            // InternalChartDSL.g:2008:6: ( (lv_wildcard_5_0= '*' ) )
+                            // InternalChartDSL.g:2009:7: (lv_wildcard_5_0= '*' )
+                            {
+                            // InternalChartDSL.g:2009:7: (lv_wildcard_5_0= '*' )
+                            // InternalChartDSL.g:2010:8: lv_wildcard_5_0= '*'
+                            {
+                            lv_wildcard_5_0=(Token)match(input,67,FOLLOW_44); 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 :
+                            // InternalChartDSL.g:2023:6: ( (lv_memberName_6_0= ruleValidID ) )
+                            {
+                            // InternalChartDSL.g:2023:6: ( (lv_memberName_6_0= ruleValidID ) )
+                            // InternalChartDSL.g:2024:7: (lv_memberName_6_0= ruleValidID )
+                            {
+                            // InternalChartDSL.g:2024:7: (lv_memberName_6_0= ruleValidID )
+                            // InternalChartDSL.g:2025:8: lv_memberName_6_0= ruleValidID
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								newCompositeNode(grammarAccess.getXImportDeclarationAccess().getMemberNameValidIDParserRuleCall_2_0_3_1_0());
+                              							
+                            }
+                            pushFollow(FOLLOW_44);
+                            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 :
+                    // InternalChartDSL.g:2045:4: ( ( ruleQualifiedName ) )
+                    {
+                    // InternalChartDSL.g:2045:4: ( ( ruleQualifiedName ) )
+                    // InternalChartDSL.g:2046:5: ( ruleQualifiedName )
+                    {
+                    // InternalChartDSL.g:2046:5: ( ruleQualifiedName )
+                    // InternalChartDSL.g:2047: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_44);
+                    ruleQualifiedName();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalChartDSL.g:2062:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
+                    {
+                    // InternalChartDSL.g:2062:4: ( (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard ) )
+                    // InternalChartDSL.g:2063:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
+                    {
+                    // InternalChartDSL.g:2063:5: (lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard )
+                    // InternalChartDSL.g:2064:6: lv_importedNamespace_8_0= ruleQualifiedNameWithWildcard
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedNamespaceQualifiedNameWithWildcardParserRuleCall_2_2_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_44);
+                    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 :
+                    // InternalChartDSL.g:2082:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
+                    {
+                    // InternalChartDSL.g:2082:4: ( ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) ) )
+                    // InternalChartDSL.g:2083:5: ( (lv_fqnImport_9_0= 'ns' ) ) ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
+                    {
+                    // InternalChartDSL.g:2083:5: ( (lv_fqnImport_9_0= 'ns' ) )
+                    // InternalChartDSL.g:2084:6: (lv_fqnImport_9_0= 'ns' )
+                    {
+                    // InternalChartDSL.g:2084:6: (lv_fqnImport_9_0= 'ns' )
+                    // InternalChartDSL.g:2085:7: lv_fqnImport_9_0= 'ns'
+                    {
+                    lv_fqnImport_9_0=(Token)match(input,68,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");
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalChartDSL.g:2097:5: ( (lv_importedFullyQualifiedName_10_0= ruleQualifiedName ) )
+                    // InternalChartDSL.g:2098:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
+                    {
+                    // InternalChartDSL.g:2098:6: (lv_importedFullyQualifiedName_10_0= ruleQualifiedName )
+                    // InternalChartDSL.g:2099:7: lv_importedFullyQualifiedName_10_0= ruleQualifiedName
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getXImportDeclarationAccess().getImportedFullyQualifiedNameQualifiedNameParserRuleCall_2_3_1_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_44);
+                    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;
+
+            }
+
+            // InternalChartDSL.g:2118:3: (otherlv_11= ';' )?
+            int alt32=2;
+            int LA32_0 = input.LA(1);
+
+            if ( (LA32_0==69) ) {
+                alt32=1;
+            }
+            switch (alt32) {
+                case 1 :
+                    // InternalChartDSL.g:2119:4: otherlv_11= ';'
+                    {
+                    otherlv_11=(Token)match(input,69,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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2056:1: entryRuleXAnnotation returns [EObject current=null] : iv_ruleXAnnotation= ruleXAnnotation EOF ;
+    // InternalChartDSL.g:2128:1: entryRuleXAnnotation returns [EObject current=null] : iv_ruleXAnnotation= ruleXAnnotation EOF ;
     public final EObject entryRuleXAnnotation() throws RecognitionException {
         EObject current = null;
 
@@ -5669,13 +6113,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2057:2: (iv_ruleXAnnotation= ruleXAnnotation EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2058:2: iv_ruleXAnnotation= ruleXAnnotation EOF
+            // InternalChartDSL.g:2128:52: (iv_ruleXAnnotation= ruleXAnnotation EOF )
+            // InternalChartDSL.g:2129:2: iv_ruleXAnnotation= ruleXAnnotation EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationRule()); 
             }
-            pushFollow(FOLLOW_ruleXAnnotation_in_entryRuleXAnnotation5138);
+            pushFollow(FOLLOW_1);
             iv_ruleXAnnotation=ruleXAnnotation();
 
             state._fsp--;
@@ -5683,16 +6127,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAnnotation; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotation5148); 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;
@@ -5701,7 +6145,7 @@
 
 
     // $ANTLR start "ruleXAnnotation"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2065: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= ')' )? ) ;
+    // InternalChartDSL.g:2135: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;
 
@@ -5716,61 +6160,62 @@
         EObject lv_value_7_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2068: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2069: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= ')' )? )
+            // InternalChartDSL.g:2141: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= ')' )? ) )
+            // InternalChartDSL.g:2142: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2069: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2069: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= ')' )?
+            // InternalChartDSL.g:2142: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= ')' )? )
+            // InternalChartDSL.g:2143: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2069:2: ()
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2070:5: 
+            // InternalChartDSL.g:2143:3: ()
+            // InternalChartDSL.g:2144:4: 
             {
             if ( state.backtracking==0 ) {
 
-                      current = forceCreateModelElement(
-                          grammarAccess.getXAnnotationAccess().getXAnnotationAction_0(),
-                          current);
-                  
+              				current = forceCreateModelElement(
+              					grammarAccess.getXAnnotationAccess().getXAnnotationAction_0(),
+              					current);
+              			
             }
 
             }
 
-            otherlv_1=(Token)match(input,66,FOLLOW_66_in_ruleXAnnotation5194); if (state.failed) return current;
+            otherlv_1=(Token)match(input,70,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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2079:1: ( ( ruleQualifiedName ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2080:1: ( ruleQualifiedName )
+            // InternalChartDSL.g:2154:3: ( ( ruleQualifiedName ) )
+            // InternalChartDSL.g:2155:4: ( ruleQualifiedName )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2080:1: ( ruleQualifiedName )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2081:3: ruleQualifiedName
+            // InternalChartDSL.g:2155:4: ( ruleQualifiedName )
+            // InternalChartDSL.g:2156: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_ruleXAnnotation5217);
+            pushFollow(FOLLOW_45);
             ruleQualifiedName();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-              	        afterParserOrEnumRuleCall();
-              	    
+
+              					afterParserOrEnumRuleCall();
+              				
             }
 
             }
@@ -5778,67 +6223,67 @@
 
             }
 
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2094: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 alt32=2;
-            int LA32_0 = input.LA(1);
+            // InternalChartDSL.g:2170: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 alt35=2;
+            int LA35_0 = input.LA(1);
 
-            if ( (LA32_0==67) && (synpred1_InternalChartDSL())) {
-                alt32=1;
+            if ( (LA35_0==71) && (synpred1_InternalChartDSL())) {
+                alt35=1;
             }
-            switch (alt32) {
+            switch (alt35) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2094:3: ( ( '(' )=>otherlv_3= '(' ) ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )? otherlv_8= ')'
+                    // InternalChartDSL.g:2171: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2094:3: ( ( '(' )=>otherlv_3= '(' )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2094:4: ( '(' )=>otherlv_3= '('
+                    // InternalChartDSL.g:2171:4: ( ( '(' )=>otherlv_3= '(' )
+                    // InternalChartDSL.g:2172:5: ( '(' )=>otherlv_3= '('
                     {
-                    otherlv_3=(Token)match(input,67,FOLLOW_67_in_ruleXAnnotation5238); if (state.failed) return current;
+                    otherlv_3=(Token)match(input,71,FOLLOW_46); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2099:2: ( ( ( ( ( ( ( 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) {
+                    // InternalChartDSL.g:2178:4: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* ) | ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) ) )?
+                    int alt34=3;
+                    alt34 = dfa34.predict(input);
+                    switch (alt34) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2099:3: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            // InternalChartDSL.g:2179:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
                             {
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2099:3: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2099:4: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
+                            // InternalChartDSL.g:2179:5: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )* )
+                            // InternalChartDSL.g:2180:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) ) (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
                             {
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2099:4: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) )
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2099:5: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            // InternalChartDSL.g:2180:6: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair ) )
+                            // InternalChartDSL.g:2181:7: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
                             {
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2105:1: (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2106:3: lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair
+                            // InternalChartDSL.g:2190:7: (lv_elementValuePairs_4_0= ruleXAnnotationElementValuePair )
+                            // InternalChartDSL.g:2191: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_ruleXAnnotation5282);
+                            pushFollow(FOLLOW_47);
                             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();
+                              							
                             }
 
                             }
@@ -5846,529 +6291,55 @@
 
                             }
 
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2122:2: (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
-                            loop30:
-                            do {
-                                int alt30=2;
-                                int LA30_0 = input.LA(1);
-
-                                if ( (LA30_0==68) ) {
-                                    alt30=1;
-                                }
-
-
-                                switch (alt30) {
-                            	case 1 :
-                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2122:4: otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
-                            	    {
-                            	    otherlv_5=(Token)match(input,68,FOLLOW_68_in_ruleXAnnotation5295); if (state.failed) return current;
-                            	    if ( state.backtracking==0 ) {
-
-                            	          	newLeafNode(otherlv_5, grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0());
-                            	          
-                            	    }
-                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2126:1: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
-                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2126:2: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
-                            	    {
-                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2132:1: (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
-                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2133:3: lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair
-                            	    {
-                            	    if ( state.backtracking==0 ) {
-                            	       
-                            	      	        newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0()); 
-                            	      	    
-                            	    }
-                            	    pushFollow(FOLLOW_ruleXAnnotationElementValuePair_in_ruleXAnnotation5336);
-                            	    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();
-                            	      	    
-                            	    }
-
-                            	    }
-
-
-                            	    }
-
-
-                            	    }
-                            	    break;
-
-                            	default :
-                            	    break loop30;
-                                }
-                            } while (true);
-
-
-                            }
-
-
-                            }
-                            break;
-                        case 2 :
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2150:6: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
-                            {
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2150:6: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2151:1: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
-                            {
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2151:1: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2152:3: lv_value_7_0= ruleXAnnotationElementValueOrCommaList
-                            {
-                            if ( state.backtracking==0 ) {
-                               
-                              	        newCompositeNode(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0()); 
-                              	    
-                            }
-                            pushFollow(FOLLOW_ruleXAnnotationElementValueOrCommaList_in_ruleXAnnotation5366);
-                            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();
-                              	    
-                            }
-
-                            }
-
-
-                            }
-
-
-                            }
-                            break;
-
-                    }
-
-                    otherlv_8=(Token)match(input,69,FOLLOW_69_in_ruleXAnnotation5380); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                          	newLeafNode(otherlv_8, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2());
-                          
-                    }
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleXAnnotation"
-
-
-    // $ANTLR start "entryRuleXAnnotationElementValuePair"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2180:1: entryRuleXAnnotationElementValuePair returns [EObject current=null] : iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF ;
-    public final EObject entryRuleXAnnotationElementValuePair() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleXAnnotationElementValuePair = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2181:2: (iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2182:2: iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXAnnotationElementValuePairRule()); 
-            }
-            pushFollow(FOLLOW_ruleXAnnotationElementValuePair_in_entryRuleXAnnotationElementValuePair5418);
-            iv_ruleXAnnotationElementValuePair=ruleXAnnotationElementValuePair();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleXAnnotationElementValuePair; 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValuePair5428); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleXAnnotationElementValuePair"
-
-
-    // $ANTLR start "ruleXAnnotationElementValuePair"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2189:1: ruleXAnnotationElementValuePair returns [EObject current=null] : ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) ;
-    public final EObject ruleXAnnotationElementValuePair() throws RecognitionException {
-        EObject current = null;
-
-        Token otherlv_1=null;
-        EObject lv_value_2_0 = null;
-
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2192:28: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2193:1: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
-            {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2193:1: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2193:2: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) )
-            {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2193:2: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2193:3: ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' )
-            {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2198:5: ( ( ( ruleValidID ) ) otherlv_1= '=' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2198:6: ( ( ruleValidID ) ) otherlv_1= '='
-            {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2198:6: ( ( ruleValidID ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2199:1: ( ruleValidID )
-            {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2199:1: ( ruleValidID )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2200:3: ruleValidID
-            {
-            if ( state.backtracking==0 ) {
-
-              			if (current==null) {
-              	            current = createModelElement(grammarAccess.getXAnnotationElementValuePairRule());
-              	        }
-                      
-            }
-            if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0()); 
-              	    
-            }
-            pushFollow(FOLLOW_ruleValidID_in_ruleXAnnotationElementValuePair5498);
-            ruleValidID();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               
-              	        afterParserOrEnumRuleCall();
-              	    
-            }
-
-            }
-
-
-            }
-
-            otherlv_1=(Token)match(input,70,FOLLOW_70_in_ruleXAnnotationElementValuePair5510); if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-
-                  	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1());
-                  
-            }
-
-            }
-
-
-            }
-
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2217:3: ( (lv_value_2_0= ruleXAnnotationElementValue ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2218:1: (lv_value_2_0= ruleXAnnotationElementValue )
-            {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2218:1: (lv_value_2_0= ruleXAnnotationElementValue )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2219:3: lv_value_2_0= ruleXAnnotationElementValue
-            {
-            if ( state.backtracking==0 ) {
-               
-              	        newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0()); 
-              	    
-            }
-            pushFollow(FOLLOW_ruleXAnnotationElementValue_in_ruleXAnnotationElementValuePair5533);
-            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 ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleXAnnotationElementValuePair"
-
-
-    // $ANTLR start "entryRuleXAnnotationElementValueOrCommaList"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2243:1: entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] : iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF ;
-    public final EObject entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleXAnnotationElementValueOrCommaList = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2244:2: (iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2245:2: iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
-            }
-            pushFollow(FOLLOW_ruleXAnnotationElementValueOrCommaList_in_entryRuleXAnnotationElementValueOrCommaList5569);
-            iv_ruleXAnnotationElementValueOrCommaList=ruleXAnnotationElementValueOrCommaList();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleXAnnotationElementValueOrCommaList; 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValueOrCommaList5579); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleXAnnotationElementValueOrCommaList"
-
-
-    // $ANTLR start "ruleXAnnotationElementValueOrCommaList"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2252: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;
-
-        Token otherlv_1=null;
-        Token otherlv_2=null;
-        Token otherlv_4=null;
-        Token otherlv_6=null;
-        Token otherlv_9=null;
-        EObject lv_elements_3_0 = null;
-
-        EObject lv_elements_5_0 = null;
-
-        EObject this_XAnnotationOrExpression_7 = null;
-
-        EObject lv_elements_10_0 = null;
-
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2255: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2256: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 ) ) )+ )? ) )
-            {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2256: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 alt37=2;
-            alt37 = dfa37.predict(input);
-            switch (alt37) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2256:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
-                    {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2256:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2256:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
-                    {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2256:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2256:4: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
-                    {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2259:5: ( () otherlv_1= '#' otherlv_2= '[' )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2259:6: () otherlv_1= '#' otherlv_2= '['
-                    {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2259:6: ()
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2260:5: 
-                    {
-                    if ( state.backtracking==0 ) {
-
-                              current = forceCreateModelElement(
-                                  grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0(),
-                                  current);
-                          
-                    }
-
-                    }
-
-                    otherlv_1=(Token)match(input,71,FOLLOW_71_in_ruleXAnnotationElementValueOrCommaList5644); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                          	newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
-                          
-                    }
-                    otherlv_2=(Token)match(input,72,FOLLOW_72_in_ruleXAnnotationElementValueOrCommaList5656); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                          	newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
-                          
-                    }
-
-                    }
-
-
-                    }
-
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2273:3: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
-                    int alt34=2;
-                    int LA34_0 = input.LA(1);
-
-                    if ( ((LA34_0>=RULE_INT && LA34_0<=RULE_DECIMAL)||LA34_0==14||(LA34_0>=62 && LA34_0<=63)||(LA34_0>=66 && LA34_0<=67)||(LA34_0>=71 && LA34_0<=72)||LA34_0==79||LA34_0==95||LA34_0==99||LA34_0==106||LA34_0==108||(LA34_0>=112 && LA34_0<=114)||(LA34_0>=117 && LA34_0<=128)||LA34_0==130) ) {
-                        alt34=1;
-                    }
-                    switch (alt34) {
-                        case 1 :
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2273:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
-                            {
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2273:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2274:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
-                            {
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2274:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2275:3: lv_elements_3_0= ruleXAnnotationOrExpression
-                            {
-                            if ( state.backtracking==0 ) {
-                               
-                              	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0()); 
-                              	    
-                            }
-                            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList5680);
-                            lv_elements_3_0=ruleXAnnotationOrExpression();
-
-                            state._fsp--;
-                            if (state.failed) return current;
-                            if ( state.backtracking==0 ) {
-
-                              	        if (current==null) {
-                              	            current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
-                              	        }
-                                     		add(
-                                     			current, 
-                                     			"elements",
-                                      		lv_elements_3_0, 
-                                      		"XAnnotationOrExpression");
-                              	        afterParserOrEnumRuleCall();
-                              	    
-                            }
-
-                            }
-
-
-                            }
-
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2291:2: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            // InternalChartDSL.g:2208:6: (otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) ) )*
                             loop33:
                             do {
                                 int alt33=2;
                                 int LA33_0 = input.LA(1);
 
-                                if ( (LA33_0==68) ) {
+                                if ( (LA33_0==72) ) {
                                     alt33=1;
                                 }
 
 
                                 switch (alt33) {
                             	case 1 :
-                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2291:4: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalChartDSL.g:2209:7: otherlv_5= ',' ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
                             	    {
-                            	    otherlv_4=(Token)match(input,68,FOLLOW_68_in_ruleXAnnotationElementValueOrCommaList5693); if (state.failed) return current;
+                            	    otherlv_5=(Token)match(input,72,FOLLOW_4); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
-                            	          	newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
-                            	          
+                            	      							newLeafNode(otherlv_5, grammarAccess.getXAnnotationAccess().getCommaKeyword_3_1_0_1_0());
+                            	      						
                             	    }
-                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2295:1: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
-                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2296:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalChartDSL.g:2213:7: ( ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair ) )
+                            	    // InternalChartDSL.g:2214:8: ( ( ( ( ruleValidID ) ) '=' ) )=> (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
                             	    {
-                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2296:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
-                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2297:3: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    // InternalChartDSL.g:2223:8: (lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair )
+                            	    // InternalChartDSL.g:2224:9: lv_elementValuePairs_6_0= ruleXAnnotationElementValuePair
                             	    {
                             	    if ( state.backtracking==0 ) {
-                            	       
-                            	      	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0()); 
-                            	      	    
+
+                            	      									newCompositeNode(grammarAccess.getXAnnotationAccess().getElementValuePairsXAnnotationElementValuePairParserRuleCall_3_1_0_1_1_0());
+                            	      								
                             	    }
-                            	    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList5714);
-                            	    lv_elements_5_0=ruleXAnnotationOrExpression();
+                            	    pushFollow(FOLLOW_47);
+                            	    lv_elementValuePairs_6_0=ruleXAnnotationElementValuePair();
 
                             	    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.getXAnnotationRule());
+                            	      									}
+                            	      									add(
+                            	      										current,
+                            	      										"elementValuePairs",
+                            	      										lv_elementValuePairs_6_0,
+                            	      										"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationElementValuePair");
+                            	      									afterParserOrEnumRuleCall();
+                            	      								
                             	    }
 
                             	    }
@@ -6387,118 +6358,468 @@
 
 
                             }
+
+
+                            }
+                            break;
+                        case 2 :
+                            // InternalChartDSL.g:2244:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            {
+                            // InternalChartDSL.g:2244:5: ( (lv_value_7_0= ruleXAnnotationElementValueOrCommaList ) )
+                            // InternalChartDSL.g:2245:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            {
+                            // InternalChartDSL.g:2245:6: (lv_value_7_0= ruleXAnnotationElementValueOrCommaList )
+                            // InternalChartDSL.g:2246:7: lv_value_7_0= ruleXAnnotationElementValueOrCommaList
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              							newCompositeNode(grammarAccess.getXAnnotationAccess().getValueXAnnotationElementValueOrCommaListParserRuleCall_3_1_1_0());
+                              						
+                            }
+                            pushFollow(FOLLOW_48);
+                            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,
+                              								"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationElementValueOrCommaList");
+                              							afterParserOrEnumRuleCall();
+                              						
+                            }
+
+                            }
+
+
+                            }
+
+
+                            }
                             break;
 
                     }
 
-                    otherlv_6=(Token)match(input,73,FOLLOW_73_in_ruleXAnnotationElementValueOrCommaList5730); if (state.failed) return current;
+                    otherlv_8=(Token)match(input,73,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                          	newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
-                          
+                      				newLeafNode(otherlv_8, grammarAccess.getXAnnotationAccess().getRightParenthesisKeyword_3_2());
+                      			
                     }
 
                     }
-
-
-                    }
                     break;
-                case 2 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2318:6: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAnnotation"
+
+
+    // $ANTLR start "entryRuleXAnnotationElementValuePair"
+    // InternalChartDSL.g:2273:1: entryRuleXAnnotationElementValuePair returns [EObject current=null] : iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF ;
+    public final EObject entryRuleXAnnotationElementValuePair() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAnnotationElementValuePair = null;
+
+
+        try {
+            // InternalChartDSL.g:2273:68: (iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF )
+            // InternalChartDSL.g:2274:2: iv_ruleXAnnotationElementValuePair= ruleXAnnotationElementValuePair EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAnnotationElementValuePairRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXAnnotationElementValuePair=ruleXAnnotationElementValuePair();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAnnotationElementValuePair; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValuePair"
+
+
+    // $ANTLR start "ruleXAnnotationElementValuePair"
+    // InternalChartDSL.g:2280:1: ruleXAnnotationElementValuePair returns [EObject current=null] : ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) ;
+    public final EObject ruleXAnnotationElementValuePair() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+        EObject lv_value_2_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalChartDSL.g:2286:2: ( ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) ) )
+            // InternalChartDSL.g:2287:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            {
+            // InternalChartDSL.g:2287:2: ( ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) ) )
+            // InternalChartDSL.g:2288:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) ) ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            {
+            // InternalChartDSL.g:2288:3: ( ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' ) )
+            // InternalChartDSL.g:2289:4: ( ( ( ( ruleValidID ) ) '=' ) )=> ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            {
+            // InternalChartDSL.g:2298:4: ( ( ( ruleValidID ) ) otherlv_1= '=' )
+            // InternalChartDSL.g:2299:5: ( ( ruleValidID ) ) otherlv_1= '='
+            {
+            // InternalChartDSL.g:2299:5: ( ( ruleValidID ) )
+            // InternalChartDSL.g:2300:6: ( ruleValidID )
+            {
+            // InternalChartDSL.g:2300:6: ( ruleValidID )
+            // InternalChartDSL.g:2301:7: ruleValidID
+            {
+            if ( state.backtracking==0 ) {
+
+              							if (current==null) {
+              								current = createModelElement(grammarAccess.getXAnnotationElementValuePairRule());
+              							}
+              						
+            }
+            if ( state.backtracking==0 ) {
+
+              							newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getElementJvmOperationCrossReference_0_0_0_0());
+              						
+            }
+            pushFollow(FOLLOW_49);
+            ruleValidID();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              							afterParserOrEnumRuleCall();
+              						
+            }
+
+            }
+
+
+            }
+
+            otherlv_1=(Token)match(input,74,FOLLOW_50); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValuePairAccess().getEqualsSignKeyword_0_0_1());
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalChartDSL.g:2321:3: ( (lv_value_2_0= ruleXAnnotationElementValue ) )
+            // InternalChartDSL.g:2322:4: (lv_value_2_0= ruleXAnnotationElementValue )
+            {
+            // InternalChartDSL.g:2322:4: (lv_value_2_0= ruleXAnnotationElementValue )
+            // InternalChartDSL.g:2323:5: lv_value_2_0= ruleXAnnotationElementValue
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXAnnotationElementValuePairAccess().getValueXAnnotationElementValueParserRuleCall_1_0());
+              				
+            }
+            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,
+              						"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationElementValue");
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAnnotationElementValuePair"
+
+
+    // $ANTLR start "entryRuleXAnnotationElementValueOrCommaList"
+    // InternalChartDSL.g:2344:1: entryRuleXAnnotationElementValueOrCommaList returns [EObject current=null] : iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF ;
+    public final EObject entryRuleXAnnotationElementValueOrCommaList() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAnnotationElementValueOrCommaList = null;
+
+
+        try {
+            // InternalChartDSL.g:2344:75: (iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF )
+            // InternalChartDSL.g:2345:2: iv_ruleXAnnotationElementValueOrCommaList= ruleXAnnotationElementValueOrCommaList EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXAnnotationElementValueOrCommaList=ruleXAnnotationElementValueOrCommaList();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAnnotationElementValueOrCommaList; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAnnotationElementValueOrCommaList"
+
+
+    // $ANTLR start "ruleXAnnotationElementValueOrCommaList"
+    // InternalChartDSL.g:2351: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;
+
+        Token otherlv_1=null;
+        Token otherlv_2=null;
+        Token otherlv_4=null;
+        Token otherlv_6=null;
+        Token otherlv_9=null;
+        EObject lv_elements_3_0 = null;
+
+        EObject lv_elements_5_0 = null;
+
+        EObject this_XAnnotationOrExpression_7 = null;
+
+        EObject lv_elements_10_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalChartDSL.g:2357: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 ) ) )+ )? ) ) )
+            // InternalChartDSL.g:2358: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 ) ) )+ )? ) )
+            {
+            // InternalChartDSL.g:2358: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 alt40=2;
+            alt40 = dfa40.predict(input);
+            switch (alt40) {
+                case 1 :
+                    // InternalChartDSL.g:2359:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2318:6: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2319:5: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    // InternalChartDSL.g:2359:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalChartDSL.g:2360:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    {
+                    // InternalChartDSL.g:2360:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // InternalChartDSL.g:2361:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    {
+                    // InternalChartDSL.g:2368:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalChartDSL.g:2369:6: () otherlv_1= '#' otherlv_2= '['
+                    {
+                    // InternalChartDSL.g:2369:6: ()
+                    // InternalChartDSL.g:2370:7: 
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0()); 
-                          
-                    }
-                    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList5760);
-                    this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression();
 
-                    state._fsp--;
-                    if (state.failed) return current;
+                      							current = forceCreateModelElement(
+                      								grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralAction_0_0_0_0(),
+                      								current);
+                      						
+                    }
+
+                    }
+
+                    otherlv_1=(Token)match(input,75,FOLLOW_51); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_XAnnotationOrExpression_7; 
-                              afterParserOrEnumRuleCall();
-                          
-                    }
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2327:1: ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
-                    int alt36=2;
-                    int LA36_0 = input.LA(1);
 
-                    if ( (LA36_0==68) ) {
-                        alt36=1;
+                      						newLeafNode(otherlv_1, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getNumberSignKeyword_0_0_0_1());
+                      					
                     }
-                    switch (alt36) {
+                    otherlv_2=(Token)match(input,76,FOLLOW_52); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						newLeafNode(otherlv_2, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getLeftSquareBracketKeyword_0_0_0_2());
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalChartDSL.g:2386:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    int alt37=2;
+                    int LA37_0 = input.LA(1);
+
+                    if ( ((LA37_0>=RULE_INT && LA37_0<=RULE_DECIMAL)||LA37_0==14||(LA37_0>=63 && LA37_0<=66)||(LA37_0>=70 && LA37_0<=71)||(LA37_0>=75 && LA37_0<=76)||LA37_0==83||LA37_0==99||LA37_0==103||LA37_0==110||LA37_0==112||(LA37_0>=116 && LA37_0<=118)||(LA37_0>=121 && LA37_0<=130)||LA37_0==132) ) {
+                        alt37=1;
+                    }
+                    switch (alt37) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2327:2: () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            // InternalChartDSL.g:2387:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                             {
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2327:2: ()
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2328:5: 
+                            // InternalChartDSL.g:2387:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // InternalChartDSL.g:2388:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            {
+                            // InternalChartDSL.g:2388:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalChartDSL.g:2389:7: lv_elements_3_0= ruleXAnnotationOrExpression
                             {
                             if ( state.backtracking==0 ) {
 
-                                      current = forceCreateModelElementAndAdd(
-                                          grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0(),
-                                          current);
-                                  
+                              							newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_0_0());
+                              						
+                            }
+                            pushFollow(FOLLOW_53);
+                            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,
+                              								"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+                              							afterParserOrEnumRuleCall();
+                              						
                             }
 
                             }
 
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2333:2: (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
-                            int cnt35=0;
-                            loop35:
+
+                            }
+
+                            // InternalChartDSL.g:2406:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            loop36:
                             do {
-                                int alt35=2;
-                                int LA35_0 = input.LA(1);
+                                int alt36=2;
+                                int LA36_0 = input.LA(1);
 
-                                if ( (LA35_0==68) ) {
-                                    alt35=1;
+                                if ( (LA36_0==72) ) {
+                                    alt36=1;
                                 }
 
 
-                                switch (alt35) {
+                                switch (alt36) {
                             	case 1 :
-                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2333:4: otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalChartDSL.g:2407:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
                             	    {
-                            	    otherlv_9=(Token)match(input,68,FOLLOW_68_in_ruleXAnnotationElementValueOrCommaList5782); if (state.failed) return current;
+                            	    otherlv_4=(Token)match(input,72,FOLLOW_50); if (state.failed) return current;
                             	    if ( state.backtracking==0 ) {
 
-                            	          	newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
-                            	          
+                            	      						newLeafNode(otherlv_4, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_0_1_1_0());
+                            	      					
                             	    }
-                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2337:1: ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
-                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2338:1: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    // InternalChartDSL.g:2411:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalChartDSL.g:2412:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
                             	    {
-                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2338:1: (lv_elements_10_0= ruleXAnnotationOrExpression )
-                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2339:3: lv_elements_10_0= ruleXAnnotationOrExpression
+                            	    // InternalChartDSL.g:2412:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalChartDSL.g:2413:8: lv_elements_5_0= ruleXAnnotationOrExpression
                             	    {
                             	    if ( state.backtracking==0 ) {
-                            	       
-                            	      	        newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0()); 
-                            	      	    
+
+                            	      								newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_0_1_1_1_0());
+                            	      							
                             	    }
-                            	    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValueOrCommaList5803);
-                            	    lv_elements_10_0=ruleXAnnotationOrExpression();
+                            	    pushFollow(FOLLOW_53);
+                            	    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_10_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();
+                            	      							
                             	    }
 
                             	    }
@@ -6511,13 +6832,143 @@
                             	    break;
 
                             	default :
-                            	    if ( cnt35 >= 1 ) break loop35;
+                            	    break loop36;
+                                }
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_6=(Token)match(input,77,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_6, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getRightSquareBracketKeyword_0_2());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:2438:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    {
+                    // InternalChartDSL.g:2438:3: (this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )? )
+                    // InternalChartDSL.g:2439:4: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      				newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXAnnotationOrExpressionParserRuleCall_1_0());
+                      			
+                    }
+                    pushFollow(FOLLOW_54);
+                    this_XAnnotationOrExpression_7=ruleXAnnotationOrExpression();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = this_XAnnotationOrExpression_7;
+                      				afterParserOrEnumRuleCall();
+                      			
+                    }
+                    // InternalChartDSL.g:2447:4: ( () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+ )?
+                    int alt39=2;
+                    int LA39_0 = input.LA(1);
+
+                    if ( (LA39_0==72) ) {
+                        alt39=1;
+                    }
+                    switch (alt39) {
+                        case 1 :
+                            // InternalChartDSL.g:2448:5: () (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            {
+                            // InternalChartDSL.g:2448:5: ()
+                            // InternalChartDSL.g:2449:6: 
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              						current = forceCreateModelElementAndAdd(
+                              							grammarAccess.getXAnnotationElementValueOrCommaListAccess().getXListLiteralElementsAction_1_1_0(),
+                              							current);
+                              					
+                            }
+
+                            }
+
+                            // InternalChartDSL.g:2455:5: (otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) ) )+
+                            int cnt38=0;
+                            loop38:
+                            do {
+                                int alt38=2;
+                                int LA38_0 = input.LA(1);
+
+                                if ( (LA38_0==72) ) {
+                                    alt38=1;
+                                }
+
+
+                                switch (alt38) {
+                            	case 1 :
+                            	    // InternalChartDSL.g:2456:6: otherlv_9= ',' ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    {
+                            	    otherlv_9=(Token)match(input,72,FOLLOW_50); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      						newLeafNode(otherlv_9, grammarAccess.getXAnnotationElementValueOrCommaListAccess().getCommaKeyword_1_1_1_0());
+                            	      					
+                            	    }
+                            	    // InternalChartDSL.g:2460:6: ( (lv_elements_10_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalChartDSL.g:2461:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    {
+                            	    // InternalChartDSL.g:2461:7: (lv_elements_10_0= ruleXAnnotationOrExpression )
+                            	    // InternalChartDSL.g:2462:8: lv_elements_10_0= ruleXAnnotationOrExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+
+                            	      								newCompositeNode(grammarAccess.getXAnnotationElementValueOrCommaListAccess().getElementsXAnnotationOrExpressionParserRuleCall_1_1_1_1_0());
+                            	      							
+                            	    }
+                            	    pushFollow(FOLLOW_54);
+                            	    lv_elements_10_0=ruleXAnnotationOrExpression();
+
+                            	    state._fsp--;
+                            	    if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      								if (current==null) {
+                            	      									current = createModelElementForParent(grammarAccess.getXAnnotationElementValueOrCommaListRule());
+                            	      								}
+                            	      								add(
+                            	      									current,
+                            	      									"elements",
+                            	      									lv_elements_10_0,
+                            	      									"org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations.XAnnotationOrExpression");
+                            	      								afterParserOrEnumRuleCall();
+                            	      							
+                            	    }
+
+                            	    }
+
+
+                            	    }
+
+
+                            	    }
+                            	    break;
+
+                            	default :
+                            	    if ( cnt38 >= 1 ) break loop38;
                             	    if (state.backtracking>0) {state.failed=true; return current;}
                                         EarlyExitException eee =
-                                            new EarlyExitException(35, input);
+                                            new EarlyExitException(38, input);
                                         throw eee;
                                 }
-                                cnt35++;
+                                cnt38++;
                             } while (true);
 
 
@@ -6539,14 +6990,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -6555,7 +7008,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationElementValue"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2363:1: entryRuleXAnnotationElementValue returns [EObject current=null] : iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF ;
+    // InternalChartDSL.g:2486:1: entryRuleXAnnotationElementValue returns [EObject current=null] : iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF ;
     public final EObject entryRuleXAnnotationElementValue() throws RecognitionException {
         EObject current = null;
 
@@ -6563,13 +7016,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2364:2: (iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2365:2: iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF
+            // InternalChartDSL.g:2486:64: (iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF )
+            // InternalChartDSL.g:2487:2: iv_ruleXAnnotationElementValue= ruleXAnnotationElementValue EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationElementValueRule()); 
             }
-            pushFollow(FOLLOW_ruleXAnnotationElementValue_in_entryRuleXAnnotationElementValue5844);
+            pushFollow(FOLLOW_1);
             iv_ruleXAnnotationElementValue=ruleXAnnotationElementValue();
 
             state._fsp--;
@@ -6577,16 +7030,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAnnotationElementValue; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationElementValue5854); 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;
@@ -6595,7 +7048,7 @@
 
 
     // $ANTLR start "ruleXAnnotationElementValue"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2372: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 ) ;
+    // InternalChartDSL.g:2493: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;
 
@@ -6610,52 +7063,53 @@
         EObject this_XAnnotationOrExpression_7 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2375: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2376:1: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
+            // InternalChartDSL.g:2499:2: ( ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression ) )
+            // InternalChartDSL.g:2500: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2376:1: ( ( ( ( ( () '#' '[' ) )=> ( () 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) {
+            // InternalChartDSL.g:2500:2: ( ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' ) | this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression )
+            int alt43=2;
+            alt43 = dfa43.predict(input);
+            switch (alt43) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2376:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalChartDSL.g:2501:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2376:2: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2376:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
+                    // InternalChartDSL.g:2501:3: ( ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']' )
+                    // InternalChartDSL.g:2502:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) ) ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )? otherlv_6= ']'
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2376:3: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2376:4: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalChartDSL.g:2502:4: ( ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' ) )
+                    // InternalChartDSL.g:2503:5: ( ( () '#' '[' ) )=> ( () otherlv_1= '#' otherlv_2= '[' )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2379:5: ( () otherlv_1= '#' otherlv_2= '[' )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2379:6: () otherlv_1= '#' otherlv_2= '['
+                    // InternalChartDSL.g:2510:5: ( () otherlv_1= '#' otherlv_2= '[' )
+                    // InternalChartDSL.g:2511:6: () otherlv_1= '#' otherlv_2= '['
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2379:6: ()
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2380:5: 
+                    // InternalChartDSL.g:2511:6: ()
+                    // InternalChartDSL.g:2512: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,71,FOLLOW_71_in_ruleXAnnotationElementValue5919); if (state.failed) return current;
+                    otherlv_1=(Token)match(input,75,FOLLOW_51); 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,72,FOLLOW_72_in_ruleXAnnotationElementValue5931); if (state.failed) return current;
+                    otherlv_2=(Token)match(input,76,FOLLOW_52); 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());
+                      					
                     }
 
                     }
@@ -6663,45 +7117,45 @@
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2393:3: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
-                    int alt39=2;
-                    int LA39_0 = input.LA(1);
+                    // InternalChartDSL.g:2528:4: ( ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )* )?
+                    int alt42=2;
+                    int LA42_0 = input.LA(1);
 
-                    if ( ((LA39_0>=RULE_INT && LA39_0<=RULE_DECIMAL)||LA39_0==14||(LA39_0>=62 && LA39_0<=63)||(LA39_0>=66 && LA39_0<=67)||(LA39_0>=71 && LA39_0<=72)||LA39_0==79||LA39_0==95||LA39_0==99||LA39_0==106||LA39_0==108||(LA39_0>=112 && LA39_0<=114)||(LA39_0>=117 && LA39_0<=128)||LA39_0==130) ) {
-                        alt39=1;
+                    if ( ((LA42_0>=RULE_INT && LA42_0<=RULE_DECIMAL)||LA42_0==14||(LA42_0>=63 && LA42_0<=66)||(LA42_0>=70 && LA42_0<=71)||(LA42_0>=75 && LA42_0<=76)||LA42_0==83||LA42_0==99||LA42_0==103||LA42_0==110||LA42_0==112||(LA42_0>=116 && LA42_0<=118)||(LA42_0>=121 && LA42_0<=130)||LA42_0==132) ) {
+                        alt42=1;
                     }
-                    switch (alt39) {
+                    switch (alt42) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2393:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            // InternalChartDSL.g:2529:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
                             {
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2393:4: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2394:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalChartDSL.g:2529:5: ( (lv_elements_3_0= ruleXAnnotationOrExpression ) )
+                            // InternalChartDSL.g:2530:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
                             {
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2394:1: (lv_elements_3_0= ruleXAnnotationOrExpression )
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2395:3: lv_elements_3_0= ruleXAnnotationOrExpression
+                            // InternalChartDSL.g:2530:6: (lv_elements_3_0= ruleXAnnotationOrExpression )
+                            // InternalChartDSL.g:2531: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_ruleXAnnotationElementValue5955);
+                            pushFollow(FOLLOW_53);
                             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();
+                              						
                             }
 
                             }
@@ -6709,55 +7163,55 @@
 
                             }
 
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2411:2: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
-                            loop38:
+                            // InternalChartDSL.g:2548:5: (otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) ) )*
+                            loop41:
                             do {
-                                int alt38=2;
-                                int LA38_0 = input.LA(1);
+                                int alt41=2;
+                                int LA41_0 = input.LA(1);
 
-                                if ( (LA38_0==68) ) {
-                                    alt38=1;
+                                if ( (LA41_0==72) ) {
+                                    alt41=1;
                                 }
 
 
-                                switch (alt38) {
+                                switch (alt41) {
                             	case 1 :
-                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2411:4: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalChartDSL.g:2549:6: otherlv_4= ',' ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
                             	    {
-                            	    otherlv_4=(Token)match(input,68,FOLLOW_68_in_ruleXAnnotationElementValue5968); if (state.failed) return current;
+                            	    otherlv_4=(Token)match(input,72,FOLLOW_50); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2415:1: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
-                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2416:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalChartDSL.g:2553:6: ( (lv_elements_5_0= ruleXAnnotationOrExpression ) )
+                            	    // InternalChartDSL.g:2554:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
                             	    {
-                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2416:1: (lv_elements_5_0= ruleXAnnotationOrExpression )
-                            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2417:3: lv_elements_5_0= ruleXAnnotationOrExpression
+                            	    // InternalChartDSL.g:2554:7: (lv_elements_5_0= ruleXAnnotationOrExpression )
+                            	    // InternalChartDSL.g:2555: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_ruleXAnnotationElementValue5989);
+                            	    pushFollow(FOLLOW_53);
                             	    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();
+                            	      							
                             	    }
 
                             	    }
@@ -6770,7 +7224,7 @@
                             	    break;
 
                             	default :
-                            	    break loop38;
+                            	    break loop41;
                                 }
                             } while (true);
 
@@ -6780,11 +7234,11 @@
 
                     }
 
-                    otherlv_6=(Token)match(input,73,FOLLOW_73_in_ruleXAnnotationElementValue6005); if (state.failed) return current;
+                    otherlv_6=(Token)match(input,77,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());
+                      			
                     }
 
                     }
@@ -6793,23 +7247,23 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2439:5: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression
+                    // InternalChartDSL.g:2580:3: this_XAnnotationOrExpression_7= ruleXAnnotationOrExpression
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getXAnnotationElementValueAccess().getXAnnotationOrExpressionParserRuleCall_1());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_ruleXAnnotationElementValue6034);
+                    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();
+                      		
                     }
 
                     }
@@ -6821,14 +7275,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -6837,7 +7293,7 @@
 
 
     // $ANTLR start "entryRuleXAnnotationOrExpression"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2455:1: entryRuleXAnnotationOrExpression returns [EObject current=null] : iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF ;
+    // InternalChartDSL.g:2592:1: entryRuleXAnnotationOrExpression returns [EObject current=null] : iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF ;
     public final EObject entryRuleXAnnotationOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -6845,13 +7301,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2456:2: (iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2457:2: iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF
+            // InternalChartDSL.g:2592:64: (iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF )
+            // InternalChartDSL.g:2593:2: iv_ruleXAnnotationOrExpression= ruleXAnnotationOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAnnotationOrExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXAnnotationOrExpression_in_entryRuleXAnnotationOrExpression6069);
+            pushFollow(FOLLOW_1);
             iv_ruleXAnnotationOrExpression=ruleXAnnotationOrExpression();
 
             state._fsp--;
@@ -6859,16 +7315,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAnnotationOrExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAnnotationOrExpression6079); 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;
@@ -6877,7 +7333,7 @@
 
 
     // $ANTLR start "ruleXAnnotationOrExpression"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2464:1: ruleXAnnotationOrExpression returns [EObject current=null] : (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) ;
+    // InternalChartDSL.g:2599:1: ruleXAnnotationOrExpression returns [EObject current=null] : (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) ;
     public final EObject ruleXAnnotationOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -6886,70 +7342,71 @@
         EObject this_XExpression_1 = null;
 
 
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2467:28: ( (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2468:1: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
-            {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2468:1: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
-            int alt41=2;
-            int LA41_0 = input.LA(1);
 
-            if ( (LA41_0==66) ) {
-                alt41=1;
+        	enterRule();
+
+        try {
+            // InternalChartDSL.g:2605:2: ( (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression ) )
+            // InternalChartDSL.g:2606:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            {
+            // InternalChartDSL.g:2606:2: (this_XAnnotation_0= ruleXAnnotation | this_XExpression_1= ruleXExpression )
+            int alt44=2;
+            int LA44_0 = input.LA(1);
+
+            if ( (LA44_0==70) ) {
+                alt44=1;
             }
-            else if ( ((LA41_0>=RULE_INT && LA41_0<=RULE_DECIMAL)||LA41_0==14||(LA41_0>=62 && LA41_0<=63)||LA41_0==67||(LA41_0>=71 && LA41_0<=72)||LA41_0==79||LA41_0==95||LA41_0==99||LA41_0==106||LA41_0==108||(LA41_0>=112 && LA41_0<=114)||(LA41_0>=117 && LA41_0<=128)||LA41_0==130) ) {
-                alt41=2;
+            else if ( ((LA44_0>=RULE_INT && LA44_0<=RULE_DECIMAL)||LA44_0==14||(LA44_0>=63 && LA44_0<=66)||LA44_0==71||(LA44_0>=75 && LA44_0<=76)||LA44_0==83||LA44_0==99||LA44_0==103||LA44_0==110||LA44_0==112||(LA44_0>=116 && LA44_0<=118)||(LA44_0>=121 && LA44_0<=130)||LA44_0==132) ) {
+                alt44=2;
             }
             else {
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 41, 0, input);
+                    new NoViableAltException("", 44, 0, input);
 
                 throw nvae;
             }
-            switch (alt41) {
+            switch (alt44) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2469:5: this_XAnnotation_0= ruleXAnnotation
+                    // InternalChartDSL.g:2607:3: this_XAnnotation_0= ruleXAnnotation
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXAnnotationParserRuleCall_0());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleXAnnotation_in_ruleXAnnotationOrExpression6126);
+                    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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2479:5: this_XExpression_1= ruleXExpression
+                    // InternalChartDSL.g:2616:3: this_XExpression_1= ruleXExpression
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1()); 
-                          
+
+                      			newCompositeNode(grammarAccess.getXAnnotationOrExpressionAccess().getXExpressionParserRuleCall_1());
+                      		
                     }
-                    pushFollow(FOLLOW_ruleXExpression_in_ruleXAnnotationOrExpression6153);
+                    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();
+                      		
                     }
 
                     }
@@ -6961,14 +7418,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -6977,7 +7436,7 @@
 
 
     // $ANTLR start "entryRuleXExpression"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2495:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
+    // InternalChartDSL.g:2628:1: entryRuleXExpression returns [EObject current=null] : iv_ruleXExpression= ruleXExpression EOF ;
     public final EObject entryRuleXExpression() throws RecognitionException {
         EObject current = null;
 
@@ -6985,13 +7444,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2496:2: (iv_ruleXExpression= ruleXExpression EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2497:2: iv_ruleXExpression= ruleXExpression EOF
+            // InternalChartDSL.g:2628:52: (iv_ruleXExpression= ruleXExpression EOF )
+            // InternalChartDSL.g:2629:2: iv_ruleXExpression= ruleXExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXExpression_in_entryRuleXExpression6188);
+            pushFollow(FOLLOW_1);
             iv_ruleXExpression=ruleXExpression();
 
             state._fsp--;
@@ -6999,16 +7458,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXExpression6198); 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;
@@ -7017,47 +7476,50 @@
 
 
     // $ANTLR start "ruleXExpression"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2504:1: ruleXExpression returns [EObject current=null] : this_XAssignment_0= ruleXAssignment ;
+    // InternalChartDSL.g:2635: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2507:28: (this_XAssignment_0= ruleXAssignment )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2509:5: this_XAssignment_0= ruleXAssignment
+            // InternalChartDSL.g:2641:2: (this_XAssignment_0= ruleXAssignment )
+            // InternalChartDSL.g:2642:2: this_XAssignment_0= ruleXAssignment
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall()); 
-                  
+
+              		newCompositeNode(grammarAccess.getXExpressionAccess().getXAssignmentParserRuleCall());
+              	
             }
-            pushFollow(FOLLOW_ruleXAssignment_in_ruleXExpression6244);
+            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;
@@ -7066,7 +7528,7 @@
 
 
     // $ANTLR start "entryRuleXAssignment"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2525:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
+    // InternalChartDSL.g:2653:1: entryRuleXAssignment returns [EObject current=null] : iv_ruleXAssignment= ruleXAssignment EOF ;
     public final EObject entryRuleXAssignment() throws RecognitionException {
         EObject current = null;
 
@@ -7074,13 +7536,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2526:2: (iv_ruleXAssignment= ruleXAssignment EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2527:2: iv_ruleXAssignment= ruleXAssignment EOF
+            // InternalChartDSL.g:2653:52: (iv_ruleXAssignment= ruleXAssignment EOF )
+            // InternalChartDSL.g:2654:2: iv_ruleXAssignment= ruleXAssignment EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAssignmentRule()); 
             }
-            pushFollow(FOLLOW_ruleXAssignment_in_entryRuleXAssignment6278);
+            pushFollow(FOLLOW_1);
             iv_ruleXAssignment=ruleXAssignment();
 
             state._fsp--;
@@ -7088,16 +7550,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAssignment; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAssignment6288); 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;
@@ -7106,7 +7568,7 @@
 
 
     // $ANTLR start "ruleXAssignment"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2534:1: ruleXAssignment returns [EObject current=null] : ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) ;
+    // InternalChartDSL.g:2660: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;
 
@@ -7117,105 +7579,106 @@
         EObject lv_rightOperand_7_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2537:28: ( ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2538:1: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            // InternalChartDSL.g:2666:2: ( ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) ) )
+            // InternalChartDSL.g:2667:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2538:1: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
-            int alt43=2;
+            // InternalChartDSL.g:2667:2: ( ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) ) | (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? ) )
+            int alt46=2;
             switch ( input.LA(1) ) {
             case RULE_ID:
                 {
-                int LA43_1 = input.LA(2);
+                int LA46_1 = input.LA(2);
 
-                if ( (LA43_1==EOF||(LA43_1>=RULE_INT && LA43_1<=RULE_DECIMAL)||(LA43_1>=14 && LA43_1<=15)||LA43_1==18||(LA43_1>=62 && LA43_1<=65)||(LA43_1>=67 && LA43_1<=69)||(LA43_1>=71 && LA43_1<=103)||(LA43_1>=105 && LA43_1<=131)) ) {
-                    alt43=2;
+                if ( (LA46_1==74) ) {
+                    alt46=1;
                 }
-                else if ( (LA43_1==70) ) {
-                    alt43=1;
+                else if ( (LA46_1==EOF||(LA46_1>=RULE_INT && LA46_1<=RULE_DECIMAL)||(LA46_1>=14 && LA46_1<=15)||LA46_1==18||(LA46_1>=63 && LA46_1<=67)||LA46_1==69||(LA46_1>=71 && LA46_1<=73)||(LA46_1>=75 && LA46_1<=108)||(LA46_1>=110 && LA46_1<=133)) ) {
+                    alt46=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 43, 1, input);
+                        new NoViableAltException("", 46, 1, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 117:
+            case 121:
                 {
-                int LA43_2 = input.LA(2);
+                int LA46_2 = input.LA(2);
 
-                if ( (LA43_2==70) ) {
-                    alt43=1;
+                if ( (LA46_2==74) ) {
+                    alt46=1;
                 }
-                else if ( (LA43_2==EOF||(LA43_2>=RULE_INT && LA43_2<=RULE_DECIMAL)||(LA43_2>=14 && LA43_2<=15)||LA43_2==18||(LA43_2>=62 && LA43_2<=65)||(LA43_2>=67 && LA43_2<=69)||(LA43_2>=71 && LA43_2<=103)||(LA43_2>=105 && LA43_2<=131)) ) {
-                    alt43=2;
+                else if ( (LA46_2==EOF||(LA46_2>=RULE_INT && LA46_2<=RULE_DECIMAL)||(LA46_2>=14 && LA46_2<=15)||LA46_2==18||(LA46_2>=63 && LA46_2<=67)||LA46_2==69||(LA46_2>=71 && LA46_2<=73)||(LA46_2>=75 && LA46_2<=108)||(LA46_2>=110 && LA46_2<=133)) ) {
+                    alt46=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 43, 2, input);
+                        new NoViableAltException("", 46, 2, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 118:
+            case 65:
                 {
-                int LA43_3 = input.LA(2);
+                int LA46_3 = input.LA(2);
 
-                if ( (LA43_3==70) ) {
-                    alt43=1;
+                if ( (LA46_3==74) ) {
+                    alt46=1;
                 }
-                else if ( (LA43_3==EOF||(LA43_3>=RULE_INT && LA43_3<=RULE_DECIMAL)||(LA43_3>=14 && LA43_3<=15)||LA43_3==18||(LA43_3>=62 && LA43_3<=65)||(LA43_3>=67 && LA43_3<=69)||(LA43_3>=71 && LA43_3<=103)||(LA43_3>=105 && LA43_3<=131)) ) {
-                    alt43=2;
+                else if ( (LA46_3==EOF||(LA46_3>=RULE_INT && LA46_3<=RULE_DECIMAL)||(LA46_3>=14 && LA46_3<=15)||LA46_3==18||(LA46_3>=63 && LA46_3<=67)||LA46_3==69||(LA46_3>=71 && LA46_3<=73)||(LA46_3>=75 && LA46_3<=108)||(LA46_3>=110 && LA46_3<=133)) ) {
+                    alt46=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 43, 3, input);
+                        new NoViableAltException("", 46, 3, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 62:
+            case 64:
                 {
-                int LA43_4 = input.LA(2);
+                int LA46_4 = input.LA(2);
 
-                if ( (LA43_4==70) ) {
-                    alt43=1;
+                if ( (LA46_4==74) ) {
+                    alt46=1;
                 }
-                else if ( (LA43_4==EOF||(LA43_4>=RULE_INT && LA43_4<=RULE_DECIMAL)||(LA43_4>=14 && LA43_4<=15)||LA43_4==18||(LA43_4>=62 && LA43_4<=65)||(LA43_4>=67 && LA43_4<=69)||(LA43_4>=71 && LA43_4<=103)||(LA43_4>=105 && LA43_4<=131)) ) {
-                    alt43=2;
+                else if ( (LA46_4==EOF||(LA46_4>=RULE_INT && LA46_4<=RULE_DECIMAL)||(LA46_4>=14 && LA46_4<=15)||LA46_4==18||(LA46_4>=63 && LA46_4<=67)||LA46_4==69||(LA46_4>=71 && LA46_4<=73)||(LA46_4>=75 && LA46_4<=108)||(LA46_4>=110 && LA46_4<=133)) ) {
+                    alt46=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 43, 4, input);
+                        new NoViableAltException("", 46, 4, input);
 
                     throw nvae;
                 }
                 }
                 break;
-            case 119:
+            case 66:
                 {
-                int LA43_5 = input.LA(2);
+                int LA46_5 = input.LA(2);
 
-                if ( (LA43_5==EOF||(LA43_5>=RULE_INT && LA43_5<=RULE_DECIMAL)||(LA43_5>=14 && LA43_5<=15)||LA43_5==18||(LA43_5>=62 && LA43_5<=65)||(LA43_5>=67 && LA43_5<=69)||(LA43_5>=71 && LA43_5<=103)||(LA43_5>=105 && LA43_5<=131)) ) {
-                    alt43=2;
+                if ( (LA46_5==74) ) {
+                    alt46=1;
                 }
-                else if ( (LA43_5==70) ) {
-                    alt43=1;
+                else if ( (LA46_5==EOF||(LA46_5>=RULE_INT && LA46_5<=RULE_DECIMAL)||(LA46_5>=14 && LA46_5<=15)||LA46_5==18||(LA46_5>=63 && LA46_5<=67)||LA46_5==69||(LA46_5>=71 && LA46_5<=73)||(LA46_5>=75 && LA46_5<=108)||(LA46_5>=110 && LA46_5<=133)) ) {
+                    alt46=2;
                 }
                 else {
                     if (state.backtracking>0) {state.failed=true; return current;}
                     NoViableAltException nvae =
-                        new NoViableAltException("", 43, 5, input);
+                        new NoViableAltException("", 46, 5, input);
 
                     throw nvae;
                 }
@@ -7227,19 +7690,17 @@
             case RULE_DECIMAL:
             case 14:
             case 63:
-            case 67:
             case 71:
-            case 72:
-            case 79:
-            case 95:
+            case 75:
+            case 76:
+            case 83:
             case 99:
-            case 106:
-            case 108:
+            case 103:
+            case 110:
             case 112:
-            case 113:
-            case 114:
-            case 120:
-            case 121:
+            case 116:
+            case 117:
+            case 118:
             case 122:
             case 123:
             case 124:
@@ -7247,66 +7708,68 @@
             case 126:
             case 127:
             case 128:
+            case 129:
             case 130:
+            case 132:
                 {
-                alt43=2;
+                alt46=2;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 43, 0, input);
+                    new NoViableAltException("", 46, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt43) {
+            switch (alt46) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2538:2: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    // InternalChartDSL.g:2668:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2538:2: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2538:3: () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
+                    // InternalChartDSL.g:2668:3: ( () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) ) )
+                    // InternalChartDSL.g:2669:4: () ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ( (lv_value_3_0= ruleXAssignment ) )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2538:3: ()
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2539:5: 
+                    // InternalChartDSL.g:2669:4: ()
+                    // InternalChartDSL.g:2670:5: 
                     {
                     if ( state.backtracking==0 ) {
 
-                              current = forceCreateModelElement(
-                                  grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0(),
-                                  current);
-                          
+                      					current = forceCreateModelElement(
+                      						grammarAccess.getXAssignmentAccess().getXAssignmentAction_0_0(),
+                      						current);
+                      				
                     }
 
                     }
 
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2544:2: ( ( ruleFeatureCallID ) )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2545:1: ( ruleFeatureCallID )
+                    // InternalChartDSL.g:2676:4: ( ( ruleFeatureCallID ) )
+                    // InternalChartDSL.g:2677:5: ( ruleFeatureCallID )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2545:1: ( ruleFeatureCallID )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2546:3: ruleFeatureCallID
+                    // InternalChartDSL.g:2677:5: ( ruleFeatureCallID )
+                    // InternalChartDSL.g:2678:6: ruleFeatureCallID
                     {
                     if ( state.backtracking==0 ) {
 
-                      			if (current==null) {
-                      	            current = createModelElement(grammarAccess.getXAssignmentRule());
-                      	        }
-                              
+                      						if (current==null) {
+                      							current = createModelElement(grammarAccess.getXAssignmentRule());
+                      						}
+                      					
                     }
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0()); 
-                      	    
+
+                      						newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_0_1_0());
+                      					
                     }
-                    pushFollow(FOLLOW_ruleFeatureCallID_in_ruleXAssignment6346);
+                    pushFollow(FOLLOW_49);
                     ruleFeatureCallID();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                      	        afterParserOrEnumRuleCall();
-                      	    
+
+                      						afterParserOrEnumRuleCall();
+                      					
                     }
 
                     }
@@ -7315,48 +7778,48 @@
                     }
 
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2()); 
-                          
+
+                      				newCompositeNode(grammarAccess.getXAssignmentAccess().getOpSingleAssignParserRuleCall_0_2());
+                      			
                     }
-                    pushFollow(FOLLOW_ruleOpSingleAssign_in_ruleXAssignment6362);
+                    pushFollow(FOLLOW_50);
                     ruleOpSingleAssign();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              afterParserOrEnumRuleCall();
-                          
+
+                      				afterParserOrEnumRuleCall();
+                      			
                     }
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2567:1: ( (lv_value_3_0= ruleXAssignment ) )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2568:1: (lv_value_3_0= ruleXAssignment )
+                    // InternalChartDSL.g:2699:4: ( (lv_value_3_0= ruleXAssignment ) )
+                    // InternalChartDSL.g:2700:5: (lv_value_3_0= ruleXAssignment )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2568:1: (lv_value_3_0= ruleXAssignment )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2569:3: lv_value_3_0= ruleXAssignment
+                    // InternalChartDSL.g:2700:5: (lv_value_3_0= ruleXAssignment )
+                    // InternalChartDSL.g:2701:6: lv_value_3_0= ruleXAssignment
                     {
                     if ( state.backtracking==0 ) {
-                       
-                      	        newCompositeNode(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0()); 
-                      	    
+
+                      						newCompositeNode(grammarAccess.getXAssignmentAccess().getValueXAssignmentParserRuleCall_0_3_0());
+                      					
                     }
-                    pushFollow(FOLLOW_ruleXAssignment_in_ruleXAssignment6382);
+                    pushFollow(FOLLOW_2);
                     lv_value_3_0=ruleXAssignment();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                      	        if (current==null) {
-                      	            current = createModelElementForParent(grammarAccess.getXAssignmentRule());
-                      	        }
-                             		set(
-                             			current, 
-                             			"value",
-                              		lv_value_3_0, 
-                              		"XAssignment");
-                      	        afterParserOrEnumRuleCall();
-                      	    
+                      						if (current==null) {
+                      							current = createModelElementForParent(grammarAccess.getXAssignmentRule());
+                      						}
+                      						set(
+                      							current,
+                      							"value",
+                      							lv_value_3_0,
+                      							"org.eclipse.xtext.xbase.Xbase.XAssignment");
+                      						afterParserOrEnumRuleCall();
+                      					
                     }
 
                     }
@@ -7371,80 +7834,80 @@
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2586:6: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    // InternalChartDSL.g:2720:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2586:6: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2587:5: this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    // InternalChartDSL.g:2720:3: (this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )? )
+                    // InternalChartDSL.g:2721:4: this_XOrExpression_4= ruleXOrExpression ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
                     {
                     if ( state.backtracking==0 ) {
-                       
-                              newCompositeNode(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0()); 
-                          
+
+                      				newCompositeNode(grammarAccess.getXAssignmentAccess().getXOrExpressionParserRuleCall_1_0());
+                      			
                     }
-                    pushFollow(FOLLOW_ruleXOrExpression_in_ruleXAssignment6412);
+                    pushFollow(FOLLOW_55);
                     this_XOrExpression_4=ruleXOrExpression();
 
                     state._fsp--;
                     if (state.failed) return current;
                     if ( state.backtracking==0 ) {
-                       
-                              current = this_XOrExpression_4; 
-                              afterParserOrEnumRuleCall();
-                          
+
+                      				current = this_XOrExpression_4;
+                      				afterParserOrEnumRuleCall();
+                      			
                     }
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2595:1: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
-                    int alt42=2;
-                    alt42 = dfa42.predict(input);
-                    switch (alt42) {
+                    // InternalChartDSL.g:2729:4: ( ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) ) )?
+                    int alt45=2;
+                    alt45 = dfa45.predict(input);
+                    switch (alt45) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2595:2: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            // InternalChartDSL.g:2730:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) ) ( (lv_rightOperand_7_0= ruleXAssignment ) )
                             {
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2595:2: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2595:3: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
+                            // InternalChartDSL.g:2730:5: ( ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) ) )
+                            // InternalChartDSL.g:2731:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )=> ( () ( ( ruleOpMultiAssign ) ) )
                             {
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2600:6: ( () ( ( ruleOpMultiAssign ) ) )
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2600:7: () ( ( ruleOpMultiAssign ) )
+                            // InternalChartDSL.g:2741:6: ( () ( ( ruleOpMultiAssign ) ) )
+                            // InternalChartDSL.g:2742:7: () ( ( ruleOpMultiAssign ) )
                             {
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2600:7: ()
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2601:5: 
+                            // InternalChartDSL.g:2742:7: ()
+                            // InternalChartDSL.g:2743:8: 
                             {
                             if ( state.backtracking==0 ) {
 
-                                      current = forceCreateModelElementAndSet(
-                                          grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
-                                          current);
-                                  
+                              								current = forceCreateModelElementAndSet(
+                              									grammarAccess.getXAssignmentAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+                              									current);
+                              							
                             }
 
                             }
 
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2606:2: ( ( ruleOpMultiAssign ) )
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2607:1: ( ruleOpMultiAssign )
+                            // InternalChartDSL.g:2749:7: ( ( ruleOpMultiAssign ) )
+                            // InternalChartDSL.g:2750:8: ( ruleOpMultiAssign )
                             {
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2607:1: ( ruleOpMultiAssign )
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2608:3: ruleOpMultiAssign
+                            // InternalChartDSL.g:2750:8: ( ruleOpMultiAssign )
+                            // InternalChartDSL.g:2751:9: ruleOpMultiAssign
                             {
                             if ( state.backtracking==0 ) {
 
-                              			if (current==null) {
-                              	            current = createModelElement(grammarAccess.getXAssignmentRule());
-                              	        }
-                                      
+                              									if (current==null) {
+                              										current = createModelElement(grammarAccess.getXAssignmentRule());
+                              									}
+                              								
                             }
                             if ( state.backtracking==0 ) {
-                               
-                              	        newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0()); 
-                              	    
+
+                              									newCompositeNode(grammarAccess.getXAssignmentAccess().getFeatureJvmIdentifiableElementCrossReference_1_1_0_0_1_0());
+                              								
                             }
-                            pushFollow(FOLLOW_ruleOpMultiAssign_in_ruleXAssignment6465);
+                            pushFollow(FOLLOW_50);
                             ruleOpMultiAssign();
 
                             state._fsp--;
                             if (state.failed) return current;
                             if ( state.backtracking==0 ) {
-                               
-                              	        afterParserOrEnumRuleCall();
-                              	    
+
+                              									afterParserOrEnumRuleCall();
+                              								
                             }
 
                             }
@@ -7458,34 +7921,34 @@
 
                             }
 
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2621:4: ( (lv_rightOperand_7_0= ruleXAssignment ) )
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2622:1: (lv_rightOperand_7_0= ruleXAssignment )
+                            // InternalChartDSL.g:2767:5: ( (lv_rightOperand_7_0= ruleXAssignment ) )
+                            // InternalChartDSL.g:2768:6: (lv_rightOperand_7_0= ruleXAssignment )
                             {
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2622:1: (lv_rightOperand_7_0= ruleXAssignment )
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2623:3: lv_rightOperand_7_0= ruleXAssignment
+                            // InternalChartDSL.g:2768:6: (lv_rightOperand_7_0= ruleXAssignment )
+                            // InternalChartDSL.g:2769:7: lv_rightOperand_7_0= ruleXAssignment
                             {
                             if ( state.backtracking==0 ) {
-                               
-                              	        newCompositeNode(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0()); 
-                              	    
+
+                              							newCompositeNode(grammarAccess.getXAssignmentAccess().getRightOperandXAssignmentParserRuleCall_1_1_1_0());
+                              						
                             }
-                            pushFollow(FOLLOW_ruleXAssignment_in_ruleXAssignment6488);
+                            pushFollow(FOLLOW_2);
                             lv_rightOperand_7_0=ruleXAssignment();
 
                             state._fsp--;
                             if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
-                              	        if (current==null) {
-                              	            current = createModelElementForParent(grammarAccess.getXAssignmentRule());
-                              	        }
-                                     		set(
-                                     			current, 
-                                     			"rightOperand",
-                                      		lv_rightOperand_7_0, 
-                                      		"XAssignment");
-                              	        afterParserOrEnumRuleCall();
-                              	    
+                              							if (current==null) {
+                              								current = createModelElementForParent(grammarAccess.getXAssignmentRule());
+                              							}
+                              							set(
+                              								current,
+                              								"rightOperand",
+                              								lv_rightOperand_7_0,
+                              								"org.eclipse.xtext.xbase.Xbase.XAssignment");
+                              							afterParserOrEnumRuleCall();
+                              						
                             }
 
                             }
@@ -7512,14 +7975,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -7528,7 +7993,7 @@
 
 
     // $ANTLR start "entryRuleOpSingleAssign"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2647:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
+    // InternalChartDSL.g:2792:1: entryRuleOpSingleAssign returns [String current=null] : iv_ruleOpSingleAssign= ruleOpSingleAssign EOF ;
     public final String entryRuleOpSingleAssign() throws RecognitionException {
         String current = null;
 
@@ -7536,13 +8001,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2648:2: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2649:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
+            // InternalChartDSL.g:2792:54: (iv_ruleOpSingleAssign= ruleOpSingleAssign EOF )
+            // InternalChartDSL.g:2793:2: iv_ruleOpSingleAssign= ruleOpSingleAssign EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpSingleAssignRule()); 
             }
-            pushFollow(FOLLOW_ruleOpSingleAssign_in_entryRuleOpSingleAssign6528);
+            pushFollow(FOLLOW_1);
             iv_ruleOpSingleAssign=ruleOpSingleAssign();
 
             state._fsp--;
@@ -7550,16 +8015,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleOpSingleAssign.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpSingleAssign6539); 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;
@@ -7568,37 +8033,40 @@
 
 
     // $ANTLR start "ruleOpSingleAssign"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2656:1: ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '=' ;
+    // InternalChartDSL.g:2799:1: ruleOpSingleAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '=' ;
     public final AntlrDatatypeRuleToken ruleOpSingleAssign() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
         Token kw=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2659:28: (kw= '=' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2661:2: kw= '='
+            // InternalChartDSL.g:2805:2: (kw= '=' )
+            // InternalChartDSL.g:2806:2: kw= '='
             {
-            kw=(Token)match(input,70,FOLLOW_70_in_ruleOpSingleAssign6576); if (state.failed) return current;
+            kw=(Token)match(input,74,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                      current.merge(kw);
-                      newLeafNode(kw, grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword()); 
-                  
+              		current.merge(kw);
+              		newLeafNode(kw, grammarAccess.getOpSingleAssignAccess().getEqualsSignKeyword());
+              	
             }
 
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -7607,7 +8075,7 @@
 
 
     // $ANTLR start "entryRuleOpMultiAssign"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2674:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
+    // InternalChartDSL.g:2814:1: entryRuleOpMultiAssign returns [String current=null] : iv_ruleOpMultiAssign= ruleOpMultiAssign EOF ;
     public final String entryRuleOpMultiAssign() throws RecognitionException {
         String current = null;
 
@@ -7615,13 +8083,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2675:2: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2676:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
+            // InternalChartDSL.g:2814:53: (iv_ruleOpMultiAssign= ruleOpMultiAssign EOF )
+            // InternalChartDSL.g:2815:2: iv_ruleOpMultiAssign= ruleOpMultiAssign EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpMultiAssignRule()); 
             }
-            pushFollow(FOLLOW_ruleOpMultiAssign_in_entryRuleOpMultiAssign6616);
+            pushFollow(FOLLOW_1);
             iv_ruleOpMultiAssign=ruleOpMultiAssign();
 
             state._fsp--;
@@ -7629,16 +8097,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleOpMultiAssign.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpMultiAssign6627); 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;
@@ -7647,156 +8115,157 @@
 
 
     // $ANTLR start "ruleOpMultiAssign"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2683:1: ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) ;
+    // InternalChartDSL.g:2821:1: ruleOpMultiAssign returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) ;
     public final AntlrDatatypeRuleToken ruleOpMultiAssign() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
         Token kw=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2686:28: ( (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2687:1: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            // InternalChartDSL.g:2827:2: ( (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) ) )
+            // InternalChartDSL.g:2828:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2687:1: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
-            int alt45=7;
+            // InternalChartDSL.g:2828:2: (kw= '+=' | kw= '-=' | kw= '*=' | kw= '/=' | kw= '%=' | (kw= '<' kw= '<' kw= '=' ) | (kw= '>' (kw= '>' )? kw= '>=' ) )
+            int alt48=7;
             switch ( input.LA(1) ) {
-            case 74:
-                {
-                alt45=1;
-                }
-                break;
-            case 75:
-                {
-                alt45=2;
-                }
-                break;
-            case 76:
-                {
-                alt45=3;
-                }
-                break;
-            case 77:
-                {
-                alt45=4;
-                }
-                break;
             case 78:
                 {
-                alt45=5;
+                alt48=1;
                 }
                 break;
             case 79:
                 {
-                alt45=6;
+                alt48=2;
                 }
                 break;
             case 80:
                 {
-                alt45=7;
+                alt48=3;
+                }
+                break;
+            case 81:
+                {
+                alt48=4;
+                }
+                break;
+            case 82:
+                {
+                alt48=5;
+                }
+                break;
+            case 83:
+                {
+                alt48=6;
+                }
+                break;
+            case 84:
+                {
+                alt48=7;
                 }
                 break;
             default:
                 if (state.backtracking>0) {state.failed=true; return current;}
                 NoViableAltException nvae =
-                    new NoViableAltException("", 45, 0, input);
+                    new NoViableAltException("", 48, 0, input);
 
                 throw nvae;
             }
 
-            switch (alt45) {
+            switch (alt48) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2688:2: kw= '+='
+                    // InternalChartDSL.g:2829:3: kw= '+='
                     {
-                    kw=(Token)match(input,74,FOLLOW_74_in_ruleOpMultiAssign6665); if (state.failed) return current;
+                    kw=(Token)match(input,78,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPlusSignEqualsSignKeyword_0());
+                      		
                     }
 
                     }
                     break;
                 case 2 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2695:2: kw= '-='
+                    // InternalChartDSL.g:2835:3: kw= '-='
                     {
-                    kw=(Token)match(input,75,FOLLOW_75_in_ruleOpMultiAssign6684); if (state.failed) return current;
+                    kw=(Token)match(input,79,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getHyphenMinusEqualsSignKeyword_1());
+                      		
                     }
 
                     }
                     break;
                 case 3 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2702:2: kw= '*='
+                    // InternalChartDSL.g:2841:3: kw= '*='
                     {
-                    kw=(Token)match(input,76,FOLLOW_76_in_ruleOpMultiAssign6703); if (state.failed) return current;
+                    kw=(Token)match(input,80,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getAsteriskEqualsSignKeyword_2());
+                      		
                     }
 
                     }
                     break;
                 case 4 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2709:2: kw= '/='
+                    // InternalChartDSL.g:2847:3: kw= '/='
                     {
-                    kw=(Token)match(input,77,FOLLOW_77_in_ruleOpMultiAssign6722); if (state.failed) return current;
+                    kw=(Token)match(input,81,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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2716:2: kw= '%='
+                    // InternalChartDSL.g:2853:3: kw= '%='
                     {
-                    kw=(Token)match(input,78,FOLLOW_78_in_ruleOpMultiAssign6741); if (state.failed) return current;
+                    kw=(Token)match(input,82,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4()); 
-                          
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getPercentSignEqualsSignKeyword_4());
+                      		
                     }
 
                     }
                     break;
                 case 6 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2722:6: (kw= '<' kw= '<' kw= '=' )
+                    // InternalChartDSL.g:2859:3: (kw= '<' kw= '<' kw= '=' )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2722:6: (kw= '<' kw= '<' kw= '=' )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2723:2: kw= '<' kw= '<' kw= '='
+                    // InternalChartDSL.g:2859:3: (kw= '<' kw= '<' kw= '=' )
+                    // InternalChartDSL.g:2860:4: kw= '<' kw= '<' kw= '='
                     {
-                    kw=(Token)match(input,79,FOLLOW_79_in_ruleOpMultiAssign6761); if (state.failed) return current;
+                    kw=(Token)match(input,83,FOLLOW_56); 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,79,FOLLOW_79_in_ruleOpMultiAssign6774); if (state.failed) return current;
+                    kw=(Token)match(input,83,FOLLOW_49); 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,70,FOLLOW_70_in_ruleOpMultiAssign6787); if (state.failed) return current;
+                    kw=(Token)match(input,74,FOLLOW_2); if (state.failed) return current;
                     if ( state.backtracking==0 ) {
 
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2()); 
-                          
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpMultiAssignAccess().getEqualsSignKeyword_5_2());
+                      			
                     }
 
                     }
@@ -7805,35 +8274,35 @@
                     }
                     break;
                 case 7 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2741:6: (kw= '>' (kw= '>' )? kw= '>=' )
+                    // InternalChartDSL.g:2877:3: (kw= '>' (kw= '>' )? kw= '>=' )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2741:6: (kw= '>' (kw= '>' )? kw= '>=' )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2742:2: kw= '>' (kw= '>' )? kw= '>='
+                    // InternalChartDSL.g:2877:3: (kw= '>' (kw= '>' )? kw= '>=' )
+                    // InternalChartDSL.g:2878:4: kw= '>' (kw= '>' )? kw= '>='
                     {
-                    kw=(Token)match(input,80,FOLLOW_80_in_ruleOpMultiAssign6808); if (state.failed) return current;
+                    kw=(Token)match(input,84,FOLLOW_57); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2747:1: (kw= '>' )?
-                    int alt44=2;
-                    int LA44_0 = input.LA(1);
+                    // InternalChartDSL.g:2883:4: (kw= '>' )?
+                    int alt47=2;
+                    int LA47_0 = input.LA(1);
 
-                    if ( (LA44_0==80) ) {
-                        alt44=1;
+                    if ( (LA47_0==84) ) {
+                        alt47=1;
                     }
-                    switch (alt44) {
+                    switch (alt47) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2748:2: kw= '>'
+                            // InternalChartDSL.g:2884:5: kw= '>'
                             {
-                            kw=(Token)match(input,80,FOLLOW_80_in_ruleOpMultiAssign6822); if (state.failed) return current;
+                            kw=(Token)match(input,84,FOLLOW_58); 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());
+                              				
                             }
 
                             }
@@ -7841,12 +8310,12 @@
 
                     }
 
-                    kw=(Token)match(input,81,FOLLOW_81_in_ruleOpMultiAssign6837); if (state.failed) return current;
+                    kw=(Token)match(input,85,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());
+                      			
                     }
 
                     }
@@ -7861,14 +8330,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -7877,7 +8348,7 @@
 
 
     // $ANTLR start "entryRuleXOrExpression"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2767:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
+    // InternalChartDSL.g:2900:1: entryRuleXOrExpression returns [EObject current=null] : iv_ruleXOrExpression= ruleXOrExpression EOF ;
     public final EObject entryRuleXOrExpression() throws RecognitionException {
         EObject current = null;
 
@@ -7885,13 +8356,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2768:2: (iv_ruleXOrExpression= ruleXOrExpression EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2769:2: iv_ruleXOrExpression= ruleXOrExpression EOF
+            // InternalChartDSL.g:2900:54: (iv_ruleXOrExpression= ruleXOrExpression EOF )
+            // InternalChartDSL.g:2901:2: iv_ruleXOrExpression= ruleXOrExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXOrExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXOrExpression_in_entryRuleXOrExpression6878);
+            pushFollow(FOLLOW_1);
             iv_ruleXOrExpression=ruleXOrExpression();
 
             state._fsp--;
@@ -7899,16 +8370,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXOrExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXOrExpression6888); 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;
@@ -7917,7 +8388,7 @@
 
 
     // $ANTLR start "ruleXOrExpression"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2776:1: ruleXOrExpression returns [EObject current=null] : (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) ;
+    // InternalChartDSL.g:2907: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;
 
@@ -7926,98 +8397,99 @@
         EObject lv_rightOperand_3_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2779:28: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2780:1: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            // InternalChartDSL.g:2913:2: ( (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* ) )
+            // InternalChartDSL.g:2914:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2780:1: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2781:5: this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            // InternalChartDSL.g:2914:2: (this_XAndExpression_0= ruleXAndExpression ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )* )
+            // InternalChartDSL.g:2915: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_ruleXOrExpression6935);
+            pushFollow(FOLLOW_59);
             this_XAndExpression_0=ruleXAndExpression();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-                      current = this_XAndExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
-            }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2789:1: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
-            loop46:
-            do {
-                int alt46=2;
-                int LA46_0 = input.LA(1);
 
-                if ( (LA46_0==82) ) {
-                    int LA46_2 = input.LA(2);
+              			current = this_XAndExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalChartDSL.g:2923:3: ( ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) ) )*
+            loop49:
+            do {
+                int alt49=2;
+                int LA49_0 = input.LA(1);
+
+                if ( (LA49_0==86) ) {
+                    int LA49_2 = input.LA(2);
 
                     if ( (synpred8_InternalChartDSL()) ) {
-                        alt46=1;
+                        alt49=1;
                     }
 
 
                 }
 
 
-                switch (alt46) {
+                switch (alt49) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2789:2: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    // InternalChartDSL.g:2924:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) ) ( (lv_rightOperand_3_0= ruleXAndExpression ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2789:2: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2789:3: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
+            	    // InternalChartDSL.g:2924:4: ( ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) ) )
+            	    // InternalChartDSL.g:2925:5: ( ( () ( ( ruleOpOr ) ) ) )=> ( () ( ( ruleOpOr ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2794:6: ( () ( ( ruleOpOr ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2794:7: () ( ( ruleOpOr ) )
+            	    // InternalChartDSL.g:2935:5: ( () ( ( ruleOpOr ) ) )
+            	    // InternalChartDSL.g:2936:6: () ( ( ruleOpOr ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2794:7: ()
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2795:5: 
+            	    // InternalChartDSL.g:2936:6: ()
+            	    // InternalChartDSL.g:2937: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2800:2: ( ( ruleOpOr ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2801:1: ( ruleOpOr )
+            	    // InternalChartDSL.g:2943:6: ( ( ruleOpOr ) )
+            	    // InternalChartDSL.g:2944:7: ( ruleOpOr )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2801:1: ( ruleOpOr )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2802:3: ruleOpOr
+            	    // InternalChartDSL.g:2944:7: ( ruleOpOr )
+            	    // InternalChartDSL.g:2945: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_ruleXOrExpression6988);
+            	    pushFollow(FOLLOW_50);
             	    ruleOpOr();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
             	    }
 
             	    }
@@ -8031,34 +8503,34 @@
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2815:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2816:1: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    // InternalChartDSL.g:2961:4: ( (lv_rightOperand_3_0= ruleXAndExpression ) )
+            	    // InternalChartDSL.g:2962:5: (lv_rightOperand_3_0= ruleXAndExpression )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2816:1: (lv_rightOperand_3_0= ruleXAndExpression )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2817:3: lv_rightOperand_3_0= ruleXAndExpression
+            	    // InternalChartDSL.g:2962:5: (lv_rightOperand_3_0= ruleXAndExpression )
+            	    // InternalChartDSL.g:2963: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_ruleXOrExpression7011);
+            	    pushFollow(FOLLOW_59);
             	    lv_rightOperand_3_0=ruleXAndExpression();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
 
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getXOrExpressionRule());
-            	      	        }
-            	             		set(
-            	             			current, 
-            	             			"rightOperand",
-            	              		lv_rightOperand_3_0, 
-            	              		"XAndExpression");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+            	      						if (current==null) {
+            	      							current = createModelElementForParent(grammarAccess.getXOrExpressionRule());
+            	      						}
+            	      						set(
+            	      							current,
+            	      							"rightOperand",
+            	      							lv_rightOperand_3_0,
+            	      							"org.eclipse.xtext.xbase.Xbase.XAndExpression");
+            	      						afterParserOrEnumRuleCall();
+            	      					
             	    }
 
             	    }
@@ -8071,7 +8543,7 @@
             	    break;
 
             	default :
-            	    break loop46;
+            	    break loop49;
                 }
             } while (true);
 
@@ -8082,14 +8554,16 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -8098,7 +8572,7 @@
 
 
     // $ANTLR start "entryRuleOpOr"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2841:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
+    // InternalChartDSL.g:2985:1: entryRuleOpOr returns [String current=null] : iv_ruleOpOr= ruleOpOr EOF ;
     public final String entryRuleOpOr() throws RecognitionException {
         String current = null;
 
@@ -8106,13 +8580,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2842:2: (iv_ruleOpOr= ruleOpOr EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2843:2: iv_ruleOpOr= ruleOpOr EOF
+            // InternalChartDSL.g:2985:44: (iv_ruleOpOr= ruleOpOr EOF )
+            // InternalChartDSL.g:2986:2: iv_ruleOpOr= ruleOpOr EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpOrRule()); 
             }
-            pushFollow(FOLLOW_ruleOpOr_in_entryRuleOpOr7050);
+            pushFollow(FOLLOW_1);
             iv_ruleOpOr=ruleOpOr();
 
             state._fsp--;
@@ -8120,16 +8594,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleOpOr.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOr7061); 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;
@@ -8138,37 +8612,40 @@
 
 
     // $ANTLR start "ruleOpOr"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2850:1: ruleOpOr returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '||' ;
+    // InternalChartDSL.g:2992: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2853:28: (kw= '||' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2855:2: kw= '||'
+            // InternalChartDSL.g:2998:2: (kw= '||' )
+            // InternalChartDSL.g:2999:2: kw= '||'
             {
-            kw=(Token)match(input,82,FOLLOW_82_in_ruleOpOr7098); if (state.failed) return current;
+            kw=(Token)match(input,86,FOLLOW_2); if (state.failed) return current;
             if ( state.backtracking==0 ) {
 
-                      current.merge(kw);
-                      newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword()); 
-                  
+              		current.merge(kw);
+              		newLeafNode(kw, grammarAccess.getOpOrAccess().getVerticalLineVerticalLineKeyword());
+              	
             }
 
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
@@ -8177,7 +8654,7 @@
 
 
     // $ANTLR start "entryRuleXAndExpression"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2868:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
+    // InternalChartDSL.g:3007:1: entryRuleXAndExpression returns [EObject current=null] : iv_ruleXAndExpression= ruleXAndExpression EOF ;
     public final EObject entryRuleXAndExpression() throws RecognitionException {
         EObject current = null;
 
@@ -8185,13 +8662,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2869:2: (iv_ruleXAndExpression= ruleXAndExpression EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2870:2: iv_ruleXAndExpression= ruleXAndExpression EOF
+            // InternalChartDSL.g:3007:55: (iv_ruleXAndExpression= ruleXAndExpression EOF )
+            // InternalChartDSL.g:3008:2: iv_ruleXAndExpression= ruleXAndExpression EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getXAndExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXAndExpression_in_entryRuleXAndExpression7137);
+            pushFollow(FOLLOW_1);
             iv_ruleXAndExpression=ruleXAndExpression();
 
             state._fsp--;
@@ -8199,16 +8676,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleXAndExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXAndExpression7147); 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;
@@ -8217,7 +8694,7 @@
 
 
     // $ANTLR start "ruleXAndExpression"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2877:1: ruleXAndExpression returns [EObject current=null] : (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) ;
+    // InternalChartDSL.g:3014: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;
 
@@ -8226,98 +8703,99 @@
         EObject lv_rightOperand_3_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2880:28: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2881:1: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            // InternalChartDSL.g:3020:2: ( (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* ) )
+            // InternalChartDSL.g:3021:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2881:1: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2882:5: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            // InternalChartDSL.g:3021:2: (this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )* )
+            // InternalChartDSL.g:3022:3: this_XEqualityExpression_0= ruleXEqualityExpression ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0()); 
-                  
+
+              			newCompositeNode(grammarAccess.getXAndExpressionAccess().getXEqualityExpressionParserRuleCall_0());
+              		
             }
-            pushFollow(FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression7194);
+            pushFollow(FOLLOW_60);
             this_XEqualityExpression_0=ruleXEqualityExpression();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-                      current = this_XEqualityExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
-            }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2890:1: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
-            loop47:
-            do {
-                int alt47=2;
-                int LA47_0 = input.LA(1);
 
-                if ( (LA47_0==83) ) {
-                    int LA47_2 = input.LA(2);
+              			current = this_XEqualityExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalChartDSL.g:3030:3: ( ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) ) )*
+            loop50:
+            do {
+                int alt50=2;
+                int LA50_0 = input.LA(1);
+
+                if ( (LA50_0==87) ) {
+                    int LA50_2 = input.LA(2);
 
                     if ( (synpred9_InternalChartDSL()) ) {
-                        alt47=1;
+                        alt50=1;
                     }
 
 
                 }
 
 
-                switch (alt47) {
+                switch (alt50) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2890:2: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    // InternalChartDSL.g:3031:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) ) ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2890:2: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2890:3: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
+            	    // InternalChartDSL.g:3031:4: ( ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) ) )
+            	    // InternalChartDSL.g:3032:5: ( ( () ( ( ruleOpAnd ) ) ) )=> ( () ( ( ruleOpAnd ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2895:6: ( () ( ( ruleOpAnd ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2895:7: () ( ( ruleOpAnd ) )
+            	    // InternalChartDSL.g:3042:5: ( () ( ( ruleOpAnd ) ) )
+            	    // InternalChartDSL.g:3043:6: () ( ( ruleOpAnd ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2895:7: ()
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2896:5: 
+            	    // InternalChartDSL.g:3043:6: ()
+            	    // InternalChartDSL.g:3044:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            	                  current);
-            	          
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXAndExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								current);
+            	      						
             	    }
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2901:2: ( ( ruleOpAnd ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2902:1: ( ruleOpAnd )
+            	    // InternalChartDSL.g:3050:6: ( ( ruleOpAnd ) )
+            	    // InternalChartDSL.g:3051:7: ( ruleOpAnd )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2902:1: ( ruleOpAnd )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2903:3: ruleOpAnd
+            	    // InternalChartDSL.g:3051:7: ( ruleOpAnd )
+            	    // InternalChartDSL.g:3052:8: ruleOpAnd
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	      			if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getXAndExpressionRule());
-            	      	        }
-            	              
+            	      								if (current==null) {
+            	      									current = createModelElement(grammarAccess.getXAndExpressionRule());
+            	      								}
+            	      							
             	    }
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-            	      	    
+
+            	      								newCompositeNode(grammarAccess.getXAndExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+            	      							
             	    }
-            	    pushFollow(FOLLOW_ruleOpAnd_in_ruleXAndExpression7247);
+            	    pushFollow(FOLLOW_50);
             	    ruleOpAnd();
 
             	    state._fsp--;
             	    if (state.failed) return current;
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
             	    }
 
             	    }
@@ -8331,34 +8809,34 @@
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2916:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2917:1: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    // InternalChartDSL.g:3068:4: ( (lv_rightOperand_3_0= ruleXEqualityExpression ) )
+            	    // InternalChartDSL.g:3069:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2917:1: (lv_rightOperand_3_0= ruleXEqualityExpression )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2918:3: lv_rightOperand_3_0= ruleXEqualityExpression
+            	    // InternalChartDSL.g:3069:5: (lv_rightOperand_3_0= ruleXEqualityExpression )
+            	    // InternalChartDSL.g:3070:6: lv_rightOperand_3_0= ruleXEqualityExpression
             	    {
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0()); 
-            	      	    
+
+            	      						newCompositeNode(grammarAccess.getXAndExpressionAccess().getRightOperandXEqualityExpressionParserRuleCall_1_1_0());
+            	      					
             	    }
-            	    pushFollow(FOLLOW_ruleXEqualityExpression_in_ruleXAndExpression7270);
+            	    pushFollow(FOLLOW_60);
             	    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();
-            	      	    
+            	      						if (current==null) {
+            	      							current = createModelElementForParent(grammarAccess.getXAndExpressionRule());
+            	      						}
+            	      						set(
+            	      							current,
+            	      							"rightOperand",
+            	      							lv_rightOperand_3_0,
+            	      							"org.eclipse.xtext.xbase.Xbase.XEqualityExpression");
+            	      						afterParserOrEnumRuleCall();
+            	      					
             	    }
 
             	    }
@@ -8371,843 +8849,6 @@
             	    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"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2942: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2943:2: (iv_ruleOpAnd= ruleOpAnd EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2944:2: iv_ruleOpAnd= ruleOpAnd EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpAndRule()); 
-            }
-            pushFollow(FOLLOW_ruleOpAnd_in_entryRuleOpAnd7309);
-            iv_ruleOpAnd=ruleOpAnd();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleOpAnd.getText(); 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpAnd7320); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2951: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2954:28: (kw= '&&' )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2956:2: kw= '&&'
-            {
-            kw=(Token)match(input,83,FOLLOW_83_in_ruleOpAnd7357); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2969: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2970:2: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2971:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXEqualityExpressionRule()); 
-            }
-            pushFollow(FOLLOW_ruleXEqualityExpression_in_entryRuleXEqualityExpression7396);
-            iv_ruleXEqualityExpression=ruleXEqualityExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleXEqualityExpression; 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXEqualityExpression7406); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2978: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2981:28: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2982:1: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
-            {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2982:1: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2983: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_ruleXEqualityExpression7453);
-            this_XRelationalExpression_0=ruleXRelationalExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               
-                      current = this_XRelationalExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
-            }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2991:1: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
-            loop48:
-            do {
-                int alt48=2;
-                switch ( input.LA(1) ) {
-                case 84:
-                    {
-                    int LA48_2 = input.LA(2);
-
-                    if ( (synpred10_InternalChartDSL()) ) {
-                        alt48=1;
-                    }
-
-
-                    }
-                    break;
-                case 85:
-                    {
-                    int LA48_3 = input.LA(2);
-
-                    if ( (synpred10_InternalChartDSL()) ) {
-                        alt48=1;
-                    }
-
-
-                    }
-                    break;
-                case 86:
-                    {
-                    int LA48_4 = input.LA(2);
-
-                    if ( (synpred10_InternalChartDSL()) ) {
-                        alt48=1;
-                    }
-
-
-                    }
-                    break;
-                case 87:
-                    {
-                    int LA48_5 = input.LA(2);
-
-                    if ( (synpred10_InternalChartDSL()) ) {
-                        alt48=1;
-                    }
-
-
-                    }
-                    break;
-
-                }
-
-                switch (alt48) {
-            	case 1 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2991:2: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2991:2: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2991:3: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2996:6: ( () ( ( ruleOpEquality ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2996:7: () ( ( ruleOpEquality ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2996:7: ()
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:2997:5: 
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            	                  current);
-            	          
-            	    }
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3002:2: ( ( ruleOpEquality ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3003:1: ( ruleOpEquality )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3003:1: ( ruleOpEquality )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3004: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_ruleXEqualityExpression7506);
-            	    ruleOpEquality();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3017:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3018:1: (lv_rightOperand_3_0= ruleXRelationalExpression )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3018:1: (lv_rightOperand_3_0= ruleXRelationalExpression )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3019:3: lv_rightOperand_3_0= ruleXRelationalExpression
-            	    {
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleXRelationalExpression_in_ruleXEqualityExpression7529);
-            	    lv_rightOperand_3_0=ruleXRelationalExpression();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
-            	      	        }
-            	             		set(
-            	             			current, 
-            	             			"rightOperand",
-            	              		lv_rightOperand_3_0, 
-            	              		"XRelationalExpression");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-            	    break;
-
-            	default :
-            	    break loop48;
-                }
-            } while (true);
-
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleXEqualityExpression"
-
-
-    // $ANTLR start "entryRuleOpEquality"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3043:1: entryRuleOpEquality returns [String current=null] : iv_ruleOpEquality= ruleOpEquality EOF ;
-    public final String entryRuleOpEquality() throws RecognitionException {
-        String current = null;
-
-        AntlrDatatypeRuleToken iv_ruleOpEquality = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3044:2: (iv_ruleOpEquality= ruleOpEquality EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3045:2: iv_ruleOpEquality= ruleOpEquality EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpEqualityRule()); 
-            }
-            pushFollow(FOLLOW_ruleOpEquality_in_entryRuleOpEquality7568);
-            iv_ruleOpEquality=ruleOpEquality();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleOpEquality.getText(); 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpEquality7579); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleOpEquality"
-
-
-    // $ANTLR start "ruleOpEquality"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3052:1: ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) ;
-    public final AntlrDatatypeRuleToken ruleOpEquality() throws RecognitionException {
-        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
-
-        Token kw=null;
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3055:28: ( (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3056:1: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
-            {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3056:1: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
-            int alt49=4;
-            switch ( input.LA(1) ) {
-            case 84:
-                {
-                alt49=1;
-                }
-                break;
-            case 85:
-                {
-                alt49=2;
-                }
-                break;
-            case 86:
-                {
-                alt49=3;
-                }
-                break;
-            case 87:
-                {
-                alt49=4;
-                }
-                break;
-            default:
-                if (state.backtracking>0) {state.failed=true; return current;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 49, 0, input);
-
-                throw nvae;
-            }
-
-            switch (alt49) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3057:2: kw= '=='
-                    {
-                    kw=(Token)match(input,84,FOLLOW_84_in_ruleOpEquality7617); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3064:2: kw= '!='
-                    {
-                    kw=(Token)match(input,85,FOLLOW_85_in_ruleOpEquality7636); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3071:2: kw= '==='
-                    {
-                    kw=(Token)match(input,86,FOLLOW_86_in_ruleOpEquality7655); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3078:2: kw= '!=='
-                    {
-                    kw=(Token)match(input,87,FOLLOW_87_in_ruleOpEquality7674); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3()); 
-                          
-                    }
-
-                    }
-                    break;
-
-            }
-
-
-            }
-
-            if ( state.backtracking==0 ) {
-               leaveRule(); 
-            }
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "ruleOpEquality"
-
-
-    // $ANTLR start "entryRuleXRelationalExpression"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3091:1: entryRuleXRelationalExpression returns [EObject current=null] : iv_ruleXRelationalExpression= ruleXRelationalExpression EOF ;
-    public final EObject entryRuleXRelationalExpression() throws RecognitionException {
-        EObject current = null;
-
-        EObject iv_ruleXRelationalExpression = null;
-
-
-        try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3092:2: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3093:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
-            {
-            if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXRelationalExpressionRule()); 
-            }
-            pushFollow(FOLLOW_ruleXRelationalExpression_in_entryRuleXRelationalExpression7714);
-            iv_ruleXRelationalExpression=ruleXRelationalExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               current =iv_ruleXRelationalExpression; 
-            }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXRelationalExpression7724); if (state.failed) return current;
-
-            }
-
-        }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
-                appendSkippedTokens();
-            } 
-        finally {
-        }
-        return current;
-    }
-    // $ANTLR end "entryRuleXRelationalExpression"
-
-
-    // $ANTLR start "ruleXRelationalExpression"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3100:1: ruleXRelationalExpression returns [EObject current=null] : (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) ;
-    public final EObject ruleXRelationalExpression() throws RecognitionException {
-        EObject current = null;
-
-        Token otherlv_2=null;
-        EObject this_XOtherOperatorExpression_0 = null;
-
-        EObject lv_type_3_0 = null;
-
-        EObject lv_rightOperand_6_0 = null;
-
-
-         enterRule(); 
-            
-        try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3103: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3104: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3104: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3105:5: this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
-            {
-            if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0()); 
-                  
-            }
-            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression7771);
-            this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression();
-
-            state._fsp--;
-            if (state.failed) return current;
-            if ( state.backtracking==0 ) {
-               
-                      current = this_XOtherOperatorExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
-            }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3113:1: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
-            loop50:
-            do {
-                int alt50=3;
-                switch ( input.LA(1) ) {
-                case 79:
-                    {
-                    int LA50_2 = input.LA(2);
-
-                    if ( (synpred12_InternalChartDSL()) ) {
-                        alt50=2;
-                    }
-
-
-                    }
-                    break;
-                case 80:
-                    {
-                    int LA50_3 = input.LA(2);
-
-                    if ( (synpred12_InternalChartDSL()) ) {
-                        alt50=2;
-                    }
-
-
-                    }
-                    break;
-                case 88:
-                    {
-                    int LA50_4 = input.LA(2);
-
-                    if ( (synpred11_InternalChartDSL()) ) {
-                        alt50=1;
-                    }
-
-
-                    }
-                    break;
-                case 81:
-                    {
-                    int LA50_5 = input.LA(2);
-
-                    if ( (synpred12_InternalChartDSL()) ) {
-                        alt50=2;
-                    }
-
-
-                    }
-                    break;
-
-                }
-
-                switch (alt50) {
-            	case 1 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3113:2: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3113:2: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3113:3: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3113:3: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3113:4: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3115:5: ( () otherlv_2= 'instanceof' )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3115:6: () otherlv_2= 'instanceof'
-            	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3115:6: ()
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3116:5: 
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
-            	                  current);
-            	          
-            	    }
-
-            	    }
-
-            	    otherlv_2=(Token)match(input,88,FOLLOW_88_in_ruleXRelationalExpression7807); if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	          	newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
-            	          
-            	    }
-
-            	    }
-
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3125:3: ( (lv_type_3_0= ruleJvmTypeReference ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3126:1: (lv_type_3_0= ruleJvmTypeReference )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3126:1: (lv_type_3_0= ruleJvmTypeReference )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3127:3: lv_type_3_0= ruleJvmTypeReference
-            	    {
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleJvmTypeReference_in_ruleXRelationalExpression7830);
-            	    lv_type_3_0=ruleJvmTypeReference();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
-            	      	        }
-            	             		set(
-            	             			current, 
-            	             			"type",
-            	              		lv_type_3_0, 
-            	              		"JvmTypeReference");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-            	    break;
-            	case 2 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3144:6: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3144:6: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3144:7: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3144:7: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3144:8: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3149:6: ( () ( ( ruleOpCompare ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3149:7: () ( ( ruleOpCompare ) )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3149:7: ()
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3150:5: 
-            	    {
-            	    if ( state.backtracking==0 ) {
-
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
-            	                  current);
-            	          
-            	    }
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3155:2: ( ( ruleOpCompare ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3156:1: ( ruleOpCompare )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3156:1: ( ruleOpCompare )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3157: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_ruleXRelationalExpression7891);
-            	    ruleOpCompare();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3170:4: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3171:1: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3171:1: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3172:3: lv_rightOperand_6_0= ruleXOtherOperatorExpression
-            	    {
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_ruleXRelationalExpression7914);
-            	    lv_rightOperand_6_0=ruleXOtherOperatorExpression();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-
-            	      	        if (current==null) {
-            	      	            current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
-            	      	        }
-            	             		set(
-            	             			current, 
-            	             			"rightOperand",
-            	              		lv_rightOperand_6_0, 
-            	              		"XOtherOperatorExpression");
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-            	    break;
-
-            	default :
             	    break loop50;
                 }
             } while (true);
@@ -9219,373 +8860,324 @@
             }
 
             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 "ruleXAndExpression"
 
 
-    // $ANTLR start "entryRuleOpCompare"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3196:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
-    public final String entryRuleOpCompare() throws RecognitionException {
+    // $ANTLR start "entryRuleOpAnd"
+    // InternalChartDSL.g:3092:1: entryRuleOpAnd returns [String current=null] : iv_ruleOpAnd= ruleOpAnd EOF ;
+    public final String entryRuleOpAnd() throws RecognitionException {
         String current = null;
 
-        AntlrDatatypeRuleToken iv_ruleOpCompare = null;
+        AntlrDatatypeRuleToken iv_ruleOpAnd = null;
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3197:2: (iv_ruleOpCompare= ruleOpCompare EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3198:2: iv_ruleOpCompare= ruleOpCompare EOF
+            // InternalChartDSL.g:3092:45: (iv_ruleOpAnd= ruleOpAnd EOF )
+            // InternalChartDSL.g:3093:2: iv_ruleOpAnd= ruleOpAnd EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getOpCompareRule()); 
+               newCompositeNode(grammarAccess.getOpAndRule()); 
             }
-            pushFollow(FOLLOW_ruleOpCompare_in_entryRuleOpCompare7954);
-            iv_ruleOpCompare=ruleOpCompare();
+            pushFollow(FOLLOW_1);
+            iv_ruleOpAnd=ruleOpAnd();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleOpCompare.getText(); 
+               current =iv_ruleOpAnd.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpCompare7965); 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 "entryRuleOpAnd"
 
 
-    // $ANTLR start "ruleOpCompare"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3205:1: ruleOpCompare returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) ;
-    public final AntlrDatatypeRuleToken ruleOpCompare() throws RecognitionException {
+    // $ANTLR start "ruleOpAnd"
+    // InternalChartDSL.g:3099:1: ruleOpAnd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= '&&' ;
+    public final AntlrDatatypeRuleToken ruleOpAnd() throws RecognitionException {
         AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
 
         Token kw=null;
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3208:28: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3209:1: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            // InternalChartDSL.g:3105:2: (kw= '&&' )
+            // InternalChartDSL.g:3106:2: kw= '&&'
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3209:1: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
-            int alt51=4;
-            switch ( input.LA(1) ) {
-            case 81:
-                {
-                alt51=1;
-                }
-                break;
-            case 79:
-                {
-                int LA51_2 = input.LA(2);
+            kw=(Token)match(input,87,FOLLOW_2); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
 
-                if ( (LA51_2==EOF||(LA51_2>=RULE_INT && LA51_2<=RULE_DECIMAL)||LA51_2==14||(LA51_2>=62 && LA51_2<=63)||LA51_2==67||(LA51_2>=71 && LA51_2<=72)||LA51_2==79||LA51_2==95||LA51_2==99||LA51_2==106||LA51_2==108||(LA51_2>=112 && LA51_2<=114)||(LA51_2>=117 && LA51_2<=128)||LA51_2==130) ) {
-                    alt51=4;
-                }
-                else if ( (LA51_2==70) ) {
-                    alt51=2;
-                }
-                else {
-                    if (state.backtracking>0) {state.failed=true; return current;}
-                    NoViableAltException nvae =
-                        new NoViableAltException("", 51, 2, input);
-
-                    throw nvae;
-                }
-                }
-                break;
-            case 80:
-                {
-                alt51=3;
-                }
-                break;
-            default:
-                if (state.backtracking>0) {state.failed=true; return current;}
-                NoViableAltException nvae =
-                    new NoViableAltException("", 51, 0, input);
-
-                throw nvae;
+              		current.merge(kw);
+              		newLeafNode(kw, grammarAccess.getOpAndAccess().getAmpersandAmpersandKeyword());
+              	
             }
 
-            switch (alt51) {
-                case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3210:2: kw= '>='
-                    {
-                    kw=(Token)match(input,81,FOLLOW_81_in_ruleOpCompare8003); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0()); 
-                          
-                    }
-
-                    }
-                    break;
-                case 2 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3216:6: (kw= '<' kw= '=' )
-                    {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3216:6: (kw= '<' kw= '=' )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3217:2: kw= '<' kw= '='
-                    {
-                    kw=(Token)match(input,79,FOLLOW_79_in_ruleOpCompare8023); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0()); 
-                          
-                    }
-                    kw=(Token)match(input,70,FOLLOW_70_in_ruleOpCompare8036); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3230:2: kw= '>'
-                    {
-                    kw=(Token)match(input,80,FOLLOW_80_in_ruleOpCompare8056); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2()); 
-                          
-                    }
-
-                    }
-                    break;
-                case 4 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3237:2: kw= '<'
-                    {
-                    kw=(Token)match(input,79,FOLLOW_79_in_ruleOpCompare8075); if (state.failed) return current;
-                    if ( state.backtracking==0 ) {
-
-                              current.merge(kw);
-                              newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_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 "ruleOpCompare"
+    // $ANTLR end "ruleOpAnd"
 
 
-    // $ANTLR start "entryRuleXOtherOperatorExpression"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3250:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
-    public final EObject entryRuleXOtherOperatorExpression() throws RecognitionException {
+    // $ANTLR start "entryRuleXEqualityExpression"
+    // InternalChartDSL.g:3114:1: entryRuleXEqualityExpression returns [EObject current=null] : iv_ruleXEqualityExpression= ruleXEqualityExpression EOF ;
+    public final EObject entryRuleXEqualityExpression() throws RecognitionException {
         EObject current = null;
 
-        EObject iv_ruleXOtherOperatorExpression = null;
+        EObject iv_ruleXEqualityExpression = null;
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3251:2: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3252:2: iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF
+            // InternalChartDSL.g:3114:60: (iv_ruleXEqualityExpression= ruleXEqualityExpression EOF )
+            // InternalChartDSL.g:3115:2: iv_ruleXEqualityExpression= ruleXEqualityExpression EOF
             {
             if ( state.backtracking==0 ) {
-               newCompositeNode(grammarAccess.getXOtherOperatorExpressionRule()); 
+               newCompositeNode(grammarAccess.getXEqualityExpressionRule()); 
             }
-            pushFollow(FOLLOW_ruleXOtherOperatorExpression_in_entryRuleXOtherOperatorExpression8115);
-            iv_ruleXOtherOperatorExpression=ruleXOtherOperatorExpression();
+            pushFollow(FOLLOW_1);
+            iv_ruleXEqualityExpression=ruleXEqualityExpression();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               current =iv_ruleXOtherOperatorExpression; 
+               current =iv_ruleXEqualityExpression; 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleXOtherOperatorExpression8125); 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 "entryRuleXEqualityExpression"
 
 
-    // $ANTLR start "ruleXOtherOperatorExpression"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3259: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 "ruleXEqualityExpression"
+    // InternalChartDSL.g:3121: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_XAdditiveExpression_0 = null;
+        EObject this_XRelationalExpression_0 = null;
 
         EObject lv_rightOperand_3_0 = null;
 
 
-         enterRule(); 
-            
+
+        	enterRule();
+
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3262:28: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3263:1: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            // InternalChartDSL.g:3127:2: ( (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* ) )
+            // InternalChartDSL.g:3128:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3263:1: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3264:5: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            // InternalChartDSL.g:3128:2: (this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )* )
+            // InternalChartDSL.g:3129:3: this_XRelationalExpression_0= ruleXRelationalExpression ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
             {
             if ( state.backtracking==0 ) {
-               
-                      newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0()); 
-                  
+
+              			newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getXRelationalExpressionParserRuleCall_0());
+              		
             }
-            pushFollow(FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression8172);
-            this_XAdditiveExpression_0=ruleXAdditiveExpression();
+            pushFollow(FOLLOW_61);
+            this_XRelationalExpression_0=ruleXRelationalExpression();
 
             state._fsp--;
             if (state.failed) return current;
             if ( state.backtracking==0 ) {
-               
-                      current = this_XAdditiveExpression_0; 
-                      afterParserOrEnumRuleCall();
-                  
+
+              			current = this_XRelationalExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
             }
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3272:1: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
-            loop52:
+            // InternalChartDSL.g:3137:3: ( ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) ) )*
+            loop51:
             do {
-                int alt52=2;
-                alt52 = dfa52.predict(input);
-                switch (alt52) {
+                int alt51=2;
+                switch ( input.LA(1) ) {
+                case 88:
+                    {
+                    int LA51_2 = input.LA(2);
+
+                    if ( (synpred10_InternalChartDSL()) ) {
+                        alt51=1;
+                    }
+
+
+                    }
+                    break;
+                case 89:
+                    {
+                    int LA51_3 = input.LA(2);
+
+                    if ( (synpred10_InternalChartDSL()) ) {
+                        alt51=1;
+                    }
+
+
+                    }
+                    break;
+                case 90:
+                    {
+                    int LA51_4 = input.LA(2);
+
+                    if ( (synpred10_InternalChartDSL()) ) {
+                        alt51=1;
+                    }
+
+
+                    }
+                    break;
+                case 91:
+                    {
+                    int LA51_5 = input.LA(2);
+
+                    if ( (synpred10_InternalChartDSL()) ) {
+                        alt51=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt51) {
             	case 1 :
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3272:2: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    // InternalChartDSL.g:3138:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) ) ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3272:2: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3272:3: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
+            	    // InternalChartDSL.g:3138:4: ( ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) ) )
+            	    // InternalChartDSL.g:3139:5: ( ( () ( ( ruleOpEquality ) ) ) )=> ( () ( ( ruleOpEquality ) ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3277:6: ( () ( ( ruleOpOther ) ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3277:7: () ( ( ruleOpOther ) )
+            	    // InternalChartDSL.g:3149:5: ( () ( ( ruleOpEquality ) ) )
+            	    // InternalChartDSL.g:3150:6: () ( ( ruleOpEquality ) )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3277:7: ()
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3278:5: 
+            	    // InternalChartDSL.g:3150:6: ()
+            	    // InternalChartDSL.g:3151:7: 
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	              current = forceCreateModelElementAndSet(
-            	                  grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
-            	                  current);
-            	          
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXEqualityExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								current);
+            	      						
             	    }
 
             	    }
 
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3283:2: ( ( ruleOpOther ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3284:1: ( ruleOpOther )
+            	    // InternalChartDSL.g:3157:6: ( ( ruleOpEquality ) )
+            	    // InternalChartDSL.g:3158:7: ( ruleOpEquality )
             	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3284:1: ( ruleOpOther )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3285:3: ruleOpOther
+            	    // InternalChartDSL.g:3158:7: ( ruleOpEquality )
+            	    // InternalChartDSL.g:3159:8: ruleOpEquality
             	    {
             	    if ( state.backtracking==0 ) {
 
-            	      			if (current==null) {
-            	      	            current = createModelElement(grammarAccess.getXOtherOperatorExpressionRule());
-            	      	        }
-            	              
+            	      								if (current==null) {
+            	      									current = createModelElement(grammarAccess.getXEqualityExpressionRule());
+            	      								}
+            	      							
             	    }
             	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0()); 
-            	      	    
+
+            	      								newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+            	      							
             	    }
-            	    pushFollow(FOLLOW_ruleOpOther_in_ruleXOtherOperatorExpression8225);
-            	    ruleOpOther();
-
-            	    state._fsp--;
-            	    if (state.failed) return current;
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        afterParserOrEnumRuleCall();
-            	      	    
-            	    }
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-
-            	    }
-
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3298:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3299:1: (lv_rightOperand_3_0= ruleXAdditiveExpression )
-            	    {
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3299:1: (lv_rightOperand_3_0= ruleXAdditiveExpression )
-            	    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3300:3: lv_rightOperand_3_0= ruleXAdditiveExpression
-            	    {
-            	    if ( state.backtracking==0 ) {
-            	       
-            	      	        newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0()); 
-            	      	    
-            	    }
-            	    pushFollow(FOLLOW_ruleXAdditiveExpression_in_ruleXOtherOperatorExpression8248);
-            	    lv_rightOperand_3_0=ruleXAdditiveExpression();
+            	    pushFollow(FOLLOW_50);
+            	    ruleOpEquality();
 
             	    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();
-            	      	    
+            	      								afterParserOrEnumRuleCall();
+            	      							
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalChartDSL.g:3175:4: ( (lv_rightOperand_3_0= ruleXRelationalExpression ) )
+            	    // InternalChartDSL.g:3176:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
+            	    {
+            	    // InternalChartDSL.g:3176:5: (lv_rightOperand_3_0= ruleXRelationalExpression )
+            	    // InternalChartDSL.g:3177:6: lv_rightOperand_3_0= ruleXRelationalExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXEqualityExpressionAccess().getRightOperandXRelationalExpressionParserRuleCall_1_1_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_61);
+            	    lv_rightOperand_3_0=ruleXRelationalExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      						if (current==null) {
+            	      							current = createModelElementForParent(grammarAccess.getXEqualityExpressionRule());
+            	      						}
+            	      						set(
+            	      							current,
+            	      							"rightOperand",
+            	      							lv_rightOperand_3_0,
+            	      							"org.eclipse.xtext.xbase.Xbase.XRelationalExpression");
+            	      						afterParserOrEnumRuleCall();
+            	      					
             	    }
 
             	    }
@@ -9598,7 +9190,7 @@
             	    break;
 
             	default :
-            	    break loop52;
+            	    break loop51;
                 }
             } while (true);
 
@@ -9609,14 +9201,920 @@
             }
 
             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 start "entryRuleOpEquality"
+    // InternalChartDSL.g:3199:1: entryRuleOpEquality returns [String current=null] : iv_ruleOpEquality= ruleOpEquality EOF ;
+    public final String entryRuleOpEquality() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpEquality = null;
+
+
+        try {
+            // InternalChartDSL.g:3199:50: (iv_ruleOpEquality= ruleOpEquality EOF )
+            // InternalChartDSL.g:3200:2: iv_ruleOpEquality= ruleOpEquality EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpEqualityRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleOpEquality=ruleOpEquality();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpEquality.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpEquality"
+
+
+    // $ANTLR start "ruleOpEquality"
+    // InternalChartDSL.g:3206:1: ruleOpEquality returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) ;
+    public final AntlrDatatypeRuleToken ruleOpEquality() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalChartDSL.g:3212:2: ( (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' ) )
+            // InternalChartDSL.g:3213:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            {
+            // InternalChartDSL.g:3213:2: (kw= '==' | kw= '!=' | kw= '===' | kw= '!==' )
+            int alt52=4;
+            switch ( input.LA(1) ) {
+            case 88:
+                {
+                alt52=1;
+                }
+                break;
+            case 89:
+                {
+                alt52=2;
+                }
+                break;
+            case 90:
+                {
+                alt52=3;
+                }
+                break;
+            case 91:
+                {
+                alt52=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 52, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt52) {
+                case 1 :
+                    // InternalChartDSL.g:3214:3: kw= '=='
+                    {
+                    kw=(Token)match(input,88,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignKeyword_0());
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:3220:3: kw= '!='
+                    {
+                    kw=(Token)match(input,89,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignKeyword_1());
+                      		
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // InternalChartDSL.g:3226:3: kw= '==='
+                    {
+                    kw=(Token)match(input,90,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getEqualsSignEqualsSignEqualsSignKeyword_2());
+                      		
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // InternalChartDSL.g:3232:3: kw= '!=='
+                    {
+                    kw=(Token)match(input,91,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpEqualityAccess().getExclamationMarkEqualsSignEqualsSignKeyword_3());
+                      		
+                    }
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleOpEquality"
+
+
+    // $ANTLR start "entryRuleXRelationalExpression"
+    // InternalChartDSL.g:3241:1: entryRuleXRelationalExpression returns [EObject current=null] : iv_ruleXRelationalExpression= ruleXRelationalExpression EOF ;
+    public final EObject entryRuleXRelationalExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXRelationalExpression = null;
+
+
+        try {
+            // InternalChartDSL.g:3241:62: (iv_ruleXRelationalExpression= ruleXRelationalExpression EOF )
+            // InternalChartDSL.g:3242:2: iv_ruleXRelationalExpression= ruleXRelationalExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXRelationalExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXRelationalExpression=ruleXRelationalExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXRelationalExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXRelationalExpression"
+
+
+    // $ANTLR start "ruleXRelationalExpression"
+    // InternalChartDSL.g:3248:1: ruleXRelationalExpression returns [EObject current=null] : (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) ;
+    public final EObject ruleXRelationalExpression() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_2=null;
+        EObject this_XOtherOperatorExpression_0 = null;
+
+        EObject lv_type_3_0 = null;
+
+        EObject lv_rightOperand_6_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalChartDSL.g:3254:2: ( (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* ) )
+            // InternalChartDSL.g:3255:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
+            {
+            // InternalChartDSL.g:3255:2: (this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )* )
+            // InternalChartDSL.g:3256:3: this_XOtherOperatorExpression_0= ruleXOtherOperatorExpression ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getXOtherOperatorExpressionParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_62);
+            this_XOtherOperatorExpression_0=ruleXOtherOperatorExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XOtherOperatorExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalChartDSL.g:3264:3: ( ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) ) | ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) ) )*
+            loop53:
+            do {
+                int alt53=3;
+                switch ( input.LA(1) ) {
+                case 83:
+                    {
+                    int LA53_2 = input.LA(2);
+
+                    if ( (synpred12_InternalChartDSL()) ) {
+                        alt53=2;
+                    }
+
+
+                    }
+                    break;
+                case 84:
+                    {
+                    int LA53_3 = input.LA(2);
+
+                    if ( (synpred12_InternalChartDSL()) ) {
+                        alt53=2;
+                    }
+
+
+                    }
+                    break;
+                case 92:
+                    {
+                    int LA53_4 = input.LA(2);
+
+                    if ( (synpred11_InternalChartDSL()) ) {
+                        alt53=1;
+                    }
+
+
+                    }
+                    break;
+                case 85:
+                    {
+                    int LA53_5 = input.LA(2);
+
+                    if ( (synpred12_InternalChartDSL()) ) {
+                        alt53=2;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt53) {
+            	case 1 :
+            	    // InternalChartDSL.g:3265:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    {
+            	    // InternalChartDSL.g:3265:4: ( ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )
+            	    // InternalChartDSL.g:3266:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    {
+            	    // InternalChartDSL.g:3266:5: ( ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' ) )
+            	    // InternalChartDSL.g:3267:6: ( ( () 'instanceof' ) )=> ( () otherlv_2= 'instanceof' )
+            	    {
+            	    // InternalChartDSL.g:3273:6: ( () otherlv_2= 'instanceof' )
+            	    // InternalChartDSL.g:3274:7: () otherlv_2= 'instanceof'
+            	    {
+            	    // InternalChartDSL.g:3274:7: ()
+            	    // InternalChartDSL.g:3275:8: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								current = forceCreateModelElementAndSet(
+            	      									grammarAccess.getXRelationalExpressionAccess().getXInstanceOfExpressionExpressionAction_1_0_0_0_0(),
+            	      									current);
+            	      							
+            	    }
+
+            	    }
+
+            	    otherlv_2=(Token)match(input,92,FOLLOW_63); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      							newLeafNode(otherlv_2, grammarAccess.getXRelationalExpressionAccess().getInstanceofKeyword_1_0_0_0_1());
+            	      						
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalChartDSL.g:3287:5: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalChartDSL.g:3288:6: (lv_type_3_0= ruleJvmTypeReference )
+            	    {
+            	    // InternalChartDSL.g:3288:6: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalChartDSL.g:3289:7: lv_type_3_0= ruleJvmTypeReference
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_0_1_0());
+            	      						
+            	    }
+            	    pushFollow(FOLLOW_62);
+            	    lv_type_3_0=ruleJvmTypeReference();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      							if (current==null) {
+            	      								current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
+            	      							}
+            	      							set(
+            	      								current,
+            	      								"type",
+            	      								lv_type_3_0,
+            	      								"org.eclipse.xtext.xbase.Xtype.JvmTypeReference");
+            	      							afterParserOrEnumRuleCall();
+            	      						
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+            	case 2 :
+            	    // InternalChartDSL.g:3308:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    {
+            	    // InternalChartDSL.g:3308:4: ( ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) ) )
+            	    // InternalChartDSL.g:3309:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) ) ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    {
+            	    // InternalChartDSL.g:3309:5: ( ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) ) )
+            	    // InternalChartDSL.g:3310:6: ( ( () ( ( ruleOpCompare ) ) ) )=> ( () ( ( ruleOpCompare ) ) )
+            	    {
+            	    // InternalChartDSL.g:3320:6: ( () ( ( ruleOpCompare ) ) )
+            	    // InternalChartDSL.g:3321:7: () ( ( ruleOpCompare ) )
+            	    {
+            	    // InternalChartDSL.g:3321:7: ()
+            	    // InternalChartDSL.g:3322:8: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								current = forceCreateModelElementAndSet(
+            	      									grammarAccess.getXRelationalExpressionAccess().getXBinaryOperationLeftOperandAction_1_1_0_0_0(),
+            	      									current);
+            	      							
+            	    }
+
+            	    }
+
+            	    // InternalChartDSL.g:3328:7: ( ( ruleOpCompare ) )
+            	    // InternalChartDSL.g:3329:8: ( ruleOpCompare )
+            	    {
+            	    // InternalChartDSL.g:3329:8: ( ruleOpCompare )
+            	    // InternalChartDSL.g:3330: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_50);
+            	    ruleOpCompare();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      									afterParserOrEnumRuleCall();
+            	      								
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalChartDSL.g:3346:5: ( (lv_rightOperand_6_0= ruleXOtherOperatorExpression ) )
+            	    // InternalChartDSL.g:3347:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    {
+            	    // InternalChartDSL.g:3347:6: (lv_rightOperand_6_0= ruleXOtherOperatorExpression )
+            	    // InternalChartDSL.g:3348:7: lv_rightOperand_6_0= ruleXOtherOperatorExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							newCompositeNode(grammarAccess.getXRelationalExpressionAccess().getRightOperandXOtherOperatorExpressionParserRuleCall_1_1_1_0());
+            	      						
+            	    }
+            	    pushFollow(FOLLOW_62);
+            	    lv_rightOperand_6_0=ruleXOtherOperatorExpression();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      							if (current==null) {
+            	      								current = createModelElementForParent(grammarAccess.getXRelationalExpressionRule());
+            	      							}
+            	      							set(
+            	      								current,
+            	      								"rightOperand",
+            	      								lv_rightOperand_6_0,
+            	      								"org.eclipse.xtext.xbase.Xbase.XOtherOperatorExpression");
+            	      							afterParserOrEnumRuleCall();
+            	      						
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop53;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXRelationalExpression"
+
+
+    // $ANTLR start "entryRuleOpCompare"
+    // InternalChartDSL.g:3371:1: entryRuleOpCompare returns [String current=null] : iv_ruleOpCompare= ruleOpCompare EOF ;
+    public final String entryRuleOpCompare() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpCompare = null;
+
+
+        try {
+            // InternalChartDSL.g:3371:49: (iv_ruleOpCompare= ruleOpCompare EOF )
+            // InternalChartDSL.g:3372: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"
+    // InternalChartDSL.g:3378: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 {
+            // InternalChartDSL.g:3384:2: ( (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' ) )
+            // InternalChartDSL.g:3385:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            {
+            // InternalChartDSL.g:3385:2: (kw= '>=' | (kw= '<' kw= '=' ) | kw= '>' | kw= '<' )
+            int alt54=4;
+            switch ( input.LA(1) ) {
+            case 85:
+                {
+                alt54=1;
+                }
+                break;
+            case 83:
+                {
+                int LA54_2 = input.LA(2);
+
+                if ( (LA54_2==EOF||(LA54_2>=RULE_INT && LA54_2<=RULE_DECIMAL)||LA54_2==14||(LA54_2>=63 && LA54_2<=66)||LA54_2==71||(LA54_2>=75 && LA54_2<=76)||LA54_2==83||LA54_2==99||LA54_2==103||LA54_2==110||LA54_2==112||(LA54_2>=116 && LA54_2<=118)||(LA54_2>=121 && LA54_2<=130)||LA54_2==132) ) {
+                    alt54=4;
+                }
+                else if ( (LA54_2==74) ) {
+                    alt54=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 54, 2, input);
+
+                    throw nvae;
+                }
+                }
+                break;
+            case 84:
+                {
+                alt54=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 54, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt54) {
+                case 1 :
+                    // InternalChartDSL.g:3386:3: kw= '>='
+                    {
+                    kw=(Token)match(input,85,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignEqualsSignKeyword_0());
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:3392:3: (kw= '<' kw= '=' )
+                    {
+                    // InternalChartDSL.g:3392:3: (kw= '<' kw= '=' )
+                    // InternalChartDSL.g:3393:4: kw= '<' kw= '='
+                    {
+                    kw=(Token)match(input,83,FOLLOW_49); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpCompareAccess().getLessThanSignKeyword_1_0());
+                      			
+                    }
+                    kw=(Token)match(input,74,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current.merge(kw);
+                      				newLeafNode(kw, grammarAccess.getOpCompareAccess().getEqualsSignKeyword_1_1());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalChartDSL.g:3405:3: kw= '>'
+                    {
+                    kw=(Token)match(input,84,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpCompareAccess().getGreaterThanSignKeyword_2());
+                      		
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // InternalChartDSL.g:3411:3: kw= '<'
+                    {
+                    kw=(Token)match(input,83,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"
+    // InternalChartDSL.g:3420:1: entryRuleXOtherOperatorExpression returns [EObject current=null] : iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF ;
+    public final EObject entryRuleXOtherOperatorExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXOtherOperatorExpression = null;
+
+
+        try {
+            // InternalChartDSL.g:3420:65: (iv_ruleXOtherOperatorExpression= ruleXOtherOperatorExpression EOF )
+            // InternalChartDSL.g:3421: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"
+    // InternalChartDSL.g:3427: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 {
+            // InternalChartDSL.g:3433:2: ( (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* ) )
+            // InternalChartDSL.g:3434:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            {
+            // InternalChartDSL.g:3434:2: (this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )* )
+            // InternalChartDSL.g:3435:3: this_XAdditiveExpression_0= ruleXAdditiveExpression ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getXAdditiveExpressionParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_64);
+            this_XAdditiveExpression_0=ruleXAdditiveExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XAdditiveExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalChartDSL.g:3443:3: ( ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) ) )*
+            loop55:
+            do {
+                int alt55=2;
+                alt55 = dfa55.predict(input);
+                switch (alt55) {
+            	case 1 :
+            	    // InternalChartDSL.g:3444:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) ) ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    {
+            	    // InternalChartDSL.g:3444:4: ( ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) ) )
+            	    // InternalChartDSL.g:3445:5: ( ( () ( ( ruleOpOther ) ) ) )=> ( () ( ( ruleOpOther ) ) )
+            	    {
+            	    // InternalChartDSL.g:3455:5: ( () ( ( ruleOpOther ) ) )
+            	    // InternalChartDSL.g:3456:6: () ( ( ruleOpOther ) )
+            	    {
+            	    // InternalChartDSL.g:3456:6: ()
+            	    // InternalChartDSL.g:3457:7: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXOtherOperatorExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								current);
+            	      						
+            	    }
+
+            	    }
+
+            	    // InternalChartDSL.g:3463:6: ( ( ruleOpOther ) )
+            	    // InternalChartDSL.g:3464:7: ( ruleOpOther )
+            	    {
+            	    // InternalChartDSL.g:3464:7: ( ruleOpOther )
+            	    // InternalChartDSL.g:3465: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_50);
+            	    ruleOpOther();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalChartDSL.g:3481:4: ( (lv_rightOperand_3_0= ruleXAdditiveExpression ) )
+            	    // InternalChartDSL.g:3482:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    {
+            	    // InternalChartDSL.g:3482:5: (lv_rightOperand_3_0= ruleXAdditiveExpression )
+            	    // InternalChartDSL.g:3483:6: lv_rightOperand_3_0= ruleXAdditiveExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXOtherOperatorExpressionAccess().getRightOperandXAdditiveExpressionParserRuleCall_1_1_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_64);
+            	    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 loop55;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
         finally {
         }
         return current;
@@ -9625,7 +10123,7 @@
 
 
     // $ANTLR start "entryRuleOpOther"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3324:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
+    // InternalChartDSL.g:3505:1: entryRuleOpOther returns [String current=null] : iv_ruleOpOther= ruleOpOther EOF ;
     public final String entryRuleOpOther() throws RecognitionException {
         String current = null;
 
@@ -9633,13 +10131,13 @@
 
 
         try {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3325:2: (iv_ruleOpOther= ruleOpOther EOF )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3326:2: iv_ruleOpOther= ruleOpOther EOF
+            // InternalChartDSL.g:3505:47: (iv_ruleOpOther= ruleOpOther EOF )
+            // InternalChartDSL.g:3506:2: iv_ruleOpOther= ruleOpOther EOF
             {
             if ( state.backtracking==0 ) {
                newCompositeNode(grammarAccess.getOpOtherRule()); 
             }
-            pushFollow(FOLLOW_ruleOpOther_in_entryRuleOpOther8287);
+            pushFollow(FOLLOW_1);
             iv_ruleOpOther=ruleOpOther();
 
             state._fsp--;
@@ -9647,16 +10145,16 @@
             if ( state.backtracking==0 ) {
                current =iv_ruleOpOther.getText(); 
             }
-            match(input,EOF,FOLLOW_EOF_in_entryRuleOpOther8298); 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;
@@ -9665,67 +10163,68 @@
 
 
     // $ANTLR start "ruleOpOther"
-    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3333:1: ruleOpOther returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) ;
+    // InternalChartDSL.g:3512: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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3336:28: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) )
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3337:1: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            // InternalChartDSL.g:3518:2: ( (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' ) )
+            // InternalChartDSL.g:3519:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
             {
-            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3337:1: (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) {
+            // InternalChartDSL.g:3519:2: (kw= '->' | kw= '..<' | (kw= '>' kw= '..' ) | kw= '..' | kw= '=>' | (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) ) | (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) ) | kw= '<>' | kw= '?:' )
+            int alt58=9;
+            alt58 = dfa58.predict(input);
+            switch (alt58) {
                 case 1 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3338:2: kw= '->'
+                    // InternalChartDSL.g:3520:3: kw= '->'
                     {
-                    kw=(Token)match(input,89,FOLLOW_89_in_ruleOpOther8336); if (state.failed) return current;
+                    kw=(Token)match(input,93,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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3345:2: kw= '..<'
+                    // InternalChartDSL.g:3526:3: kw= '..<'
                     {
-                    kw=(Token)match(input,90,FOLLOW_90_in_ruleOpOther8355); if (state.failed) return current;
+                    kw=(Token)match(input,94,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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3351:6: (kw= '>' kw= '..' )
+                    // InternalChartDSL.g:3532:3: (kw= '>' kw= '..' )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3351:6: (kw= '>' kw= '..' )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3352:2: kw= '>' kw= '..'
+                    // InternalChartDSL.g:3532:3: (kw= '>' kw= '..' )
+                    // InternalChartDSL.g:3533:4: kw= '>' kw= '..'
                     {
-                    kw=(Token)match(input,80,FOLLOW_80_in_ruleOpOther8375); if (state.failed) return current;
+                    kw=(Token)match(input,84,FOLLOW_65); 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,91,FOLLOW_91_in_ruleOpOther8388); if (state.failed) return current;
+                    kw=(Token)match(input,95,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());
+                      			
                     }
 
                     }
@@ -9734,61 +10233,61 @@
                     }
                     break;
                 case 4 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3365:2: kw= '..'
+                    // InternalChartDSL.g:3545:3: kw= '..'
                     {
-                    kw=(Token)match(input,91,FOLLOW_91_in_ruleOpOther8408); if (state.failed) return current;
+                    kw=(Token)match(input,95,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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3372:2: kw= '=>'
+                    // InternalChartDSL.g:3551:3: kw= '=>'
                     {
-                    kw=(Token)match(input,92,FOLLOW_92_in_ruleOpOther8427); if (state.failed) return current;
+                    kw=(Token)match(input,96,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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3378:6: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    // InternalChartDSL.g:3557:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3378:6: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3379:2: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    // InternalChartDSL.g:3557:3: (kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' ) )
+                    // InternalChartDSL.g:3558:4: kw= '>' ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
                     {
-                    kw=(Token)match(input,80,FOLLOW_80_in_ruleOpOther8447); if (state.failed) return current;
+                    kw=(Token)match(input,84,FOLLOW_66); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3384:1: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
-                    int alt53=2;
-                    int LA53_0 = input.LA(1);
+                    // InternalChartDSL.g:3563:4: ( ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) ) | kw= '>' )
+                    int alt56=2;
+                    int LA56_0 = input.LA(1);
 
-                    if ( (LA53_0==80) ) {
-                        int LA53_1 = input.LA(2);
+                    if ( (LA56_0==84) ) {
+                        int LA56_1 = input.LA(2);
 
-                        if ( (LA53_1==EOF||(LA53_1>=RULE_INT && LA53_1<=RULE_DECIMAL)||LA53_1==14||(LA53_1>=62 && LA53_1<=63)||LA53_1==67||(LA53_1>=71 && LA53_1<=72)||LA53_1==79||LA53_1==95||LA53_1==99||LA53_1==106||LA53_1==108||(LA53_1>=112 && LA53_1<=114)||(LA53_1>=117 && LA53_1<=128)||LA53_1==130) ) {
-                            alt53=2;
+                        if ( (LA56_1==EOF||(LA56_1>=RULE_INT && LA56_1<=RULE_DECIMAL)||LA56_1==14||(LA56_1>=63 && LA56_1<=66)||LA56_1==71||(LA56_1>=75 && LA56_1<=76)||LA56_1==83||LA56_1==99||LA56_1==103||LA56_1==110||LA56_1==112||(LA56_1>=116 && LA56_1<=118)||(LA56_1>=121 && LA56_1<=130)||LA56_1==132) ) {
+                            alt56=2;
                         }
-                        else if ( (LA53_1==80) && (synpred14_InternalChartDSL())) {
-                            alt53=1;
+                        else if ( (LA56_1==84) && (synpred14_InternalChartDSL())) {
+                            alt56=1;
                         }
                         else {
                             if (state.backtracking>0) {state.failed=true; return current;}
                             NoViableAltException nvae =
-                                new NoViableAltException("", 53, 1, input);
+                                new NoViableAltException("", 56, 1, input);
 
                             throw nvae;
                         }
@@ -9796,33 +10295,33 @@
                     else {
                         if (state.backtracking>0) {state.failed=true; return current;}
                         NoViableAltException nvae =
-                            new NoViableAltException("", 53, 0, input);
+                            new NoViableAltException("", 56, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt53) {
+                    switch (alt56) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3384:2: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            // InternalChartDSL.g:3564:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
                             {
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3384:2: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3384:3: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
+                            // InternalChartDSL.g:3564:5: ( ( ( '>' '>' ) )=> (kw= '>' kw= '>' ) )
+                            // InternalChartDSL.g:3565:6: ( ( '>' '>' ) )=> (kw= '>' kw= '>' )
                             {
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3388:5: (kw= '>' kw= '>' )
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3389:2: kw= '>' kw= '>'
+                            // InternalChartDSL.g:3570:6: (kw= '>' kw= '>' )
+                            // InternalChartDSL.g:3571:7: kw= '>' kw= '>'
                             {
-                            kw=(Token)match(input,80,FOLLOW_80_in_ruleOpOther8478); if (state.failed) return current;
+                            kw=(Token)match(input,84,FOLLOW_66); 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,80,FOLLOW_80_in_ruleOpOther8491); if (state.failed) return current;
+                            kw=(Token)match(input,84,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());
+                              						
                             }
 
                             }
@@ -9834,14 +10333,14 @@
                             }
                             break;
                         case 2 :
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3402:2: kw= '>'
+                            // InternalChartDSL.g:3584:5: kw= '>'
                             {
-                            kw=(Token)match(input,80,FOLLOW_80_in_ruleOpOther8512); if (state.failed) return current;
+                            kw=(Token)match(input,84,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());
+                              				
                             }
 
                             }
@@ -9856,72 +10355,72 @@
                     }
                     break;
                 case 7 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3408:6: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    // InternalChartDSL.g:3592:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
                     {
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3408:6: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3409:2: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    // InternalChartDSL.g:3592:3: (kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' ) )
+                    // InternalChartDSL.g:3593:4: kw= '<' ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
                     {
-                    kw=(Token)match(input,79,FOLLOW_79_in_ruleOpOther8534); if (state.failed) return current;
+                    kw=(Token)match(input,83,FOLLOW_67); 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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3414:1: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
-                    int alt54=3;
-                    int LA54_0 = input.LA(1);
+                    // InternalChartDSL.g:3598:4: ( ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) ) | kw= '<' | kw= '=>' )
+                    int alt57=3;
+                    int LA57_0 = input.LA(1);
 
-                    if ( (LA54_0==79) ) {
-                        int LA54_1 = input.LA(2);
+                    if ( (LA57_0==83) ) {
+                        int LA57_1 = input.LA(2);
 
                         if ( (synpred15_InternalChartDSL()) ) {
-                            alt54=1;
+                            alt57=1;
                         }
                         else if ( (true) ) {
-                            alt54=2;
+                            alt57=2;
                         }
                         else {
                             if (state.backtracking>0) {state.failed=true; return current;}
                             NoViableAltException nvae =
-                                new NoViableAltException("", 54, 1, input);
+                                new NoViableAltException("", 57, 1, input);
 
                             throw nvae;
                         }
                     }
-                    else if ( (LA54_0==92) ) {
-                        alt54=3;
+                    else if ( (LA57_0==96) ) {
+                        alt57=3;
                     }
                     else {
                         if (state.backtracking>0) {state.failed=true; return current;}
                         NoViableAltException nvae =
-                            new NoViableAltException("", 54, 0, input);
+                            new NoViableAltException("", 57, 0, input);
 
                         throw nvae;
                     }
-                    switch (alt54) {
+                    switch (alt57) {
                         case 1 :
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3414:2: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            // InternalChartDSL.g:3599:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
                             {
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3414:2: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3414:3: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
+                            // InternalChartDSL.g:3599:5: ( ( ( '<' '<' ) )=> (kw= '<' kw= '<' ) )
+                            // InternalChartDSL.g:3600:6: ( ( '<' '<' ) )=> (kw= '<' kw= '<' )
                             {
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3418:5: (kw= '<' kw= '<' )
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3419:2: kw= '<' kw= '<'
+                            // InternalChartDSL.g:3605:6: (kw= '<' kw= '<' )
+                            // InternalChartDSL.g:3606:7: kw= '<' kw= '<'
                             {
-                            kw=(Token)match(input,79,FOLLOW_79_in_ruleOpOther8565); if (state.failed) return current;
+                            kw=(Token)match(input,83,FOLLOW_56); 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,79,FOLLOW_79_in_ruleOpOther8578); if (state.failed) return current;
+                            kw=(Token)match(input,83,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
-                                      current.merge(kw);
-                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1()); 
-                                  
+                              							current.merge(kw);
+                              							newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_0_0_1());
+                              						
                             }
 
                             }
@@ -9933,27 +10432,27 @@
                             }
                             break;
                         case 2 :
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3432:2: kw= '<'
+                            // InternalChartDSL.g:3619:5: kw= '<'
                             {
-                            kw=(Token)match(input,79,FOLLOW_79_in_ruleOpOther8599); if (state.failed) return current;
+                            kw=(Token)match(input,83,FOLLOW_2); if (state.failed) return current;
                             if ( state.backtracking==0 ) {
 
-                                      current.merge(kw);
-                                      newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1()); 
-                                  
+                              					current.merge(kw);
+                              					newLeafNode(kw, grammarAccess.getOpOtherAccess().getLessThanSignKeyword_6_1_1());
+                              				
                             }
 
                             }
                             break;
                         case 3 :
-                            // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3439:2: kw= '=>'
+                            // InternalChartDSL.g:3625:5: kw= '=>'
                             {
-                            kw=(Token)match(input,92,FOLLOW_92_in_ruleOpOther8618); if (state.failed) return current;
+                            kw=(Token)match(input,96,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());
+                              				
                             }
 
                             }
@@ -9968,27 +10467,27 @@
                     }
                     break;
                 case 8 :
-                    // ../org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3446:2: kw= '<>'
+                    // InternalChartDSL.g:3633:3: kw= '<>'
                     {
-                    kw=(Token)match(input,93,FOLLOW_93_in_ruleOpOther8639); if (state.failed) return current;
+                    kw=(Token)match(input,97,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.chart/src-gen/org/eclipse/osbp/xtext/chart/parser/antlr/internal/InternalChartDSL.g:3453:2: kw= '?:'
+                    // InternalChartDSL.g:3639:3: kw= '?:'
                     {
-                    kw=(Token)match(input,94,FOLLOW_94_in_ruleOpOther8658); if (state.failed) return current;
+                    kw=(Token)match(input,98,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());
+                      		
                     }
 
                     }
@@ -10000,15 +10499,19961 @@
             }
 
             if ( state.backtracking==0 ) {
-               leaveRule(); 
+
+              	leaveRule();
+
             }
         }
-         
-            catch (RecognitionException re) { 
-                recover(input,re); 
+
+            catch (RecognitionException re) {
+                recover(input,re);
                 appendSkippedTokens();
-            } 
+            }
         finally {
         }
         return current;
     }
+    // $ANTLR end "ruleOpOther"
+
+
+    // $ANTLR start "entryRuleXAdditiveExpression"
+    // InternalChartDSL.g:3648:1: entryRuleXAdditiveExpression returns [EObject current=null] : iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF ;
+    public final EObject entryRuleXAdditiveExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXAdditiveExpression = null;
+
+
+        try {
+            // InternalChartDSL.g:3648:60: (iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF )
+            // InternalChartDSL.g:3649:2: iv_ruleXAdditiveExpression= ruleXAdditiveExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXAdditiveExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXAdditiveExpression=ruleXAdditiveExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXAdditiveExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXAdditiveExpression"
+
+
+    // $ANTLR start "ruleXAdditiveExpression"
+    // InternalChartDSL.g:3655: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;
+
+        EObject this_XMultiplicativeExpression_0 = null;
+
+        EObject lv_rightOperand_3_0 = null;
+
+
+
+        	enterRule();
+
+        try {
+            // InternalChartDSL.g:3661:2: ( (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* ) )
+            // InternalChartDSL.g:3662:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
+            {
+            // InternalChartDSL.g:3662:2: (this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )* )
+            // InternalChartDSL.g:3663:3: this_XMultiplicativeExpression_0= ruleXMultiplicativeExpression ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getXMultiplicativeExpressionParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_68);
+            this_XMultiplicativeExpression_0=ruleXMultiplicativeExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XMultiplicativeExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalChartDSL.g:3671:3: ( ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) ) )*
+            loop59:
+            do {
+                int alt59=2;
+                int LA59_0 = input.LA(1);
+
+                if ( (LA59_0==99) ) {
+                    int LA59_2 = input.LA(2);
+
+                    if ( (synpred16_InternalChartDSL()) ) {
+                        alt59=1;
+                    }
+
+
+                }
+                else if ( (LA59_0==63) ) {
+                    int LA59_3 = input.LA(2);
+
+                    if ( (synpred16_InternalChartDSL()) ) {
+                        alt59=1;
+                    }
+
+
+                }
+
+
+                switch (alt59) {
+            	case 1 :
+            	    // InternalChartDSL.g:3672:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) ) ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
+            	    {
+            	    // InternalChartDSL.g:3672:4: ( ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) ) )
+            	    // InternalChartDSL.g:3673:5: ( ( () ( ( ruleOpAdd ) ) ) )=> ( () ( ( ruleOpAdd ) ) )
+            	    {
+            	    // InternalChartDSL.g:3683:5: ( () ( ( ruleOpAdd ) ) )
+            	    // InternalChartDSL.g:3684:6: () ( ( ruleOpAdd ) )
+            	    {
+            	    // InternalChartDSL.g:3684:6: ()
+            	    // InternalChartDSL.g:3685:7: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXAdditiveExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								current);
+            	      						
+            	    }
+
+            	    }
+
+            	    // InternalChartDSL.g:3691:6: ( ( ruleOpAdd ) )
+            	    // InternalChartDSL.g:3692:7: ( ruleOpAdd )
+            	    {
+            	    // InternalChartDSL.g:3692:7: ( ruleOpAdd )
+            	    // InternalChartDSL.g:3693:8: ruleOpAdd
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								if (current==null) {
+            	      									current = createModelElement(grammarAccess.getXAdditiveExpressionRule());
+            	      								}
+            	      							
+            	    }
+            	    if ( state.backtracking==0 ) {
+
+            	      								newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getFeatureJvmIdentifiableElementCrossReference_1_0_0_1_0());
+            	      							
+            	    }
+            	    pushFollow(FOLLOW_50);
+            	    ruleOpAdd();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalChartDSL.g:3709:4: ( (lv_rightOperand_3_0= ruleXMultiplicativeExpression ) )
+            	    // InternalChartDSL.g:3710:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
+            	    {
+            	    // InternalChartDSL.g:3710:5: (lv_rightOperand_3_0= ruleXMultiplicativeExpression )
+            	    // InternalChartDSL.g:3711:6: lv_rightOperand_3_0= ruleXMultiplicativeExpression
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXAdditiveExpressionAccess().getRightOperandXMultiplicativeExpressionParserRuleCall_1_1_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_68);
+            	    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,
+            	      							"org.eclipse.xtext.xbase.Xbase.XMultiplicativeExpression");
+            	      						afterParserOrEnumRuleCall();
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop59;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXAdditiveExpression"
+
+
+    // $ANTLR start "entryRuleOpAdd"
+    // InternalChartDSL.g:3733:1: entryRuleOpAdd returns [String current=null] : iv_ruleOpAdd= ruleOpAdd EOF ;
+    public final String entryRuleOpAdd() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpAdd = null;
+
+
+        try {
+            // InternalChartDSL.g:3733:45: (iv_ruleOpAdd= ruleOpAdd EOF )
+            // InternalChartDSL.g:3734:2: iv_ruleOpAdd= ruleOpAdd EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getOpAddRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleOpAdd=ruleOpAdd();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleOpAdd.getText(); 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleOpAdd"
+
+
+    // $ANTLR start "ruleOpAdd"
+    // InternalChartDSL.g:3740:1: ruleOpAdd returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '+' | kw= '-' ) ;
+    public final AntlrDatatypeRuleToken ruleOpAdd() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalChartDSL.g:3746:2: ( (kw= '+' | kw= '-' ) )
+            // InternalChartDSL.g:3747:2: (kw= '+' | kw= '-' )
+            {
+            // InternalChartDSL.g:3747:2: (kw= '+' | kw= '-' )
+            int alt60=2;
+            int LA60_0 = input.LA(1);
+
+            if ( (LA60_0==99) ) {
+                alt60=1;
+            }
+            else if ( (LA60_0==63) ) {
+                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 :
+                    // InternalChartDSL.g:3748:3: kw= '+'
+                    {
+                    kw=(Token)match(input,99,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpAddAccess().getPlusSignKeyword_0());
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:3754:3: kw= '-'
+                    {
+                    kw=(Token)match(input,63,FOLLOW_2); 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"
+    // InternalChartDSL.g:3763:1: entryRuleXMultiplicativeExpression returns [EObject current=null] : iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF ;
+    public final EObject entryRuleXMultiplicativeExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXMultiplicativeExpression = null;
+
+
+        try {
+            // InternalChartDSL.g:3763:66: (iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF )
+            // InternalChartDSL.g:3764:2: iv_ruleXMultiplicativeExpression= ruleXMultiplicativeExpression EOF
+            {
+            if ( state.backtracking==0 ) {
+               newCompositeNode(grammarAccess.getXMultiplicativeExpressionRule()); 
+            }
+            pushFollow(FOLLOW_1);
+            iv_ruleXMultiplicativeExpression=ruleXMultiplicativeExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+               current =iv_ruleXMultiplicativeExpression; 
+            }
+            match(input,EOF,FOLLOW_2); if (state.failed) return current;
+
+            }
+
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "entryRuleXMultiplicativeExpression"
+
+
+    // $ANTLR start "ruleXMultiplicativeExpression"
+    // InternalChartDSL.g:3770: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 {
+            // InternalChartDSL.g:3776:2: ( (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* ) )
+            // InternalChartDSL.g:3777:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
+            {
+            // InternalChartDSL.g:3777:2: (this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )* )
+            // InternalChartDSL.g:3778:3: this_XUnaryOperation_0= ruleXUnaryOperation ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getXUnaryOperationParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_69);
+            this_XUnaryOperation_0=ruleXUnaryOperation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XUnaryOperation_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalChartDSL.g:3786:3: ( ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) ) )*
+            loop61:
+            do {
+                int alt61=2;
+                switch ( input.LA(1) ) {
+                case 67:
+                    {
+                    int LA61_2 = input.LA(2);
+
+                    if ( (synpred17_InternalChartDSL()) ) {
+                        alt61=1;
+                    }
+
+
+                    }
+                    break;
+                case 100:
+                    {
+                    int LA61_3 = input.LA(2);
+
+                    if ( (synpred17_InternalChartDSL()) ) {
+                        alt61=1;
+                    }
+
+
+                    }
+                    break;
+                case 101:
+                    {
+                    int LA61_4 = input.LA(2);
+
+                    if ( (synpred17_InternalChartDSL()) ) {
+                        alt61=1;
+                    }
+
+
+                    }
+                    break;
+                case 102:
+                    {
+                    int LA61_5 = input.LA(2);
+
+                    if ( (synpred17_InternalChartDSL()) ) {
+                        alt61=1;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt61) {
+            	case 1 :
+            	    // InternalChartDSL.g:3787:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) ) ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
+            	    {
+            	    // InternalChartDSL.g:3787:4: ( ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) ) )
+            	    // InternalChartDSL.g:3788:5: ( ( () ( ( ruleOpMulti ) ) ) )=> ( () ( ( ruleOpMulti ) ) )
+            	    {
+            	    // InternalChartDSL.g:3798:5: ( () ( ( ruleOpMulti ) ) )
+            	    // InternalChartDSL.g:3799:6: () ( ( ruleOpMulti ) )
+            	    {
+            	    // InternalChartDSL.g:3799:6: ()
+            	    // InternalChartDSL.g:3800:7: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXMultiplicativeExpressionAccess().getXBinaryOperationLeftOperandAction_1_0_0_0(),
+            	      								current);
+            	      						
+            	    }
+
+            	    }
+
+            	    // InternalChartDSL.g:3806:6: ( ( ruleOpMulti ) )
+            	    // InternalChartDSL.g:3807:7: ( ruleOpMulti )
+            	    {
+            	    // InternalChartDSL.g:3807:7: ( ruleOpMulti )
+            	    // InternalChartDSL.g:3808:8: 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_50);
+            	    ruleOpMulti();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      								afterParserOrEnumRuleCall();
+            	      							
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalChartDSL.g:3824:4: ( (lv_rightOperand_3_0= ruleXUnaryOperation ) )
+            	    // InternalChartDSL.g:3825:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
+            	    {
+            	    // InternalChartDSL.g:3825:5: (lv_rightOperand_3_0= ruleXUnaryOperation )
+            	    // InternalChartDSL.g:3826:6: lv_rightOperand_3_0= ruleXUnaryOperation
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXMultiplicativeExpressionAccess().getRightOperandXUnaryOperationParserRuleCall_1_1_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_69);
+            	    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();
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop61;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXMultiplicativeExpression"
+
+
+    // $ANTLR start "entryRuleOpMulti"
+    // InternalChartDSL.g:3848:1: entryRuleOpMulti returns [String current=null] : iv_ruleOpMulti= ruleOpMulti EOF ;
+    public final String entryRuleOpMulti() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpMulti = null;
+
+
+        try {
+            // InternalChartDSL.g:3848:47: (iv_ruleOpMulti= ruleOpMulti EOF )
+            // InternalChartDSL.g:3849: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"
+    // InternalChartDSL.g:3855: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 {
+            // InternalChartDSL.g:3861:2: ( (kw= '*' | kw= '**' | kw= '/' | kw= '%' ) )
+            // InternalChartDSL.g:3862:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            {
+            // InternalChartDSL.g:3862:2: (kw= '*' | kw= '**' | kw= '/' | kw= '%' )
+            int alt62=4;
+            switch ( input.LA(1) ) {
+            case 67:
+                {
+                alt62=1;
+                }
+                break;
+            case 100:
+                {
+                alt62=2;
+                }
+                break;
+            case 101:
+                {
+                alt62=3;
+                }
+                break;
+            case 102:
+                {
+                alt62=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 62, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt62) {
+                case 1 :
+                    // InternalChartDSL.g:3863:3: kw= '*'
+                    {
+                    kw=(Token)match(input,67,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskKeyword_0());
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:3869:3: kw= '**'
+                    {
+                    kw=(Token)match(input,100,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAccess().getAsteriskAsteriskKeyword_1());
+                      		
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // InternalChartDSL.g:3875:3: kw= '/'
+                    {
+                    kw=(Token)match(input,101,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpMultiAccess().getSolidusKeyword_2());
+                      		
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // InternalChartDSL.g:3881:3: kw= '%'
+                    {
+                    kw=(Token)match(input,102,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"
+    // InternalChartDSL.g:3890:1: entryRuleXUnaryOperation returns [EObject current=null] : iv_ruleXUnaryOperation= ruleXUnaryOperation EOF ;
+    public final EObject entryRuleXUnaryOperation() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXUnaryOperation = null;
+
+
+        try {
+            // InternalChartDSL.g:3890:56: (iv_ruleXUnaryOperation= ruleXUnaryOperation EOF )
+            // InternalChartDSL.g:3891: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"
+    // InternalChartDSL.g:3897: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 {
+            // InternalChartDSL.g:3903:2: ( ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression ) )
+            // InternalChartDSL.g:3904:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
+            {
+            // InternalChartDSL.g:3904:2: ( ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) ) | this_XCastedExpression_3= ruleXCastedExpression )
+            int alt63=2;
+            int LA63_0 = input.LA(1);
+
+            if ( (LA63_0==63||LA63_0==99||LA63_0==103) ) {
+                alt63=1;
+            }
+            else if ( ((LA63_0>=RULE_INT && LA63_0<=RULE_DECIMAL)||LA63_0==14||(LA63_0>=64 && LA63_0<=66)||LA63_0==71||(LA63_0>=75 && LA63_0<=76)||LA63_0==83||LA63_0==110||LA63_0==112||(LA63_0>=116 && LA63_0<=118)||(LA63_0>=121 && LA63_0<=130)||LA63_0==132) ) {
+                alt63=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 63, 0, input);
+
+                throw nvae;
+            }
+            switch (alt63) {
+                case 1 :
+                    // InternalChartDSL.g:3905:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
+                    {
+                    // InternalChartDSL.g:3905:3: ( () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) ) )
+                    // InternalChartDSL.g:3906:4: () ( ( ruleOpUnary ) ) ( (lv_operand_2_0= ruleXUnaryOperation ) )
+                    {
+                    // InternalChartDSL.g:3906:4: ()
+                    // InternalChartDSL.g:3907:5: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      					current = forceCreateModelElement(
+                      						grammarAccess.getXUnaryOperationAccess().getXUnaryOperationAction_0_0(),
+                      						current);
+                      				
+                    }
+
+                    }
+
+                    // InternalChartDSL.g:3913:4: ( ( ruleOpUnary ) )
+                    // InternalChartDSL.g:3914:5: ( ruleOpUnary )
+                    {
+                    // InternalChartDSL.g:3914:5: ( ruleOpUnary )
+                    // InternalChartDSL.g:3915: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_50);
+                    ruleOpUnary();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      						afterParserOrEnumRuleCall();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalChartDSL.g:3929:4: ( (lv_operand_2_0= ruleXUnaryOperation ) )
+                    // InternalChartDSL.g:3930:5: (lv_operand_2_0= ruleXUnaryOperation )
+                    {
+                    // InternalChartDSL.g:3930:5: (lv_operand_2_0= ruleXUnaryOperation )
+                    // InternalChartDSL.g:3931: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 :
+                    // InternalChartDSL.g:3950: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"
+    // InternalChartDSL.g:3962:1: entryRuleOpUnary returns [String current=null] : iv_ruleOpUnary= ruleOpUnary EOF ;
+    public final String entryRuleOpUnary() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpUnary = null;
+
+
+        try {
+            // InternalChartDSL.g:3962:47: (iv_ruleOpUnary= ruleOpUnary EOF )
+            // InternalChartDSL.g:3963: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"
+    // InternalChartDSL.g:3969: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 {
+            // InternalChartDSL.g:3975:2: ( (kw= '!' | kw= '-' | kw= '+' ) )
+            // InternalChartDSL.g:3976:2: (kw= '!' | kw= '-' | kw= '+' )
+            {
+            // InternalChartDSL.g:3976:2: (kw= '!' | kw= '-' | kw= '+' )
+            int alt64=3;
+            switch ( input.LA(1) ) {
+            case 103:
+                {
+                alt64=1;
+                }
+                break;
+            case 63:
+                {
+                alt64=2;
+                }
+                break;
+            case 99:
+                {
+                alt64=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 64, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt64) {
+                case 1 :
+                    // InternalChartDSL.g:3977:3: kw= '!'
+                    {
+                    kw=(Token)match(input,103,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpUnaryAccess().getExclamationMarkKeyword_0());
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:3983:3: kw= '-'
+                    {
+                    kw=(Token)match(input,63,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpUnaryAccess().getHyphenMinusKeyword_1());
+                      		
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // InternalChartDSL.g:3989:3: kw= '+'
+                    {
+                    kw=(Token)match(input,99,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"
+    // InternalChartDSL.g:3998:1: entryRuleXCastedExpression returns [EObject current=null] : iv_ruleXCastedExpression= ruleXCastedExpression EOF ;
+    public final EObject entryRuleXCastedExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXCastedExpression = null;
+
+
+        try {
+            // InternalChartDSL.g:3998:58: (iv_ruleXCastedExpression= ruleXCastedExpression EOF )
+            // InternalChartDSL.g:3999: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"
+    // InternalChartDSL.g:4005: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 {
+            // InternalChartDSL.g:4011:2: ( (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* ) )
+            // InternalChartDSL.g:4012:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
+            {
+            // InternalChartDSL.g:4012:2: (this_XPostfixOperation_0= ruleXPostfixOperation ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )* )
+            // InternalChartDSL.g:4013: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_70);
+            this_XPostfixOperation_0=ruleXPostfixOperation();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XPostfixOperation_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalChartDSL.g:4021:3: ( ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) ) )*
+            loop65:
+            do {
+                int alt65=2;
+                int LA65_0 = input.LA(1);
+
+                if ( (LA65_0==18) ) {
+                    int LA65_2 = input.LA(2);
+
+                    if ( (synpred18_InternalChartDSL()) ) {
+                        alt65=1;
+                    }
+
+
+                }
+
+
+                switch (alt65) {
+            	case 1 :
+            	    // InternalChartDSL.g:4022:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) ) ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    {
+            	    // InternalChartDSL.g:4022:4: ( ( ( () 'as' ) )=> ( () otherlv_2= 'as' ) )
+            	    // InternalChartDSL.g:4023:5: ( ( () 'as' ) )=> ( () otherlv_2= 'as' )
+            	    {
+            	    // InternalChartDSL.g:4029:5: ( () otherlv_2= 'as' )
+            	    // InternalChartDSL.g:4030:6: () otherlv_2= 'as'
+            	    {
+            	    // InternalChartDSL.g:4030:6: ()
+            	    // InternalChartDSL.g:4031:7: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							current = forceCreateModelElementAndSet(
+            	      								grammarAccess.getXCastedExpressionAccess().getXCastedExpressionTargetAction_1_0_0_0(),
+            	      								current);
+            	      						
+            	    }
+
+            	    }
+
+            	    otherlv_2=(Token)match(input,18,FOLLOW_63); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      						newLeafNode(otherlv_2, grammarAccess.getXCastedExpressionAccess().getAsKeyword_1_0_0_1());
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalChartDSL.g:4043:4: ( (lv_type_3_0= ruleJvmTypeReference ) )
+            	    // InternalChartDSL.g:4044:5: (lv_type_3_0= ruleJvmTypeReference )
+            	    {
+            	    // InternalChartDSL.g:4044:5: (lv_type_3_0= ruleJvmTypeReference )
+            	    // InternalChartDSL.g:4045:6: lv_type_3_0= ruleJvmTypeReference
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXCastedExpressionAccess().getTypeJvmTypeReferenceParserRuleCall_1_1_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_70);
+            	    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 loop65;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXCastedExpression"
+
+
+    // $ANTLR start "entryRuleXPostfixOperation"
+    // InternalChartDSL.g:4067:1: entryRuleXPostfixOperation returns [EObject current=null] : iv_ruleXPostfixOperation= ruleXPostfixOperation EOF ;
+    public final EObject entryRuleXPostfixOperation() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXPostfixOperation = null;
+
+
+        try {
+            // InternalChartDSL.g:4067:58: (iv_ruleXPostfixOperation= ruleXPostfixOperation EOF )
+            // InternalChartDSL.g:4068: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"
+    // InternalChartDSL.g:4074: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 {
+            // InternalChartDSL.g:4080:2: ( (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? ) )
+            // InternalChartDSL.g:4081:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
+            {
+            // InternalChartDSL.g:4081:2: (this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )? )
+            // InternalChartDSL.g:4082:3: this_XMemberFeatureCall_0= ruleXMemberFeatureCall ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getXPostfixOperationAccess().getXMemberFeatureCallParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_71);
+            this_XMemberFeatureCall_0=ruleXMemberFeatureCall();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XMemberFeatureCall_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalChartDSL.g:4090:3: ( ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) ) )?
+            int alt66=2;
+            int LA66_0 = input.LA(1);
+
+            if ( (LA66_0==104) ) {
+                int LA66_1 = input.LA(2);
+
+                if ( (synpred19_InternalChartDSL()) ) {
+                    alt66=1;
+                }
+            }
+            else if ( (LA66_0==105) ) {
+                int LA66_2 = input.LA(2);
+
+                if ( (synpred19_InternalChartDSL()) ) {
+                    alt66=1;
+                }
+            }
+            switch (alt66) {
+                case 1 :
+                    // InternalChartDSL.g:4091:4: ( ( () ( ( ruleOpPostfix ) ) ) )=> ( () ( ( ruleOpPostfix ) ) )
+                    {
+                    // InternalChartDSL.g:4101:4: ( () ( ( ruleOpPostfix ) ) )
+                    // InternalChartDSL.g:4102:5: () ( ( ruleOpPostfix ) )
+                    {
+                    // InternalChartDSL.g:4102:5: ()
+                    // InternalChartDSL.g:4103:6: 
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						current = forceCreateModelElementAndSet(
+                      							grammarAccess.getXPostfixOperationAccess().getXPostfixOperationOperandAction_1_0_0(),
+                      							current);
+                      					
+                    }
+
+                    }
+
+                    // InternalChartDSL.g:4109:5: ( ( ruleOpPostfix ) )
+                    // InternalChartDSL.g:4110:6: ( ruleOpPostfix )
+                    {
+                    // InternalChartDSL.g:4110:6: ( ruleOpPostfix )
+                    // InternalChartDSL.g:4111: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"
+    // InternalChartDSL.g:4131:1: entryRuleOpPostfix returns [String current=null] : iv_ruleOpPostfix= ruleOpPostfix EOF ;
+    public final String entryRuleOpPostfix() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleOpPostfix = null;
+
+
+        try {
+            // InternalChartDSL.g:4131:49: (iv_ruleOpPostfix= ruleOpPostfix EOF )
+            // InternalChartDSL.g:4132: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"
+    // InternalChartDSL.g:4138:1: ruleOpPostfix returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '++' | kw= '--' ) ;
+    public final AntlrDatatypeRuleToken ruleOpPostfix() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalChartDSL.g:4144:2: ( (kw= '++' | kw= '--' ) )
+            // InternalChartDSL.g:4145:2: (kw= '++' | kw= '--' )
+            {
+            // InternalChartDSL.g:4145:2: (kw= '++' | kw= '--' )
+            int alt67=2;
+            int LA67_0 = input.LA(1);
+
+            if ( (LA67_0==104) ) {
+                alt67=1;
+            }
+            else if ( (LA67_0==105) ) {
+                alt67=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 67, 0, input);
+
+                throw nvae;
+            }
+            switch (alt67) {
+                case 1 :
+                    // InternalChartDSL.g:4146:3: kw= '++'
+                    {
+                    kw=(Token)match(input,104,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getOpPostfixAccess().getPlusSignPlusSignKeyword_0());
+                      		
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:4152:3: kw= '--'
+                    {
+                    kw=(Token)match(input,105,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"
+    // InternalChartDSL.g:4161:1: entryRuleXMemberFeatureCall returns [EObject current=null] : iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF ;
+    public final EObject entryRuleXMemberFeatureCall() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXMemberFeatureCall = null;
+
+
+        try {
+            // InternalChartDSL.g:4161:59: (iv_ruleXMemberFeatureCall= ruleXMemberFeatureCall EOF )
+            // InternalChartDSL.g:4162: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"
+    // InternalChartDSL.g:4168: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 {
+            // InternalChartDSL.g:4174: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 ) )? ) )* ) )
+            // InternalChartDSL.g:4175: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 ) )? ) )* )
+            {
+            // InternalChartDSL.g:4175: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 ) )? ) )* )
+            // InternalChartDSL.g:4176: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_72);
+            this_XPrimaryExpression_0=ruleXPrimaryExpression();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current = this_XPrimaryExpression_0;
+              			afterParserOrEnumRuleCall();
+              		
+            }
+            // InternalChartDSL.g:4184: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 ) )? ) )*
+            loop76:
+            do {
+                int alt76=3;
+                switch ( input.LA(1) ) {
+                case 106:
+                    {
+                    int LA76_2 = input.LA(2);
+
+                    if ( (synpred20_InternalChartDSL()) ) {
+                        alt76=1;
+                    }
+                    else if ( (synpred21_InternalChartDSL()) ) {
+                        alt76=2;
+                    }
+
+
+                    }
+                    break;
+                case 107:
+                    {
+                    int LA76_3 = input.LA(2);
+
+                    if ( (synpred20_InternalChartDSL()) ) {
+                        alt76=1;
+                    }
+                    else if ( (synpred21_InternalChartDSL()) ) {
+                        alt76=2;
+                    }
+
+
+                    }
+                    break;
+                case 108:
+                    {
+                    int LA76_4 = input.LA(2);
+
+                    if ( (synpred21_InternalChartDSL()) ) {
+                        alt76=2;
+                    }
+
+
+                    }
+                    break;
+
+                }
+
+                switch (alt76) {
+            	case 1 :
+            	    // InternalChartDSL.g:4185:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
+            	    {
+            	    // InternalChartDSL.g:4185:4: ( ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) ) )
+            	    // InternalChartDSL.g:4186:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) ) ( (lv_value_6_0= ruleXAssignment ) )
+            	    {
+            	    // InternalChartDSL.g:4186:5: ( ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
+            	    // InternalChartDSL.g:4187:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )=> ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+            	    {
+            	    // InternalChartDSL.g:4207:6: ( () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+            	    // InternalChartDSL.g:4208:7: () (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
+            	    {
+            	    // InternalChartDSL.g:4208:7: ()
+            	    // InternalChartDSL.g:4209:8: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								current = forceCreateModelElementAndSet(
+            	      									grammarAccess.getXMemberFeatureCallAccess().getXAssignmentAssignableAction_1_0_0_0_0(),
+            	      									current);
+            	      							
+            	    }
+
+            	    }
+
+            	    // InternalChartDSL.g:4215:7: (otherlv_2= '.' | ( (lv_explicitStatic_3_0= '::' ) ) )
+            	    int alt68=2;
+            	    int LA68_0 = input.LA(1);
+
+            	    if ( (LA68_0==106) ) {
+            	        alt68=1;
+            	    }
+            	    else if ( (LA68_0==107) ) {
+            	        alt68=2;
+            	    }
+            	    else {
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        NoViableAltException nvae =
+            	            new NoViableAltException("", 68, 0, input);
+
+            	        throw nvae;
+            	    }
+            	    switch (alt68) {
+            	        case 1 :
+            	            // InternalChartDSL.g:4216:8: otherlv_2= '.'
+            	            {
+            	            otherlv_2=(Token)match(input,106,FOLLOW_73); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              								newLeafNode(otherlv_2, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_0_0_0_1_0());
+            	              							
+            	            }
+
+            	            }
+            	            break;
+            	        case 2 :
+            	            // InternalChartDSL.g:4221:8: ( (lv_explicitStatic_3_0= '::' ) )
+            	            {
+            	            // InternalChartDSL.g:4221:8: ( (lv_explicitStatic_3_0= '::' ) )
+            	            // InternalChartDSL.g:4222:9: (lv_explicitStatic_3_0= '::' )
+            	            {
+            	            // InternalChartDSL.g:4222:9: (lv_explicitStatic_3_0= '::' )
+            	            // InternalChartDSL.g:4223:10: lv_explicitStatic_3_0= '::'
+            	            {
+            	            lv_explicitStatic_3_0=(Token)match(input,107,FOLLOW_73); 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;
+
+            	    }
+
+            	    // InternalChartDSL.g:4236:7: ( ( ruleFeatureCallID ) )
+            	    // InternalChartDSL.g:4237:8: ( ruleFeatureCallID )
+            	    {
+            	    // InternalChartDSL.g:4237:8: ( ruleFeatureCallID )
+            	    // InternalChartDSL.g:4238: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_49);
+            	    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_50);
+            	    ruleOpSingleAssign();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      							afterParserOrEnumRuleCall();
+            	      						
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalChartDSL.g:4261:5: ( (lv_value_6_0= ruleXAssignment ) )
+            	    // InternalChartDSL.g:4262:6: (lv_value_6_0= ruleXAssignment )
+            	    {
+            	    // InternalChartDSL.g:4262:6: (lv_value_6_0= ruleXAssignment )
+            	    // InternalChartDSL.g:4263:7: lv_value_6_0= ruleXAssignment
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getValueXAssignmentParserRuleCall_1_0_1_0());
+            	      						
+            	    }
+            	    pushFollow(FOLLOW_72);
+            	    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 :
+            	    // InternalChartDSL.g:4282: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 ) )? )
+            	    {
+            	    // InternalChartDSL.g:4282: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 ) )? )
+            	    // InternalChartDSL.g:4283: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 ) )?
+            	    {
+            	    // InternalChartDSL.g:4283:5: ( ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) ) )
+            	    // InternalChartDSL.g:4284:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )=> ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
+            	    {
+            	    // InternalChartDSL.g:4304:6: ( () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) ) )
+            	    // InternalChartDSL.g:4305:7: () (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
+            	    {
+            	    // InternalChartDSL.g:4305:7: ()
+            	    // InternalChartDSL.g:4306:8: 
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      								current = forceCreateModelElementAndSet(
+            	      									grammarAccess.getXMemberFeatureCallAccess().getXMemberFeatureCallMemberCallTargetAction_1_1_0_0_0(),
+            	      									current);
+            	      							
+            	    }
+
+            	    }
+
+            	    // InternalChartDSL.g:4312:7: (otherlv_8= '.' | ( (lv_nullSafe_9_0= '?.' ) ) | ( (lv_explicitStatic_10_0= '::' ) ) )
+            	    int alt69=3;
+            	    switch ( input.LA(1) ) {
+            	    case 106:
+            	        {
+            	        alt69=1;
+            	        }
+            	        break;
+            	    case 108:
+            	        {
+            	        alt69=2;
+            	        }
+            	        break;
+            	    case 107:
+            	        {
+            	        alt69=3;
+            	        }
+            	        break;
+            	    default:
+            	        if (state.backtracking>0) {state.failed=true; return current;}
+            	        NoViableAltException nvae =
+            	            new NoViableAltException("", 69, 0, input);
+
+            	        throw nvae;
+            	    }
+
+            	    switch (alt69) {
+            	        case 1 :
+            	            // InternalChartDSL.g:4313:8: otherlv_8= '.'
+            	            {
+            	            otherlv_8=(Token)match(input,106,FOLLOW_74); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              								newLeafNode(otherlv_8, grammarAccess.getXMemberFeatureCallAccess().getFullStopKeyword_1_1_0_0_1_0());
+            	              							
+            	            }
+
+            	            }
+            	            break;
+            	        case 2 :
+            	            // InternalChartDSL.g:4318:8: ( (lv_nullSafe_9_0= '?.' ) )
+            	            {
+            	            // InternalChartDSL.g:4318:8: ( (lv_nullSafe_9_0= '?.' ) )
+            	            // InternalChartDSL.g:4319:9: (lv_nullSafe_9_0= '?.' )
+            	            {
+            	            // InternalChartDSL.g:4319:9: (lv_nullSafe_9_0= '?.' )
+            	            // InternalChartDSL.g:4320:10: lv_nullSafe_9_0= '?.'
+            	            {
+            	            lv_nullSafe_9_0=(Token)match(input,108,FOLLOW_74); 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 :
+            	            // InternalChartDSL.g:4333:8: ( (lv_explicitStatic_10_0= '::' ) )
+            	            {
+            	            // InternalChartDSL.g:4333:8: ( (lv_explicitStatic_10_0= '::' ) )
+            	            // InternalChartDSL.g:4334:9: (lv_explicitStatic_10_0= '::' )
+            	            {
+            	            // InternalChartDSL.g:4334:9: (lv_explicitStatic_10_0= '::' )
+            	            // InternalChartDSL.g:4335:10: lv_explicitStatic_10_0= '::'
+            	            {
+            	            lv_explicitStatic_10_0=(Token)match(input,107,FOLLOW_74); 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;
+
+            	    }
+
+
+            	    }
+
+
+            	    }
+
+            	    // InternalChartDSL.g:4350:5: (otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>' )?
+            	    int alt71=2;
+            	    int LA71_0 = input.LA(1);
+
+            	    if ( (LA71_0==83) ) {
+            	        alt71=1;
+            	    }
+            	    switch (alt71) {
+            	        case 1 :
+            	            // InternalChartDSL.g:4351:6: otherlv_11= '<' ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) ) (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )* otherlv_15= '>'
+            	            {
+            	            otherlv_11=(Token)match(input,83,FOLLOW_75); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              						newLeafNode(otherlv_11, grammarAccess.getXMemberFeatureCallAccess().getLessThanSignKeyword_1_1_1_0());
+            	              					
+            	            }
+            	            // InternalChartDSL.g:4355:6: ( (lv_typeArguments_12_0= ruleJvmArgumentTypeReference ) )
+            	            // InternalChartDSL.g:4356:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
+            	            {
+            	            // InternalChartDSL.g:4356:7: (lv_typeArguments_12_0= ruleJvmArgumentTypeReference )
+            	            // InternalChartDSL.g:4357:8: lv_typeArguments_12_0= ruleJvmArgumentTypeReference
+            	            {
+            	            if ( state.backtracking==0 ) {
+
+            	              								newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_1_0());
+            	              							
+            	            }
+            	            pushFollow(FOLLOW_76);
+            	            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();
+            	              							
+            	            }
+
+            	            }
+
+
+            	            }
+
+            	            // InternalChartDSL.g:4374:6: (otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) ) )*
+            	            loop70:
+            	            do {
+            	                int alt70=2;
+            	                int LA70_0 = input.LA(1);
+
+            	                if ( (LA70_0==72) ) {
+            	                    alt70=1;
+            	                }
+
+
+            	                switch (alt70) {
+            	            	case 1 :
+            	            	    // InternalChartDSL.g:4375:7: otherlv_13= ',' ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
+            	            	    {
+            	            	    otherlv_13=(Token)match(input,72,FOLLOW_75); if (state.failed) return current;
+            	            	    if ( state.backtracking==0 ) {
+
+            	            	      							newLeafNode(otherlv_13, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_1_2_0());
+            	            	      						
+            	            	    }
+            	            	    // InternalChartDSL.g:4379:7: ( (lv_typeArguments_14_0= ruleJvmArgumentTypeReference ) )
+            	            	    // InternalChartDSL.g:4380:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
+            	            	    {
+            	            	    // InternalChartDSL.g:4380:8: (lv_typeArguments_14_0= ruleJvmArgumentTypeReference )
+            	            	    // InternalChartDSL.g:4381:9: lv_typeArguments_14_0= ruleJvmArgumentTypeReference
+            	            	    {
+            	            	    if ( state.backtracking==0 ) {
+
+            	            	      									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_1_2_1_0());
+            	            	      								
+            	            	    }
+            	            	    pushFollow(FOLLOW_76);
+            	            	    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 loop70;
+            	                }
+            	            } while (true);
+
+            	            otherlv_15=(Token)match(input,84,FOLLOW_74); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              						newLeafNode(otherlv_15, grammarAccess.getXMemberFeatureCallAccess().getGreaterThanSignKeyword_1_1_1_3());
+            	              					
+            	            }
+
+            	            }
+            	            break;
+
+            	    }
+
+            	    // InternalChartDSL.g:4404:5: ( ( ruleIdOrSuper ) )
+            	    // InternalChartDSL.g:4405:6: ( ruleIdOrSuper )
+            	    {
+            	    // InternalChartDSL.g:4405:6: ( ruleIdOrSuper )
+            	    // InternalChartDSL.g:4406: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_77);
+            	    ruleIdOrSuper();
+
+            	    state._fsp--;
+            	    if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      							afterParserOrEnumRuleCall();
+            	      						
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalChartDSL.g:4420: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 alt74=2;
+            	    alt74 = dfa74.predict(input);
+            	    switch (alt74) {
+            	        case 1 :
+            	            // InternalChartDSL.g:4421: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= ')'
+            	            {
+            	            // InternalChartDSL.g:4421:6: ( ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' ) )
+            	            // InternalChartDSL.g:4422:7: ( ( '(' ) )=> (lv_explicitOperationCall_17_0= '(' )
+            	            {
+            	            // InternalChartDSL.g:4426:7: (lv_explicitOperationCall_17_0= '(' )
+            	            // InternalChartDSL.g:4427:8: lv_explicitOperationCall_17_0= '('
+            	            {
+            	            lv_explicitOperationCall_17_0=(Token)match(input,71,FOLLOW_78); 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, "(");
+            	              							
+            	            }
+
+            	            }
+
+
+            	            }
+
+            	            // InternalChartDSL.g:4439:6: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) ) | ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* ) )?
+            	            int alt73=3;
+            	            alt73 = dfa73.predict(input);
+            	            switch (alt73) {
+            	                case 1 :
+            	                    // InternalChartDSL.g:4440:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
+            	                    {
+            	                    // InternalChartDSL.g:4440:7: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure ) )
+            	                    // InternalChartDSL.g:4441:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_memberCallArguments_18_0= ruleXShortClosure )
+            	                    {
+            	                    // InternalChartDSL.g:4466:8: (lv_memberCallArguments_18_0= ruleXShortClosure )
+            	                    // InternalChartDSL.g:4467:9: lv_memberCallArguments_18_0= ruleXShortClosure
+            	                    {
+            	                    if ( state.backtracking==0 ) {
+
+            	                      									newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXShortClosureParserRuleCall_1_1_3_1_0_0());
+            	                      								
+            	                    }
+            	                    pushFollow(FOLLOW_48);
+            	                    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 :
+            	                    // InternalChartDSL.g:4485:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
+            	                    {
+            	                    // InternalChartDSL.g:4485:7: ( ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )* )
+            	                    // InternalChartDSL.g:4486:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) ) (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
+            	                    {
+            	                    // InternalChartDSL.g:4486:8: ( (lv_memberCallArguments_19_0= ruleXExpression ) )
+            	                    // InternalChartDSL.g:4487:9: (lv_memberCallArguments_19_0= ruleXExpression )
+            	                    {
+            	                    // InternalChartDSL.g:4487:9: (lv_memberCallArguments_19_0= ruleXExpression )
+            	                    // InternalChartDSL.g:4488:10: lv_memberCallArguments_19_0= ruleXExpression
+            	                    {
+            	                    if ( state.backtracking==0 ) {
+
+            	                      										newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_0_0());
+            	                      									
+            	                    }
+            	                    pushFollow(FOLLOW_47);
+            	                    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();
+            	                      									
+            	                    }
+
+            	                    }
+
+
+            	                    }
+
+            	                    // InternalChartDSL.g:4505:8: (otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) ) )*
+            	                    loop72:
+            	                    do {
+            	                        int alt72=2;
+            	                        int LA72_0 = input.LA(1);
+
+            	                        if ( (LA72_0==72) ) {
+            	                            alt72=1;
+            	                        }
+
+
+            	                        switch (alt72) {
+            	                    	case 1 :
+            	                    	    // InternalChartDSL.g:4506:9: otherlv_20= ',' ( (lv_memberCallArguments_21_0= ruleXExpression ) )
+            	                    	    {
+            	                    	    otherlv_20=(Token)match(input,72,FOLLOW_50); if (state.failed) return current;
+            	                    	    if ( state.backtracking==0 ) {
+
+            	                    	      									newLeafNode(otherlv_20, grammarAccess.getXMemberFeatureCallAccess().getCommaKeyword_1_1_3_1_1_1_0());
+            	                    	      								
+            	                    	    }
+            	                    	    // InternalChartDSL.g:4510:9: ( (lv_memberCallArguments_21_0= ruleXExpression ) )
+            	                    	    // InternalChartDSL.g:4511:10: (lv_memberCallArguments_21_0= ruleXExpression )
+            	                    	    {
+            	                    	    // InternalChartDSL.g:4511:10: (lv_memberCallArguments_21_0= ruleXExpression )
+            	                    	    // InternalChartDSL.g:4512:11: lv_memberCallArguments_21_0= ruleXExpression
+            	                    	    {
+            	                    	    if ( state.backtracking==0 ) {
+
+            	                    	      											newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXExpressionParserRuleCall_1_1_3_1_1_1_1_0());
+            	                    	      										
+            	                    	    }
+            	                    	    pushFollow(FOLLOW_47);
+            	                    	    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 loop72;
+            	                        }
+            	                    } while (true);
+
+
+            	                    }
+
+
+            	                    }
+            	                    break;
+
+            	            }
+
+            	            otherlv_22=(Token)match(input,73,FOLLOW_79); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              						newLeafNode(otherlv_22, grammarAccess.getXMemberFeatureCallAccess().getRightParenthesisKeyword_1_1_3_2());
+            	              					
+            	            }
+
+            	            }
+            	            break;
+
+            	    }
+
+            	    // InternalChartDSL.g:4537:5: ( ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure ) )?
+            	    int alt75=2;
+            	    alt75 = dfa75.predict(input);
+            	    switch (alt75) {
+            	        case 1 :
+            	            // InternalChartDSL.g:4538:6: ( ( () '[' ) )=> (lv_memberCallArguments_23_0= ruleXClosure )
+            	            {
+            	            // InternalChartDSL.g:4544:6: (lv_memberCallArguments_23_0= ruleXClosure )
+            	            // InternalChartDSL.g:4545:7: lv_memberCallArguments_23_0= ruleXClosure
+            	            {
+            	            if ( state.backtracking==0 ) {
+
+            	              							newCompositeNode(grammarAccess.getXMemberFeatureCallAccess().getMemberCallArgumentsXClosureParserRuleCall_1_1_4_0());
+            	              						
+            	            }
+            	            pushFollow(FOLLOW_72);
+            	            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 loop76;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXMemberFeatureCall"
+
+
+    // $ANTLR start "entryRuleXPrimaryExpression"
+    // InternalChartDSL.g:4568:1: entryRuleXPrimaryExpression returns [EObject current=null] : iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF ;
+    public final EObject entryRuleXPrimaryExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXPrimaryExpression = null;
+
+
+        try {
+            // InternalChartDSL.g:4568:59: (iv_ruleXPrimaryExpression= ruleXPrimaryExpression EOF )
+            // InternalChartDSL.g:4569: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"
+    // InternalChartDSL.g:4575: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 {
+            // InternalChartDSL.g:4581: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 ) )
+            // InternalChartDSL.g:4582: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 )
+            {
+            // InternalChartDSL.g:4582: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 alt77=15;
+            alt77 = dfa77.predict(input);
+            switch (alt77) {
+                case 1 :
+                    // InternalChartDSL.g:4583: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 :
+                    // InternalChartDSL.g:4592: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 :
+                    // InternalChartDSL.g:4601: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 :
+                    // InternalChartDSL.g:4610:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
+                    {
+                    // InternalChartDSL.g:4610:3: ( ( ( () 'synchronized' '(' ) )=>this_XSynchronizedExpression_3= ruleXSynchronizedExpression )
+                    // InternalChartDSL.g:4611: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 :
+                    // InternalChartDSL.g:4628: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 :
+                    // InternalChartDSL.g:4637: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 :
+                    // InternalChartDSL.g:4646: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 :
+                    // InternalChartDSL.g:4655:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
+                    {
+                    // InternalChartDSL.g:4655:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=>this_XForLoopExpression_7= ruleXForLoopExpression )
+                    // InternalChartDSL.g:4656: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 :
+                    // InternalChartDSL.g:4679: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 :
+                    // InternalChartDSL.g:4688: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 :
+                    // InternalChartDSL.g:4697: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 :
+                    // InternalChartDSL.g:4706: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 :
+                    // InternalChartDSL.g:4715: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 :
+                    // InternalChartDSL.g:4724: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 :
+                    // InternalChartDSL.g:4733: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"
+    // InternalChartDSL.g:4745:1: entryRuleXLiteral returns [EObject current=null] : iv_ruleXLiteral= ruleXLiteral EOF ;
+    public final EObject entryRuleXLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXLiteral = null;
+
+
+        try {
+            // InternalChartDSL.g:4745:49: (iv_ruleXLiteral= ruleXLiteral EOF )
+            // InternalChartDSL.g:4746: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"
+    // InternalChartDSL.g:4752: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 {
+            // InternalChartDSL.g:4758: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 ) )
+            // InternalChartDSL.g:4759: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 )
+            {
+            // InternalChartDSL.g:4759: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 alt78=7;
+            int LA78_0 = input.LA(1);
+
+            if ( (LA78_0==75) ) {
+                alt78=1;
+            }
+            else if ( (LA78_0==76) && (synpred27_InternalChartDSL())) {
+                alt78=2;
+            }
+            else if ( ((LA78_0>=124 && LA78_0<=125)) ) {
+                alt78=3;
+            }
+            else if ( (LA78_0==RULE_INT||(LA78_0>=RULE_HEX && LA78_0<=RULE_DECIMAL)) ) {
+                alt78=4;
+            }
+            else if ( (LA78_0==126) ) {
+                alt78=5;
+            }
+            else if ( (LA78_0==RULE_STRING) ) {
+                alt78=6;
+            }
+            else if ( (LA78_0==127) ) {
+                alt78=7;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 78, 0, input);
+
+                throw nvae;
+            }
+            switch (alt78) {
+                case 1 :
+                    // InternalChartDSL.g:4760: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 :
+                    // InternalChartDSL.g:4769:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
+                    {
+                    // InternalChartDSL.g:4769:3: ( ( ( () '[' ) )=>this_XClosure_1= ruleXClosure )
+                    // InternalChartDSL.g:4770: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 :
+                    // InternalChartDSL.g:4786: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 :
+                    // InternalChartDSL.g:4795: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 :
+                    // InternalChartDSL.g:4804: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 :
+                    // InternalChartDSL.g:4813: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 :
+                    // InternalChartDSL.g:4822: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"
+    // InternalChartDSL.g:4834:1: entryRuleXCollectionLiteral returns [EObject current=null] : iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF ;
+    public final EObject entryRuleXCollectionLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXCollectionLiteral = null;
+
+
+        try {
+            // InternalChartDSL.g:4834:59: (iv_ruleXCollectionLiteral= ruleXCollectionLiteral EOF )
+            // InternalChartDSL.g:4835: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"
+    // InternalChartDSL.g:4841: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 {
+            // InternalChartDSL.g:4847:2: ( (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral ) )
+            // InternalChartDSL.g:4848:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
+            {
+            // InternalChartDSL.g:4848:2: (this_XSetLiteral_0= ruleXSetLiteral | this_XListLiteral_1= ruleXListLiteral )
+            int alt79=2;
+            int LA79_0 = input.LA(1);
+
+            if ( (LA79_0==75) ) {
+                int LA79_1 = input.LA(2);
+
+                if ( (LA79_1==76) ) {
+                    alt79=2;
+                }
+                else if ( (LA79_1==14) ) {
+                    alt79=1;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 79, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 79, 0, input);
+
+                throw nvae;
+            }
+            switch (alt79) {
+                case 1 :
+                    // InternalChartDSL.g:4849: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 :
+                    // InternalChartDSL.g:4858: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"
+    // InternalChartDSL.g:4870:1: entryRuleXSetLiteral returns [EObject current=null] : iv_ruleXSetLiteral= ruleXSetLiteral EOF ;
+    public final EObject entryRuleXSetLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXSetLiteral = null;
+
+
+        try {
+            // InternalChartDSL.g:4870:52: (iv_ruleXSetLiteral= ruleXSetLiteral EOF )
+            // InternalChartDSL.g:4871: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"
+    // InternalChartDSL.g:4877: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 {
+            // InternalChartDSL.g:4883:2: ( ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' ) )
+            // InternalChartDSL.g:4884:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
+            {
+            // InternalChartDSL.g:4884:2: ( () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}' )
+            // InternalChartDSL.g:4885:3: () otherlv_1= '#' otherlv_2= '{' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= '}'
+            {
+            // InternalChartDSL.g:4885:3: ()
+            // InternalChartDSL.g:4886:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXSetLiteralAccess().getXSetLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,75,FOLLOW_24); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXSetLiteralAccess().getNumberSignKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,14,FOLLOW_80); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXSetLiteralAccess().getLeftCurlyBracketKeyword_2());
+              		
+            }
+            // InternalChartDSL.g:4900:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
+            int alt81=2;
+            int LA81_0 = input.LA(1);
+
+            if ( ((LA81_0>=RULE_INT && LA81_0<=RULE_DECIMAL)||LA81_0==14||(LA81_0>=63 && LA81_0<=66)||LA81_0==71||(LA81_0>=75 && LA81_0<=76)||LA81_0==83||LA81_0==99||LA81_0==103||LA81_0==110||LA81_0==112||(LA81_0>=116 && LA81_0<=118)||(LA81_0>=121 && LA81_0<=130)||LA81_0==132) ) {
+                alt81=1;
+            }
+            switch (alt81) {
+                case 1 :
+                    // InternalChartDSL.g:4901:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    {
+                    // InternalChartDSL.g:4901:4: ( (lv_elements_3_0= ruleXExpression ) )
+                    // InternalChartDSL.g:4902:5: (lv_elements_3_0= ruleXExpression )
+                    {
+                    // InternalChartDSL.g:4902:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalChartDSL.g:4903:6: lv_elements_3_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_81);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalChartDSL.g:4920:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    loop80:
+                    do {
+                        int alt80=2;
+                        int LA80_0 = input.LA(1);
+
+                        if ( (LA80_0==72) ) {
+                            alt80=1;
+                        }
+
+
+                        switch (alt80) {
+                    	case 1 :
+                    	    // InternalChartDSL.g:4921:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
+                    	    {
+                    	    otherlv_4=(Token)match(input,72,FOLLOW_50); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_4, grammarAccess.getXSetLiteralAccess().getCommaKeyword_3_1_0());
+                    	      				
+                    	    }
+                    	    // InternalChartDSL.g:4925:5: ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalChartDSL.g:4926:6: (lv_elements_5_0= ruleXExpression )
+                    	    {
+                    	    // InternalChartDSL.g:4926:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalChartDSL.g:4927:7: lv_elements_5_0= ruleXExpression
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXSetLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_81);
+                    	    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 loop80;
+                        }
+                    } 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"
+    // InternalChartDSL.g:4954:1: entryRuleXListLiteral returns [EObject current=null] : iv_ruleXListLiteral= ruleXListLiteral EOF ;
+    public final EObject entryRuleXListLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXListLiteral = null;
+
+
+        try {
+            // InternalChartDSL.g:4954:53: (iv_ruleXListLiteral= ruleXListLiteral EOF )
+            // InternalChartDSL.g:4955: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"
+    // InternalChartDSL.g:4961: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 {
+            // InternalChartDSL.g:4967:2: ( ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' ) )
+            // InternalChartDSL.g:4968:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
+            {
+            // InternalChartDSL.g:4968:2: ( () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']' )
+            // InternalChartDSL.g:4969:3: () otherlv_1= '#' otherlv_2= '[' ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )? otherlv_6= ']'
+            {
+            // InternalChartDSL.g:4969:3: ()
+            // InternalChartDSL.g:4970:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXListLiteralAccess().getXListLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,75,FOLLOW_51); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXListLiteralAccess().getNumberSignKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,76,FOLLOW_52); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXListLiteralAccess().getLeftSquareBracketKeyword_2());
+              		
+            }
+            // InternalChartDSL.g:4984:3: ( ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )* )?
+            int alt83=2;
+            int LA83_0 = input.LA(1);
+
+            if ( ((LA83_0>=RULE_INT && LA83_0<=RULE_DECIMAL)||LA83_0==14||(LA83_0>=63 && LA83_0<=66)||LA83_0==71||(LA83_0>=75 && LA83_0<=76)||LA83_0==83||LA83_0==99||LA83_0==103||LA83_0==110||LA83_0==112||(LA83_0>=116 && LA83_0<=118)||(LA83_0>=121 && LA83_0<=130)||LA83_0==132) ) {
+                alt83=1;
+            }
+            switch (alt83) {
+                case 1 :
+                    // InternalChartDSL.g:4985:4: ( (lv_elements_3_0= ruleXExpression ) ) (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    {
+                    // InternalChartDSL.g:4985:4: ( (lv_elements_3_0= ruleXExpression ) )
+                    // InternalChartDSL.g:4986:5: (lv_elements_3_0= ruleXExpression )
+                    {
+                    // InternalChartDSL.g:4986:5: (lv_elements_3_0= ruleXExpression )
+                    // InternalChartDSL.g:4987:6: lv_elements_3_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_0_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_53);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalChartDSL.g:5004:4: (otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) ) )*
+                    loop82:
+                    do {
+                        int alt82=2;
+                        int LA82_0 = input.LA(1);
+
+                        if ( (LA82_0==72) ) {
+                            alt82=1;
+                        }
+
+
+                        switch (alt82) {
+                    	case 1 :
+                    	    // InternalChartDSL.g:5005:5: otherlv_4= ',' ( (lv_elements_5_0= ruleXExpression ) )
+                    	    {
+                    	    otherlv_4=(Token)match(input,72,FOLLOW_50); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_4, grammarAccess.getXListLiteralAccess().getCommaKeyword_3_1_0());
+                    	      				
+                    	    }
+                    	    // InternalChartDSL.g:5009:5: ( (lv_elements_5_0= ruleXExpression ) )
+                    	    // InternalChartDSL.g:5010:6: (lv_elements_5_0= ruleXExpression )
+                    	    {
+                    	    // InternalChartDSL.g:5010:6: (lv_elements_5_0= ruleXExpression )
+                    	    // InternalChartDSL.g:5011:7: lv_elements_5_0= ruleXExpression
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXListLiteralAccess().getElementsXExpressionParserRuleCall_3_1_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_53);
+                    	    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 loop82;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,77,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"
+    // InternalChartDSL.g:5038:1: entryRuleXClosure returns [EObject current=null] : iv_ruleXClosure= ruleXClosure EOF ;
+    public final EObject entryRuleXClosure() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXClosure = null;
+
+
+        try {
+            // InternalChartDSL.g:5038:49: (iv_ruleXClosure= ruleXClosure EOF )
+            // InternalChartDSL.g:5039: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"
+    // InternalChartDSL.g:5045: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 {
+            // InternalChartDSL.g:5051: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= ']' ) )
+            // InternalChartDSL.g:5052: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= ']' )
+            {
+            // InternalChartDSL.g:5052: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= ']' )
+            // InternalChartDSL.g:5053: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= ']'
+            {
+            // InternalChartDSL.g:5053:3: ( ( ( () '[' ) )=> ( () otherlv_1= '[' ) )
+            // InternalChartDSL.g:5054:4: ( ( () '[' ) )=> ( () otherlv_1= '[' )
+            {
+            // InternalChartDSL.g:5060:4: ( () otherlv_1= '[' )
+            // InternalChartDSL.g:5061:5: () otherlv_1= '['
+            {
+            // InternalChartDSL.g:5061:5: ()
+            // InternalChartDSL.g:5062:6: 
+            {
+            if ( state.backtracking==0 ) {
+
+              						current = forceCreateModelElement(
+              							grammarAccess.getXClosureAccess().getXClosureAction_0_0_0(),
+              							current);
+              					
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,76,FOLLOW_82); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_1, grammarAccess.getXClosureAccess().getLeftSquareBracketKeyword_0_0_1());
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalChartDSL.g:5074:3: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) ) )?
+            int alt86=2;
+            alt86 = dfa86.predict(input);
+            switch (alt86) {
+                case 1 :
+                    // InternalChartDSL.g:5075:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
+                    {
+                    // InternalChartDSL.g:5098:4: ( ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) ) )
+                    // InternalChartDSL.g:5099:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_5_0= '|' ) )
+                    {
+                    // InternalChartDSL.g:5099:5: ( ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )* )?
+                    int alt85=2;
+                    int LA85_0 = input.LA(1);
+
+                    if ( (LA85_0==RULE_ID||LA85_0==71||LA85_0==96) ) {
+                        alt85=1;
+                    }
+                    switch (alt85) {
+                        case 1 :
+                            // InternalChartDSL.g:5100:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) ) (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
+                            {
+                            // InternalChartDSL.g:5100:6: ( (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter ) )
+                            // InternalChartDSL.g:5101:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
+                            {
+                            // InternalChartDSL.g:5101:7: (lv_declaredFormalParameters_2_0= ruleJvmFormalParameter )
+                            // InternalChartDSL.g:5102:8: lv_declaredFormalParameters_2_0= ruleJvmFormalParameter
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_0_0());
+                              							
+                            }
+                            pushFollow(FOLLOW_83);
+                            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();
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+                            // InternalChartDSL.g:5119:6: (otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) ) )*
+                            loop84:
+                            do {
+                                int alt84=2;
+                                int LA84_0 = input.LA(1);
+
+                                if ( (LA84_0==72) ) {
+                                    alt84=1;
+                                }
+
+
+                                switch (alt84) {
+                            	case 1 :
+                            	    // InternalChartDSL.g:5120:7: otherlv_3= ',' ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
+                            	    {
+                            	    otherlv_3=(Token)match(input,72,FOLLOW_63); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      							newLeafNode(otherlv_3, grammarAccess.getXClosureAccess().getCommaKeyword_1_0_0_1_0());
+                            	      						
+                            	    }
+                            	    // InternalChartDSL.g:5124:7: ( (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter ) )
+                            	    // InternalChartDSL.g:5125:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
+                            	    {
+                            	    // InternalChartDSL.g:5125:8: (lv_declaredFormalParameters_4_0= ruleJvmFormalParameter )
+                            	    // InternalChartDSL.g:5126:9: lv_declaredFormalParameters_4_0= ruleJvmFormalParameter
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+
+                            	      									newCompositeNode(grammarAccess.getXClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_1_0_0_1_1_0());
+                            	      								
+                            	    }
+                            	    pushFollow(FOLLOW_83);
+                            	    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 loop84;
+                                }
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+                    // InternalChartDSL.g:5145:5: ( (lv_explicitSyntax_5_0= '|' ) )
+                    // InternalChartDSL.g:5146:6: (lv_explicitSyntax_5_0= '|' )
+                    {
+                    // InternalChartDSL.g:5146:6: (lv_explicitSyntax_5_0= '|' )
+                    // InternalChartDSL.g:5147:7: lv_explicitSyntax_5_0= '|'
+                    {
+                    lv_explicitSyntax_5_0=(Token)match(input,109,FOLLOW_84); 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;
+
+            }
+
+            // InternalChartDSL.g:5161:3: ( (lv_expression_6_0= ruleXExpressionInClosure ) )
+            // InternalChartDSL.g:5162:4: (lv_expression_6_0= ruleXExpressionInClosure )
+            {
+            // InternalChartDSL.g:5162:4: (lv_expression_6_0= ruleXExpressionInClosure )
+            // InternalChartDSL.g:5163:5: lv_expression_6_0= ruleXExpressionInClosure
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXClosureAccess().getExpressionXExpressionInClosureParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_85);
+            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,77,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"
+    // InternalChartDSL.g:5188:1: entryRuleXExpressionInClosure returns [EObject current=null] : iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF ;
+    public final EObject entryRuleXExpressionInClosure() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXExpressionInClosure = null;
+
+
+        try {
+            // InternalChartDSL.g:5188:61: (iv_ruleXExpressionInClosure= ruleXExpressionInClosure EOF )
+            // InternalChartDSL.g:5189: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"
+    // InternalChartDSL.g:5195: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 {
+            // InternalChartDSL.g:5201:2: ( ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* ) )
+            // InternalChartDSL.g:5202:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
+            {
+            // InternalChartDSL.g:5202:2: ( () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )* )
+            // InternalChartDSL.g:5203:3: () ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
+            {
+            // InternalChartDSL.g:5203:3: ()
+            // InternalChartDSL.g:5204:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXExpressionInClosureAccess().getXBlockExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalChartDSL.g:5210:3: ( ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )? )*
+            loop88:
+            do {
+                int alt88=2;
+                int LA88_0 = input.LA(1);
+
+                if ( ((LA88_0>=RULE_INT && LA88_0<=RULE_DECIMAL)||LA88_0==14||(LA88_0>=63 && LA88_0<=66)||LA88_0==71||(LA88_0>=75 && LA88_0<=76)||LA88_0==83||LA88_0==99||LA88_0==103||LA88_0==110||LA88_0==112||(LA88_0>=116 && LA88_0<=130)||LA88_0==132) ) {
+                    alt88=1;
+                }
+
+
+                switch (alt88) {
+            	case 1 :
+            	    // InternalChartDSL.g:5211:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_2= ';' )?
+            	    {
+            	    // InternalChartDSL.g:5211:4: ( (lv_expressions_1_0= ruleXExpressionOrVarDeclaration ) )
+            	    // InternalChartDSL.g:5212:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
+            	    {
+            	    // InternalChartDSL.g:5212:5: (lv_expressions_1_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalChartDSL.g:5213:6: lv_expressions_1_0= ruleXExpressionOrVarDeclaration
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXExpressionInClosureAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_1_0_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_86);
+            	    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();
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalChartDSL.g:5230:4: (otherlv_2= ';' )?
+            	    int alt87=2;
+            	    int LA87_0 = input.LA(1);
+
+            	    if ( (LA87_0==69) ) {
+            	        alt87=1;
+            	    }
+            	    switch (alt87) {
+            	        case 1 :
+            	            // InternalChartDSL.g:5231:5: otherlv_2= ';'
+            	            {
+            	            otherlv_2=(Token)match(input,69,FOLLOW_87); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              					newLeafNode(otherlv_2, grammarAccess.getXExpressionInClosureAccess().getSemicolonKeyword_1_1());
+            	              				
+            	            }
+
+            	            }
+            	            break;
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop88;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXExpressionInClosure"
+
+
+    // $ANTLR start "entryRuleXShortClosure"
+    // InternalChartDSL.g:5241:1: entryRuleXShortClosure returns [EObject current=null] : iv_ruleXShortClosure= ruleXShortClosure EOF ;
+    public final EObject entryRuleXShortClosure() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXShortClosure = null;
+
+
+        try {
+            // InternalChartDSL.g:5241:54: (iv_ruleXShortClosure= ruleXShortClosure EOF )
+            // InternalChartDSL.g:5242: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"
+    // InternalChartDSL.g:5248: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 {
+            // InternalChartDSL.g:5254:2: ( ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) ) )
+            // InternalChartDSL.g:5255:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
+            {
+            // InternalChartDSL.g:5255:2: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalChartDSL.g:5256:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) ) ( (lv_expression_5_0= ruleXExpression ) )
+            {
+            // InternalChartDSL.g:5256:3: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) ) )
+            // InternalChartDSL.g:5257:4: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
+            {
+            // InternalChartDSL.g:5282:4: ( () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) ) )
+            // InternalChartDSL.g:5283:5: () ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )? ( (lv_explicitSyntax_4_0= '|' ) )
+            {
+            // InternalChartDSL.g:5283:5: ()
+            // InternalChartDSL.g:5284:6: 
+            {
+            if ( state.backtracking==0 ) {
+
+              						current = forceCreateModelElement(
+              							grammarAccess.getXShortClosureAccess().getXClosureAction_0_0_0(),
+              							current);
+              					
+            }
+
+            }
+
+            // InternalChartDSL.g:5290:5: ( ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )* )?
+            int alt90=2;
+            int LA90_0 = input.LA(1);
+
+            if ( (LA90_0==RULE_ID||LA90_0==71||LA90_0==96) ) {
+                alt90=1;
+            }
+            switch (alt90) {
+                case 1 :
+                    // InternalChartDSL.g:5291:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) ) (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
+                    {
+                    // InternalChartDSL.g:5291:6: ( (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter ) )
+                    // InternalChartDSL.g:5292:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
+                    {
+                    // InternalChartDSL.g:5292:7: (lv_declaredFormalParameters_1_0= ruleJvmFormalParameter )
+                    // InternalChartDSL.g:5293:8: lv_declaredFormalParameters_1_0= ruleJvmFormalParameter
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      								newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_0_0());
+                      							
+                    }
+                    pushFollow(FOLLOW_83);
+                    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();
+                      							
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalChartDSL.g:5310:6: (otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) ) )*
+                    loop89:
+                    do {
+                        int alt89=2;
+                        int LA89_0 = input.LA(1);
+
+                        if ( (LA89_0==72) ) {
+                            alt89=1;
+                        }
+
+
+                        switch (alt89) {
+                    	case 1 :
+                    	    // InternalChartDSL.g:5311:7: otherlv_2= ',' ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
+                    	    {
+                    	    otherlv_2=(Token)match(input,72,FOLLOW_63); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newLeafNode(otherlv_2, grammarAccess.getXShortClosureAccess().getCommaKeyword_0_0_1_1_0());
+                    	      						
+                    	    }
+                    	    // InternalChartDSL.g:5315:7: ( (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter ) )
+                    	    // InternalChartDSL.g:5316:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
+                    	    {
+                    	    // InternalChartDSL.g:5316:8: (lv_declaredFormalParameters_3_0= ruleJvmFormalParameter )
+                    	    // InternalChartDSL.g:5317:9: lv_declaredFormalParameters_3_0= ruleJvmFormalParameter
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      									newCompositeNode(grammarAccess.getXShortClosureAccess().getDeclaredFormalParametersJvmFormalParameterParserRuleCall_0_0_1_1_1_0());
+                    	      								
+                    	    }
+                    	    pushFollow(FOLLOW_83);
+                    	    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 loop89;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            // InternalChartDSL.g:5336:5: ( (lv_explicitSyntax_4_0= '|' ) )
+            // InternalChartDSL.g:5337:6: (lv_explicitSyntax_4_0= '|' )
+            {
+            // InternalChartDSL.g:5337:6: (lv_explicitSyntax_4_0= '|' )
+            // InternalChartDSL.g:5338:7: lv_explicitSyntax_4_0= '|'
+            {
+            lv_explicitSyntax_4_0=(Token)match(input,109,FOLLOW_50); 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, "|");
+              						
+            }
+
+            }
+
+
+            }
+
+
+            }
+
+
+            }
+
+            // InternalChartDSL.g:5352:3: ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalChartDSL.g:5353:4: (lv_expression_5_0= ruleXExpression )
+            {
+            // InternalChartDSL.g:5353:4: (lv_expression_5_0= ruleXExpression )
+            // InternalChartDSL.g:5354: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"
+    // InternalChartDSL.g:5375:1: entryRuleXParenthesizedExpression returns [EObject current=null] : iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF ;
+    public final EObject entryRuleXParenthesizedExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXParenthesizedExpression = null;
+
+
+        try {
+            // InternalChartDSL.g:5375:65: (iv_ruleXParenthesizedExpression= ruleXParenthesizedExpression EOF )
+            // InternalChartDSL.g:5376: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"
+    // InternalChartDSL.g:5382: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 {
+            // InternalChartDSL.g:5388:2: ( (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' ) )
+            // InternalChartDSL.g:5389:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
+            {
+            // InternalChartDSL.g:5389:2: (otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')' )
+            // InternalChartDSL.g:5390:3: otherlv_0= '(' this_XExpression_1= ruleXExpression otherlv_2= ')'
+            {
+            otherlv_0=(Token)match(input,71,FOLLOW_50); 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_48);
+            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,73,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"
+    // InternalChartDSL.g:5410:1: entryRuleXIfExpression returns [EObject current=null] : iv_ruleXIfExpression= ruleXIfExpression EOF ;
+    public final EObject entryRuleXIfExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXIfExpression = null;
+
+
+        try {
+            // InternalChartDSL.g:5410:54: (iv_ruleXIfExpression= ruleXIfExpression EOF )
+            // InternalChartDSL.g:5411: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"
+    // InternalChartDSL.g:5417: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 {
+            // InternalChartDSL.g:5423: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 ) ) )? ) )
+            // InternalChartDSL.g:5424: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 ) ) )? )
+            {
+            // InternalChartDSL.g:5424: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 ) ) )? )
+            // InternalChartDSL.g:5425: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 ) ) )?
+            {
+            // InternalChartDSL.g:5425:3: ()
+            // InternalChartDSL.g:5426:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXIfExpressionAccess().getXIfExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,110,FOLLOW_88); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXIfExpressionAccess().getIfKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,71,FOLLOW_50); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXIfExpressionAccess().getLeftParenthesisKeyword_2());
+              		
+            }
+            // InternalChartDSL.g:5440:3: ( (lv_if_3_0= ruleXExpression ) )
+            // InternalChartDSL.g:5441:4: (lv_if_3_0= ruleXExpression )
+            {
+            // InternalChartDSL.g:5441:4: (lv_if_3_0= ruleXExpression )
+            // InternalChartDSL.g:5442:5: lv_if_3_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXIfExpressionAccess().getIfXExpressionParserRuleCall_3_0());
+              				
+            }
+            pushFollow(FOLLOW_48);
+            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,73,FOLLOW_50); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getXIfExpressionAccess().getRightParenthesisKeyword_4());
+              		
+            }
+            // InternalChartDSL.g:5463:3: ( (lv_then_5_0= ruleXExpression ) )
+            // InternalChartDSL.g:5464:4: (lv_then_5_0= ruleXExpression )
+            {
+            // InternalChartDSL.g:5464:4: (lv_then_5_0= ruleXExpression )
+            // InternalChartDSL.g:5465:5: lv_then_5_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXIfExpressionAccess().getThenXExpressionParserRuleCall_5_0());
+              				
+            }
+            pushFollow(FOLLOW_89);
+            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();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalChartDSL.g:5482:3: ( ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) ) )?
+            int alt91=2;
+            int LA91_0 = input.LA(1);
+
+            if ( (LA91_0==111) ) {
+                int LA91_1 = input.LA(2);
+
+                if ( (synpred31_InternalChartDSL()) ) {
+                    alt91=1;
+                }
+            }
+            switch (alt91) {
+                case 1 :
+                    // InternalChartDSL.g:5483:4: ( ( 'else' )=>otherlv_6= 'else' ) ( (lv_else_7_0= ruleXExpression ) )
+                    {
+                    // InternalChartDSL.g:5483:4: ( ( 'else' )=>otherlv_6= 'else' )
+                    // InternalChartDSL.g:5484:5: ( 'else' )=>otherlv_6= 'else'
+                    {
+                    otherlv_6=(Token)match(input,111,FOLLOW_50); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_6, grammarAccess.getXIfExpressionAccess().getElseKeyword_6_0());
+                      				
+                    }
+
+                    }
+
+                    // InternalChartDSL.g:5490:4: ( (lv_else_7_0= ruleXExpression ) )
+                    // InternalChartDSL.g:5491:5: (lv_else_7_0= ruleXExpression )
+                    {
+                    // InternalChartDSL.g:5491:5: (lv_else_7_0= ruleXExpression )
+                    // InternalChartDSL.g:5492: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"
+    // InternalChartDSL.g:5514:1: entryRuleXSwitchExpression returns [EObject current=null] : iv_ruleXSwitchExpression= ruleXSwitchExpression EOF ;
+    public final EObject entryRuleXSwitchExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXSwitchExpression = null;
+
+
+        try {
+            // InternalChartDSL.g:5514:58: (iv_ruleXSwitchExpression= ruleXSwitchExpression EOF )
+            // InternalChartDSL.g:5515: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"
+    // InternalChartDSL.g:5521: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 {
+            // InternalChartDSL.g:5527: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= '}' ) )
+            // InternalChartDSL.g:5528: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= '}' )
+            {
+            // InternalChartDSL.g:5528: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= '}' )
+            // InternalChartDSL.g:5529: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= '}'
+            {
+            // InternalChartDSL.g:5529:3: ()
+            // InternalChartDSL.g:5530:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXSwitchExpressionAccess().getXSwitchExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,112,FOLLOW_90); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXSwitchExpressionAccess().getSwitchKeyword_1());
+              		
+            }
+            // InternalChartDSL.g:5540: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 alt93=2;
+            alt93 = dfa93.predict(input);
+            switch (alt93) {
+                case 1 :
+                    // InternalChartDSL.g:5541:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
+                    {
+                    // InternalChartDSL.g:5541:4: ( ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')' )
+                    // InternalChartDSL.g:5542:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) ) ( (lv_switch_5_0= ruleXExpression ) ) otherlv_6= ')'
+                    {
+                    // InternalChartDSL.g:5542:5: ( ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
+                    // InternalChartDSL.g:5543:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+                    {
+                    // InternalChartDSL.g:5553:6: (otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+                    // InternalChartDSL.g:5554:7: otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
+                    {
+                    otherlv_2=(Token)match(input,71,FOLLOW_63); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							newLeafNode(otherlv_2, grammarAccess.getXSwitchExpressionAccess().getLeftParenthesisKeyword_2_0_0_0_0());
+                      						
+                    }
+                    // InternalChartDSL.g:5558:7: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
+                    // InternalChartDSL.g:5559:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+                    {
+                    // InternalChartDSL.g:5559:8: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+                    // InternalChartDSL.g:5560:9: lv_declaredParam_3_0= ruleJvmFormalParameter
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      									newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_0_0_0_1_0());
+                      								
+                    }
+                    pushFollow(FOLLOW_91);
+                    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,113,FOLLOW_50); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      							newLeafNode(otherlv_4, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_0_0_0_2());
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalChartDSL.g:5583:5: ( (lv_switch_5_0= ruleXExpression ) )
+                    // InternalChartDSL.g:5584:6: (lv_switch_5_0= ruleXExpression )
+                    {
+                    // InternalChartDSL.g:5584:6: (lv_switch_5_0= ruleXExpression )
+                    // InternalChartDSL.g:5585:7: lv_switch_5_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_0_1_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_48);
+                    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,73,FOLLOW_24); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_6, grammarAccess.getXSwitchExpressionAccess().getRightParenthesisKeyword_2_0_2());
+                      				
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:5608:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
+                    {
+                    // InternalChartDSL.g:5608:4: ( ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) ) )
+                    // InternalChartDSL.g:5609:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )? ( (lv_switch_9_0= ruleXExpression ) )
+                    {
+                    // InternalChartDSL.g:5609:5: ( ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' ) )?
+                    int alt92=2;
+                    alt92 = dfa92.predict(input);
+                    switch (alt92) {
+                        case 1 :
+                            // InternalChartDSL.g:5610:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
+                            {
+                            // InternalChartDSL.g:5619:6: ( ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':' )
+                            // InternalChartDSL.g:5620:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) ) otherlv_8= ':'
+                            {
+                            // InternalChartDSL.g:5620:7: ( (lv_declaredParam_7_0= ruleJvmFormalParameter ) )
+                            // InternalChartDSL.g:5621:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
+                            {
+                            // InternalChartDSL.g:5621:8: (lv_declaredParam_7_0= ruleJvmFormalParameter )
+                            // InternalChartDSL.g:5622:9: lv_declaredParam_7_0= ruleJvmFormalParameter
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              									newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_2_1_0_0_0_0());
+                              								
+                            }
+                            pushFollow(FOLLOW_91);
+                            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,113,FOLLOW_50); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              							newLeafNode(otherlv_8, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_2_1_0_0_1());
+                              						
+                            }
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    // InternalChartDSL.g:5645:5: ( (lv_switch_9_0= ruleXExpression ) )
+                    // InternalChartDSL.g:5646:6: (lv_switch_9_0= ruleXExpression )
+                    {
+                    // InternalChartDSL.g:5646:6: (lv_switch_9_0= ruleXExpression )
+                    // InternalChartDSL.g:5647:7: lv_switch_9_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getSwitchXExpressionParserRuleCall_2_1_1_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_24);
+                    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_92); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_10, grammarAccess.getXSwitchExpressionAccess().getLeftCurlyBracketKeyword_3());
+              		
+            }
+            // InternalChartDSL.g:5670:3: ( (lv_cases_11_0= ruleXCasePart ) )*
+            loop94:
+            do {
+                int alt94=2;
+                int LA94_0 = input.LA(1);
+
+                if ( (LA94_0==RULE_ID||(LA94_0>=71 && LA94_0<=72)||LA94_0==96||LA94_0==113||LA94_0==115) ) {
+                    alt94=1;
+                }
+
+
+                switch (alt94) {
+            	case 1 :
+            	    // InternalChartDSL.g:5671:4: (lv_cases_11_0= ruleXCasePart )
+            	    {
+            	    // InternalChartDSL.g:5671:4: (lv_cases_11_0= ruleXCasePart )
+            	    // InternalChartDSL.g:5672:5: lv_cases_11_0= ruleXCasePart
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      					newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getCasesXCasePartParserRuleCall_4_0());
+            	      				
+            	    }
+            	    pushFollow(FOLLOW_92);
+            	    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 loop94;
+                }
+            } while (true);
+
+            // InternalChartDSL.g:5689:3: (otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) ) )?
+            int alt95=2;
+            int LA95_0 = input.LA(1);
+
+            if ( (LA95_0==114) ) {
+                alt95=1;
+            }
+            switch (alt95) {
+                case 1 :
+                    // InternalChartDSL.g:5690:4: otherlv_12= 'default' otherlv_13= ':' ( (lv_default_14_0= ruleXExpression ) )
+                    {
+                    otherlv_12=(Token)match(input,114,FOLLOW_91); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_12, grammarAccess.getXSwitchExpressionAccess().getDefaultKeyword_5_0());
+                      			
+                    }
+                    otherlv_13=(Token)match(input,113,FOLLOW_50); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_13, grammarAccess.getXSwitchExpressionAccess().getColonKeyword_5_1());
+                      			
+                    }
+                    // InternalChartDSL.g:5698:4: ( (lv_default_14_0= ruleXExpression ) )
+                    // InternalChartDSL.g:5699:5: (lv_default_14_0= ruleXExpression )
+                    {
+                    // InternalChartDSL.g:5699:5: (lv_default_14_0= ruleXExpression )
+                    // InternalChartDSL.g:5700:6: lv_default_14_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXSwitchExpressionAccess().getDefaultXExpressionParserRuleCall_5_2_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_93);
+                    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"
+    // InternalChartDSL.g:5726:1: entryRuleXCasePart returns [EObject current=null] : iv_ruleXCasePart= ruleXCasePart EOF ;
+    public final EObject entryRuleXCasePart() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXCasePart = null;
+
+
+        try {
+            // InternalChartDSL.g:5726:50: (iv_ruleXCasePart= ruleXCasePart EOF )
+            // InternalChartDSL.g:5727: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"
+    // InternalChartDSL.g:5733: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 {
+            // InternalChartDSL.g:5739: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= ',' ) ) ) ) )
+            // InternalChartDSL.g:5740: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= ',' ) ) ) )
+            {
+            // InternalChartDSL.g:5740: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= ',' ) ) ) )
+            // InternalChartDSL.g:5741: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= ',' ) ) )
+            {
+            // InternalChartDSL.g:5741:3: ()
+            // InternalChartDSL.g:5742:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXCasePartAccess().getXCasePartAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalChartDSL.g:5748:3: ( (lv_typeGuard_1_0= ruleJvmTypeReference ) )?
+            int alt96=2;
+            int LA96_0 = input.LA(1);
+
+            if ( (LA96_0==RULE_ID||LA96_0==71||LA96_0==96) ) {
+                alt96=1;
+            }
+            switch (alt96) {
+                case 1 :
+                    // InternalChartDSL.g:5749:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
+                    {
+                    // InternalChartDSL.g:5749:4: (lv_typeGuard_1_0= ruleJvmTypeReference )
+                    // InternalChartDSL.g:5750:5: lv_typeGuard_1_0= ruleJvmTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      					newCompositeNode(grammarAccess.getXCasePartAccess().getTypeGuardJvmTypeReferenceParserRuleCall_1_0());
+                      				
+                    }
+                    pushFollow(FOLLOW_94);
+                    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;
+
+            }
+
+            // InternalChartDSL.g:5767:3: (otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) ) )?
+            int alt97=2;
+            int LA97_0 = input.LA(1);
+
+            if ( (LA97_0==115) ) {
+                alt97=1;
+            }
+            switch (alt97) {
+                case 1 :
+                    // InternalChartDSL.g:5768:4: otherlv_2= 'case' ( (lv_case_3_0= ruleXExpression ) )
+                    {
+                    otherlv_2=(Token)match(input,115,FOLLOW_50); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_2, grammarAccess.getXCasePartAccess().getCaseKeyword_2_0());
+                      			
+                    }
+                    // InternalChartDSL.g:5772:4: ( (lv_case_3_0= ruleXExpression ) )
+                    // InternalChartDSL.g:5773:5: (lv_case_3_0= ruleXExpression )
+                    {
+                    // InternalChartDSL.g:5773:5: (lv_case_3_0= ruleXExpression )
+                    // InternalChartDSL.g:5774:6: lv_case_3_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXCasePartAccess().getCaseXExpressionParserRuleCall_2_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_95);
+                    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;
+
+            }
+
+            // InternalChartDSL.g:5792:3: ( (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) ) | ( (lv_fallThrough_6_0= ',' ) ) )
+            int alt98=2;
+            int LA98_0 = input.LA(1);
+
+            if ( (LA98_0==113) ) {
+                alt98=1;
+            }
+            else if ( (LA98_0==72) ) {
+                alt98=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 98, 0, input);
+
+                throw nvae;
+            }
+            switch (alt98) {
+                case 1 :
+                    // InternalChartDSL.g:5793:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
+                    {
+                    // InternalChartDSL.g:5793:4: (otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) ) )
+                    // InternalChartDSL.g:5794:5: otherlv_4= ':' ( (lv_then_5_0= ruleXExpression ) )
+                    {
+                    otherlv_4=(Token)match(input,113,FOLLOW_50); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_4, grammarAccess.getXCasePartAccess().getColonKeyword_3_0_0());
+                      				
+                    }
+                    // InternalChartDSL.g:5798:5: ( (lv_then_5_0= ruleXExpression ) )
+                    // InternalChartDSL.g:5799:6: (lv_then_5_0= ruleXExpression )
+                    {
+                    // InternalChartDSL.g:5799:6: (lv_then_5_0= ruleXExpression )
+                    // InternalChartDSL.g:5800: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 :
+                    // InternalChartDSL.g:5819:4: ( (lv_fallThrough_6_0= ',' ) )
+                    {
+                    // InternalChartDSL.g:5819:4: ( (lv_fallThrough_6_0= ',' ) )
+                    // InternalChartDSL.g:5820:5: (lv_fallThrough_6_0= ',' )
+                    {
+                    // InternalChartDSL.g:5820:5: (lv_fallThrough_6_0= ',' )
+                    // InternalChartDSL.g:5821:6: lv_fallThrough_6_0= ','
+                    {
+                    lv_fallThrough_6_0=(Token)match(input,72,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"
+    // InternalChartDSL.g:5838:1: entryRuleXForLoopExpression returns [EObject current=null] : iv_ruleXForLoopExpression= ruleXForLoopExpression EOF ;
+    public final EObject entryRuleXForLoopExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXForLoopExpression = null;
+
+
+        try {
+            // InternalChartDSL.g:5838:59: (iv_ruleXForLoopExpression= ruleXForLoopExpression EOF )
+            // InternalChartDSL.g:5839: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"
+    // InternalChartDSL.g:5845: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 {
+            // InternalChartDSL.g:5851: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 ) ) ) )
+            // InternalChartDSL.g:5852: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 ) ) )
+            {
+            // InternalChartDSL.g:5852: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 ) ) )
+            // InternalChartDSL.g:5853: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 ) )
+            {
+            // InternalChartDSL.g:5853:3: ( ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' ) )
+            // InternalChartDSL.g:5854:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )=> ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+            {
+            // InternalChartDSL.g:5867:4: ( () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':' )
+            // InternalChartDSL.g:5868:5: () otherlv_1= 'for' otherlv_2= '(' ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) ) otherlv_4= ':'
+            {
+            // InternalChartDSL.g:5868:5: ()
+            // InternalChartDSL.g:5869:6: 
+            {
+            if ( state.backtracking==0 ) {
+
+              						current = forceCreateModelElement(
+              							grammarAccess.getXForLoopExpressionAccess().getXForLoopExpressionAction_0_0_0(),
+              							current);
+              					
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,116,FOLLOW_88); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_1, grammarAccess.getXForLoopExpressionAccess().getForKeyword_0_0_1());
+              				
+            }
+            otherlv_2=(Token)match(input,71,FOLLOW_63); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_2, grammarAccess.getXForLoopExpressionAccess().getLeftParenthesisKeyword_0_0_2());
+              				
+            }
+            // InternalChartDSL.g:5883:5: ( (lv_declaredParam_3_0= ruleJvmFormalParameter ) )
+            // InternalChartDSL.g:5884:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+            {
+            // InternalChartDSL.g:5884:6: (lv_declaredParam_3_0= ruleJvmFormalParameter )
+            // InternalChartDSL.g:5885:7: lv_declaredParam_3_0= ruleJvmFormalParameter
+            {
+            if ( state.backtracking==0 ) {
+
+              							newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getDeclaredParamJvmFormalParameterParserRuleCall_0_0_3_0());
+              						
+            }
+            pushFollow(FOLLOW_91);
+            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,113,FOLLOW_50); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_4, grammarAccess.getXForLoopExpressionAccess().getColonKeyword_0_0_4());
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalChartDSL.g:5908:3: ( (lv_forExpression_5_0= ruleXExpression ) )
+            // InternalChartDSL.g:5909:4: (lv_forExpression_5_0= ruleXExpression )
+            {
+            // InternalChartDSL.g:5909:4: (lv_forExpression_5_0= ruleXExpression )
+            // InternalChartDSL.g:5910:5: lv_forExpression_5_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXForLoopExpressionAccess().getForExpressionXExpressionParserRuleCall_1_0());
+              				
+            }
+            pushFollow(FOLLOW_48);
+            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,73,FOLLOW_50); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_6, grammarAccess.getXForLoopExpressionAccess().getRightParenthesisKeyword_2());
+              		
+            }
+            // InternalChartDSL.g:5931:3: ( (lv_eachExpression_7_0= ruleXExpression ) )
+            // InternalChartDSL.g:5932:4: (lv_eachExpression_7_0= ruleXExpression )
+            {
+            // InternalChartDSL.g:5932:4: (lv_eachExpression_7_0= ruleXExpression )
+            // InternalChartDSL.g:5933: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"
+    // InternalChartDSL.g:5954:1: entryRuleXBasicForLoopExpression returns [EObject current=null] : iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF ;
+    public final EObject entryRuleXBasicForLoopExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXBasicForLoopExpression = null;
+
+
+        try {
+            // InternalChartDSL.g:5954:64: (iv_ruleXBasicForLoopExpression= ruleXBasicForLoopExpression EOF )
+            // InternalChartDSL.g:5955: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"
+    // InternalChartDSL.g:5961: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 {
+            // InternalChartDSL.g:5967: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 ) ) ) )
+            // InternalChartDSL.g:5968: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 ) ) )
+            {
+            // InternalChartDSL.g:5968: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 ) ) )
+            // InternalChartDSL.g:5969: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 ) )
+            {
+            // InternalChartDSL.g:5969:3: ()
+            // InternalChartDSL.g:5970:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXBasicForLoopExpressionAccess().getXBasicForLoopExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,116,FOLLOW_88); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXBasicForLoopExpressionAccess().getForKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,71,FOLLOW_96); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXBasicForLoopExpressionAccess().getLeftParenthesisKeyword_2());
+              		
+            }
+            // InternalChartDSL.g:5984:3: ( ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )* )?
+            int alt100=2;
+            int LA100_0 = input.LA(1);
+
+            if ( ((LA100_0>=RULE_INT && LA100_0<=RULE_DECIMAL)||LA100_0==14||(LA100_0>=63 && LA100_0<=66)||LA100_0==71||(LA100_0>=75 && LA100_0<=76)||LA100_0==83||LA100_0==99||LA100_0==103||LA100_0==110||LA100_0==112||(LA100_0>=116 && LA100_0<=130)||LA100_0==132) ) {
+                alt100=1;
+            }
+            switch (alt100) {
+                case 1 :
+                    // InternalChartDSL.g:5985:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
+                    {
+                    // InternalChartDSL.g:5985:4: ( (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration ) )
+                    // InternalChartDSL.g:5986:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
+                    {
+                    // InternalChartDSL.g:5986:5: (lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration )
+                    // InternalChartDSL.g:5987:6: lv_initExpressions_3_0= ruleXExpressionOrVarDeclaration
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_0_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_97);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalChartDSL.g:6004:4: (otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) ) )*
+                    loop99:
+                    do {
+                        int alt99=2;
+                        int LA99_0 = input.LA(1);
+
+                        if ( (LA99_0==72) ) {
+                            alt99=1;
+                        }
+
+
+                        switch (alt99) {
+                    	case 1 :
+                    	    // InternalChartDSL.g:6005:5: otherlv_4= ',' ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
+                    	    {
+                    	    otherlv_4=(Token)match(input,72,FOLLOW_98); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_4, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_3_1_0());
+                    	      				
+                    	    }
+                    	    // InternalChartDSL.g:6009:5: ( (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration ) )
+                    	    // InternalChartDSL.g:6010:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
+                    	    {
+                    	    // InternalChartDSL.g:6010:6: (lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration )
+                    	    // InternalChartDSL.g:6011:7: lv_initExpressions_5_0= ruleXExpressionOrVarDeclaration
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getInitExpressionsXExpressionOrVarDeclarationParserRuleCall_3_1_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_97);
+                    	    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 loop99;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_6=(Token)match(input,69,FOLLOW_99); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_6, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_4());
+              		
+            }
+            // InternalChartDSL.g:6034:3: ( (lv_expression_7_0= ruleXExpression ) )?
+            int alt101=2;
+            int LA101_0 = input.LA(1);
+
+            if ( ((LA101_0>=RULE_INT && LA101_0<=RULE_DECIMAL)||LA101_0==14||(LA101_0>=63 && LA101_0<=66)||LA101_0==71||(LA101_0>=75 && LA101_0<=76)||LA101_0==83||LA101_0==99||LA101_0==103||LA101_0==110||LA101_0==112||(LA101_0>=116 && LA101_0<=118)||(LA101_0>=121 && LA101_0<=130)||LA101_0==132) ) {
+                alt101=1;
+            }
+            switch (alt101) {
+                case 1 :
+                    // InternalChartDSL.g:6035:4: (lv_expression_7_0= ruleXExpression )
+                    {
+                    // InternalChartDSL.g:6035:4: (lv_expression_7_0= ruleXExpression )
+                    // InternalChartDSL.g:6036:5: lv_expression_7_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      					newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getExpressionXExpressionParserRuleCall_5_0());
+                      				
+                    }
+                    pushFollow(FOLLOW_100);
+                    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,69,FOLLOW_46); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_8, grammarAccess.getXBasicForLoopExpressionAccess().getSemicolonKeyword_6());
+              		
+            }
+            // InternalChartDSL.g:6057:3: ( ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )* )?
+            int alt103=2;
+            int LA103_0 = input.LA(1);
+
+            if ( ((LA103_0>=RULE_INT && LA103_0<=RULE_DECIMAL)||LA103_0==14||(LA103_0>=63 && LA103_0<=66)||LA103_0==71||(LA103_0>=75 && LA103_0<=76)||LA103_0==83||LA103_0==99||LA103_0==103||LA103_0==110||LA103_0==112||(LA103_0>=116 && LA103_0<=118)||(LA103_0>=121 && LA103_0<=130)||LA103_0==132) ) {
+                alt103=1;
+            }
+            switch (alt103) {
+                case 1 :
+                    // InternalChartDSL.g:6058:4: ( (lv_updateExpressions_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
+                    {
+                    // InternalChartDSL.g:6058:4: ( (lv_updateExpressions_9_0= ruleXExpression ) )
+                    // InternalChartDSL.g:6059:5: (lv_updateExpressions_9_0= ruleXExpression )
+                    {
+                    // InternalChartDSL.g:6059:5: (lv_updateExpressions_9_0= ruleXExpression )
+                    // InternalChartDSL.g:6060:6: lv_updateExpressions_9_0= ruleXExpression
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_0_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_47);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalChartDSL.g:6077:4: (otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) ) )*
+                    loop102:
+                    do {
+                        int alt102=2;
+                        int LA102_0 = input.LA(1);
+
+                        if ( (LA102_0==72) ) {
+                            alt102=1;
+                        }
+
+
+                        switch (alt102) {
+                    	case 1 :
+                    	    // InternalChartDSL.g:6078:5: otherlv_10= ',' ( (lv_updateExpressions_11_0= ruleXExpression ) )
+                    	    {
+                    	    otherlv_10=(Token)match(input,72,FOLLOW_50); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_10, grammarAccess.getXBasicForLoopExpressionAccess().getCommaKeyword_7_1_0());
+                    	      				
+                    	    }
+                    	    // InternalChartDSL.g:6082:5: ( (lv_updateExpressions_11_0= ruleXExpression ) )
+                    	    // InternalChartDSL.g:6083:6: (lv_updateExpressions_11_0= ruleXExpression )
+                    	    {
+                    	    // InternalChartDSL.g:6083:6: (lv_updateExpressions_11_0= ruleXExpression )
+                    	    // InternalChartDSL.g:6084:7: lv_updateExpressions_11_0= ruleXExpression
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXBasicForLoopExpressionAccess().getUpdateExpressionsXExpressionParserRuleCall_7_1_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_47);
+                    	    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 loop102;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+            otherlv_12=(Token)match(input,73,FOLLOW_50); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_12, grammarAccess.getXBasicForLoopExpressionAccess().getRightParenthesisKeyword_8());
+              		
+            }
+            // InternalChartDSL.g:6107:3: ( (lv_eachExpression_13_0= ruleXExpression ) )
+            // InternalChartDSL.g:6108:4: (lv_eachExpression_13_0= ruleXExpression )
+            {
+            // InternalChartDSL.g:6108:4: (lv_eachExpression_13_0= ruleXExpression )
+            // InternalChartDSL.g:6109: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"
+    // InternalChartDSL.g:6130:1: entryRuleXWhileExpression returns [EObject current=null] : iv_ruleXWhileExpression= ruleXWhileExpression EOF ;
+    public final EObject entryRuleXWhileExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXWhileExpression = null;
+
+
+        try {
+            // InternalChartDSL.g:6130:57: (iv_ruleXWhileExpression= ruleXWhileExpression EOF )
+            // InternalChartDSL.g:6131: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"
+    // InternalChartDSL.g:6137: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 {
+            // InternalChartDSL.g:6143:2: ( ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) ) )
+            // InternalChartDSL.g:6144:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
+            {
+            // InternalChartDSL.g:6144:2: ( () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) ) )
+            // InternalChartDSL.g:6145:3: () otherlv_1= 'while' otherlv_2= '(' ( (lv_predicate_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_body_5_0= ruleXExpression ) )
+            {
+            // InternalChartDSL.g:6145:3: ()
+            // InternalChartDSL.g:6146:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXWhileExpressionAccess().getXWhileExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,117,FOLLOW_88); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXWhileExpressionAccess().getWhileKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,71,FOLLOW_50); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXWhileExpressionAccess().getLeftParenthesisKeyword_2());
+              		
+            }
+            // InternalChartDSL.g:6160:3: ( (lv_predicate_3_0= ruleXExpression ) )
+            // InternalChartDSL.g:6161:4: (lv_predicate_3_0= ruleXExpression )
+            {
+            // InternalChartDSL.g:6161:4: (lv_predicate_3_0= ruleXExpression )
+            // InternalChartDSL.g:6162:5: lv_predicate_3_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXWhileExpressionAccess().getPredicateXExpressionParserRuleCall_3_0());
+              				
+            }
+            pushFollow(FOLLOW_48);
+            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,73,FOLLOW_50); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getXWhileExpressionAccess().getRightParenthesisKeyword_4());
+              		
+            }
+            // InternalChartDSL.g:6183:3: ( (lv_body_5_0= ruleXExpression ) )
+            // InternalChartDSL.g:6184:4: (lv_body_5_0= ruleXExpression )
+            {
+            // InternalChartDSL.g:6184:4: (lv_body_5_0= ruleXExpression )
+            // InternalChartDSL.g:6185: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"
+    // InternalChartDSL.g:6206:1: entryRuleXDoWhileExpression returns [EObject current=null] : iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF ;
+    public final EObject entryRuleXDoWhileExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXDoWhileExpression = null;
+
+
+        try {
+            // InternalChartDSL.g:6206:59: (iv_ruleXDoWhileExpression= ruleXDoWhileExpression EOF )
+            // InternalChartDSL.g:6207: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"
+    // InternalChartDSL.g:6213: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 {
+            // InternalChartDSL.g:6219:2: ( ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' ) )
+            // InternalChartDSL.g:6220:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
+            {
+            // InternalChartDSL.g:6220:2: ( () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')' )
+            // InternalChartDSL.g:6221:3: () otherlv_1= 'do' ( (lv_body_2_0= ruleXExpression ) ) otherlv_3= 'while' otherlv_4= '(' ( (lv_predicate_5_0= ruleXExpression ) ) otherlv_6= ')'
+            {
+            // InternalChartDSL.g:6221:3: ()
+            // InternalChartDSL.g:6222:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXDoWhileExpressionAccess().getXDoWhileExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,118,FOLLOW_50); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXDoWhileExpressionAccess().getDoKeyword_1());
+              		
+            }
+            // InternalChartDSL.g:6232:3: ( (lv_body_2_0= ruleXExpression ) )
+            // InternalChartDSL.g:6233:4: (lv_body_2_0= ruleXExpression )
+            {
+            // InternalChartDSL.g:6233:4: (lv_body_2_0= ruleXExpression )
+            // InternalChartDSL.g:6234:5: lv_body_2_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getBodyXExpressionParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_101);
+            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,117,FOLLOW_88); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_3, grammarAccess.getXDoWhileExpressionAccess().getWhileKeyword_3());
+              		
+            }
+            otherlv_4=(Token)match(input,71,FOLLOW_50); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getXDoWhileExpressionAccess().getLeftParenthesisKeyword_4());
+              		
+            }
+            // InternalChartDSL.g:6259:3: ( (lv_predicate_5_0= ruleXExpression ) )
+            // InternalChartDSL.g:6260:4: (lv_predicate_5_0= ruleXExpression )
+            {
+            // InternalChartDSL.g:6260:4: (lv_predicate_5_0= ruleXExpression )
+            // InternalChartDSL.g:6261:5: lv_predicate_5_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXDoWhileExpressionAccess().getPredicateXExpressionParserRuleCall_5_0());
+              				
+            }
+            pushFollow(FOLLOW_48);
+            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,73,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"
+    // InternalChartDSL.g:6286:1: entryRuleXBlockExpression returns [EObject current=null] : iv_ruleXBlockExpression= ruleXBlockExpression EOF ;
+    public final EObject entryRuleXBlockExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXBlockExpression = null;
+
+
+        try {
+            // InternalChartDSL.g:6286:57: (iv_ruleXBlockExpression= ruleXBlockExpression EOF )
+            // InternalChartDSL.g:6287: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"
+    // InternalChartDSL.g:6293: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 {
+            // InternalChartDSL.g:6299:2: ( ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' ) )
+            // InternalChartDSL.g:6300:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
+            {
+            // InternalChartDSL.g:6300:2: ( () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}' )
+            // InternalChartDSL.g:6301:3: () otherlv_1= '{' ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )* otherlv_4= '}'
+            {
+            // InternalChartDSL.g:6301:3: ()
+            // InternalChartDSL.g:6302:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXBlockExpressionAccess().getXBlockExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,14,FOLLOW_102); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXBlockExpressionAccess().getLeftCurlyBracketKeyword_1());
+              		
+            }
+            // InternalChartDSL.g:6312:3: ( ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )? )*
+            loop105:
+            do {
+                int alt105=2;
+                int LA105_0 = input.LA(1);
+
+                if ( ((LA105_0>=RULE_INT && LA105_0<=RULE_DECIMAL)||LA105_0==14||(LA105_0>=63 && LA105_0<=66)||LA105_0==71||(LA105_0>=75 && LA105_0<=76)||LA105_0==83||LA105_0==99||LA105_0==103||LA105_0==110||LA105_0==112||(LA105_0>=116 && LA105_0<=130)||LA105_0==132) ) {
+                    alt105=1;
+                }
+
+
+                switch (alt105) {
+            	case 1 :
+            	    // InternalChartDSL.g:6313:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) ) (otherlv_3= ';' )?
+            	    {
+            	    // InternalChartDSL.g:6313:4: ( (lv_expressions_2_0= ruleXExpressionOrVarDeclaration ) )
+            	    // InternalChartDSL.g:6314:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
+            	    {
+            	    // InternalChartDSL.g:6314:5: (lv_expressions_2_0= ruleXExpressionOrVarDeclaration )
+            	    // InternalChartDSL.g:6315:6: lv_expressions_2_0= ruleXExpressionOrVarDeclaration
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      						newCompositeNode(grammarAccess.getXBlockExpressionAccess().getExpressionsXExpressionOrVarDeclarationParserRuleCall_2_0_0());
+            	      					
+            	    }
+            	    pushFollow(FOLLOW_103);
+            	    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();
+            	      					
+            	    }
+
+            	    }
+
+
+            	    }
+
+            	    // InternalChartDSL.g:6332:4: (otherlv_3= ';' )?
+            	    int alt104=2;
+            	    int LA104_0 = input.LA(1);
+
+            	    if ( (LA104_0==69) ) {
+            	        alt104=1;
+            	    }
+            	    switch (alt104) {
+            	        case 1 :
+            	            // InternalChartDSL.g:6333:5: otherlv_3= ';'
+            	            {
+            	            otherlv_3=(Token)match(input,69,FOLLOW_102); if (state.failed) return current;
+            	            if ( state.backtracking==0 ) {
+
+            	              					newLeafNode(otherlv_3, grammarAccess.getXBlockExpressionAccess().getSemicolonKeyword_2_1());
+            	              				
+            	            }
+
+            	            }
+            	            break;
+
+            	    }
+
+
+            	    }
+            	    break;
+
+            	default :
+            	    break loop105;
+                }
+            } 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"
+    // InternalChartDSL.g:6347:1: entryRuleXExpressionOrVarDeclaration returns [EObject current=null] : iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF ;
+    public final EObject entryRuleXExpressionOrVarDeclaration() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXExpressionOrVarDeclaration = null;
+
+
+        try {
+            // InternalChartDSL.g:6347:68: (iv_ruleXExpressionOrVarDeclaration= ruleXExpressionOrVarDeclaration EOF )
+            // InternalChartDSL.g:6348: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"
+    // InternalChartDSL.g:6354: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 {
+            // InternalChartDSL.g:6360:2: ( (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression ) )
+            // InternalChartDSL.g:6361:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
+            {
+            // InternalChartDSL.g:6361:2: (this_XVariableDeclaration_0= ruleXVariableDeclaration | this_XExpression_1= ruleXExpression )
+            int alt106=2;
+            int LA106_0 = input.LA(1);
+
+            if ( ((LA106_0>=119 && LA106_0<=120)) ) {
+                alt106=1;
+            }
+            else if ( ((LA106_0>=RULE_INT && LA106_0<=RULE_DECIMAL)||LA106_0==14||(LA106_0>=63 && LA106_0<=66)||LA106_0==71||(LA106_0>=75 && LA106_0<=76)||LA106_0==83||LA106_0==99||LA106_0==103||LA106_0==110||LA106_0==112||(LA106_0>=116 && LA106_0<=118)||(LA106_0>=121 && LA106_0<=130)||LA106_0==132) ) {
+                alt106=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 106, 0, input);
+
+                throw nvae;
+            }
+            switch (alt106) {
+                case 1 :
+                    // InternalChartDSL.g:6362: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 :
+                    // InternalChartDSL.g:6371: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"
+    // InternalChartDSL.g:6383:1: entryRuleXVariableDeclaration returns [EObject current=null] : iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF ;
+    public final EObject entryRuleXVariableDeclaration() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXVariableDeclaration = null;
+
+
+        try {
+            // InternalChartDSL.g:6383:61: (iv_ruleXVariableDeclaration= ruleXVariableDeclaration EOF )
+            // InternalChartDSL.g:6384: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"
+    // InternalChartDSL.g:6390: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 {
+            // InternalChartDSL.g:6396: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 ) ) )? ) )
+            // InternalChartDSL.g:6397: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 ) ) )? )
+            {
+            // InternalChartDSL.g:6397: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 ) ) )? )
+            // InternalChartDSL.g:6398: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 ) ) )?
+            {
+            // InternalChartDSL.g:6398:3: ()
+            // InternalChartDSL.g:6399:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXVariableDeclarationAccess().getXVariableDeclarationAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalChartDSL.g:6405:3: ( ( (lv_writeable_1_0= 'var' ) ) | otherlv_2= 'val' )
+            int alt107=2;
+            int LA107_0 = input.LA(1);
+
+            if ( (LA107_0==119) ) {
+                alt107=1;
+            }
+            else if ( (LA107_0==120) ) {
+                alt107=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 107, 0, input);
+
+                throw nvae;
+            }
+            switch (alt107) {
+                case 1 :
+                    // InternalChartDSL.g:6406:4: ( (lv_writeable_1_0= 'var' ) )
+                    {
+                    // InternalChartDSL.g:6406:4: ( (lv_writeable_1_0= 'var' ) )
+                    // InternalChartDSL.g:6407:5: (lv_writeable_1_0= 'var' )
+                    {
+                    // InternalChartDSL.g:6407:5: (lv_writeable_1_0= 'var' )
+                    // InternalChartDSL.g:6408:6: lv_writeable_1_0= 'var'
+                    {
+                    lv_writeable_1_0=(Token)match(input,119,FOLLOW_63); 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 :
+                    // InternalChartDSL.g:6421:4: otherlv_2= 'val'
+                    {
+                    otherlv_2=(Token)match(input,120,FOLLOW_63); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_2, grammarAccess.getXVariableDeclarationAccess().getValKeyword_1_1());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalChartDSL.g:6426:3: ( ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) ) | ( (lv_name_5_0= ruleValidID ) ) )
+            int alt108=2;
+            int LA108_0 = input.LA(1);
+
+            if ( (LA108_0==RULE_ID) ) {
+                int LA108_1 = input.LA(2);
+
+                if ( (synpred35_InternalChartDSL()) ) {
+                    alt108=1;
+                }
+                else if ( (true) ) {
+                    alt108=2;
+                }
+                else {
+                    if (state.backtracking>0) {state.failed=true; return current;}
+                    NoViableAltException nvae =
+                        new NoViableAltException("", 108, 1, input);
+
+                    throw nvae;
+                }
+            }
+            else if ( (LA108_0==71) && (synpred35_InternalChartDSL())) {
+                alt108=1;
+            }
+            else if ( (LA108_0==96) && (synpred35_InternalChartDSL())) {
+                alt108=1;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 108, 0, input);
+
+                throw nvae;
+            }
+            switch (alt108) {
+                case 1 :
+                    // InternalChartDSL.g:6427:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
+                    {
+                    // InternalChartDSL.g:6427:4: ( ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) ) )
+                    // InternalChartDSL.g:6428:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )=> ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
+                    {
+                    // InternalChartDSL.g:6441:5: ( ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) ) )
+                    // InternalChartDSL.g:6442:6: ( (lv_type_3_0= ruleJvmTypeReference ) ) ( (lv_name_4_0= ruleValidID ) )
+                    {
+                    // InternalChartDSL.g:6442:6: ( (lv_type_3_0= ruleJvmTypeReference ) )
+                    // InternalChartDSL.g:6443:7: (lv_type_3_0= ruleJvmTypeReference )
+                    {
+                    // InternalChartDSL.g:6443:7: (lv_type_3_0= ruleJvmTypeReference )
+                    // InternalChartDSL.g:6444: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();
+                      							
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalChartDSL.g:6461:6: ( (lv_name_4_0= ruleValidID ) )
+                    // InternalChartDSL.g:6462:7: (lv_name_4_0= ruleValidID )
+                    {
+                    // InternalChartDSL.g:6462:7: (lv_name_4_0= ruleValidID )
+                    // InternalChartDSL.g:6463:8: lv_name_4_0= ruleValidID
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      								newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_0_0_1_0());
+                      							
+                    }
+                    pushFollow(FOLLOW_104);
+                    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 :
+                    // InternalChartDSL.g:6483:4: ( (lv_name_5_0= ruleValidID ) )
+                    {
+                    // InternalChartDSL.g:6483:4: ( (lv_name_5_0= ruleValidID ) )
+                    // InternalChartDSL.g:6484:5: (lv_name_5_0= ruleValidID )
+                    {
+                    // InternalChartDSL.g:6484:5: (lv_name_5_0= ruleValidID )
+                    // InternalChartDSL.g:6485:6: lv_name_5_0= ruleValidID
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXVariableDeclarationAccess().getNameValidIDParserRuleCall_2_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_104);
+                    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;
+
+            }
+
+            // InternalChartDSL.g:6503:3: (otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) ) )?
+            int alt109=2;
+            int LA109_0 = input.LA(1);
+
+            if ( (LA109_0==74) ) {
+                alt109=1;
+            }
+            switch (alt109) {
+                case 1 :
+                    // InternalChartDSL.g:6504:4: otherlv_6= '=' ( (lv_right_7_0= ruleXExpression ) )
+                    {
+                    otherlv_6=(Token)match(input,74,FOLLOW_50); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_6, grammarAccess.getXVariableDeclarationAccess().getEqualsSignKeyword_3_0());
+                      			
+                    }
+                    // InternalChartDSL.g:6508:4: ( (lv_right_7_0= ruleXExpression ) )
+                    // InternalChartDSL.g:6509:5: (lv_right_7_0= ruleXExpression )
+                    {
+                    // InternalChartDSL.g:6509:5: (lv_right_7_0= ruleXExpression )
+                    // InternalChartDSL.g:6510: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"
+    // InternalChartDSL.g:6532:1: entryRuleJvmFormalParameter returns [EObject current=null] : iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF ;
+    public final EObject entryRuleJvmFormalParameter() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmFormalParameter = null;
+
+
+        try {
+            // InternalChartDSL.g:6532:59: (iv_ruleJvmFormalParameter= ruleJvmFormalParameter EOF )
+            // InternalChartDSL.g:6533: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"
+    // InternalChartDSL.g:6539: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 {
+            // InternalChartDSL.g:6545:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) ) )
+            // InternalChartDSL.g:6546:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
+            {
+            // InternalChartDSL.g:6546:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalChartDSL.g:6547:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )? ( (lv_name_1_0= ruleValidID ) )
+            {
+            // InternalChartDSL.g:6547:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )?
+            int alt110=2;
+            int LA110_0 = input.LA(1);
+
+            if ( (LA110_0==RULE_ID) ) {
+                int LA110_1 = input.LA(2);
+
+                if ( (LA110_1==RULE_ID||LA110_1==76||LA110_1==83||LA110_1==106) ) {
+                    alt110=1;
+                }
+            }
+            else if ( (LA110_0==71||LA110_0==96) ) {
+                alt110=1;
+            }
+            switch (alt110) {
+                case 1 :
+                    // InternalChartDSL.g:6548:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+                    {
+                    // InternalChartDSL.g:6548:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+                    // InternalChartDSL.g:6549: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;
+
+            }
+
+            // InternalChartDSL.g:6566:3: ( (lv_name_1_0= ruleValidID ) )
+            // InternalChartDSL.g:6567:4: (lv_name_1_0= ruleValidID )
+            {
+            // InternalChartDSL.g:6567:4: (lv_name_1_0= ruleValidID )
+            // InternalChartDSL.g:6568: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"
+    // InternalChartDSL.g:6589:1: entryRuleFullJvmFormalParameter returns [EObject current=null] : iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF ;
+    public final EObject entryRuleFullJvmFormalParameter() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleFullJvmFormalParameter = null;
+
+
+        try {
+            // InternalChartDSL.g:6589:63: (iv_ruleFullJvmFormalParameter= ruleFullJvmFormalParameter EOF )
+            // InternalChartDSL.g:6590: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"
+    // InternalChartDSL.g:6596: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 {
+            // InternalChartDSL.g:6602:2: ( ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) ) )
+            // InternalChartDSL.g:6603:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
+            {
+            // InternalChartDSL.g:6603:2: ( ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) ) )
+            // InternalChartDSL.g:6604:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) ) ( (lv_name_1_0= ruleValidID ) )
+            {
+            // InternalChartDSL.g:6604:3: ( (lv_parameterType_0_0= ruleJvmTypeReference ) )
+            // InternalChartDSL.g:6605:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+            {
+            // InternalChartDSL.g:6605:4: (lv_parameterType_0_0= ruleJvmTypeReference )
+            // InternalChartDSL.g:6606: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();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalChartDSL.g:6623:3: ( (lv_name_1_0= ruleValidID ) )
+            // InternalChartDSL.g:6624:4: (lv_name_1_0= ruleValidID )
+            {
+            // InternalChartDSL.g:6624:4: (lv_name_1_0= ruleValidID )
+            // InternalChartDSL.g:6625: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"
+    // InternalChartDSL.g:6646:1: entryRuleXFeatureCall returns [EObject current=null] : iv_ruleXFeatureCall= ruleXFeatureCall EOF ;
+    public final EObject entryRuleXFeatureCall() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXFeatureCall = null;
+
+
+        try {
+            // InternalChartDSL.g:6646:53: (iv_ruleXFeatureCall= ruleXFeatureCall EOF )
+            // InternalChartDSL.g:6647: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"
+    // InternalChartDSL.g:6653: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 {
+            // InternalChartDSL.g:6659: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 ) )? ) )
+            // InternalChartDSL.g:6660: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 ) )? )
+            {
+            // InternalChartDSL.g:6660: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 ) )? )
+            // InternalChartDSL.g:6661: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 ) )?
+            {
+            // InternalChartDSL.g:6661:3: ()
+            // InternalChartDSL.g:6662:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXFeatureCallAccess().getXFeatureCallAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalChartDSL.g:6668:3: (otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>' )?
+            int alt112=2;
+            int LA112_0 = input.LA(1);
+
+            if ( (LA112_0==83) ) {
+                alt112=1;
+            }
+            switch (alt112) {
+                case 1 :
+                    // InternalChartDSL.g:6669:4: otherlv_1= '<' ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) ) (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )* otherlv_5= '>'
+                    {
+                    otherlv_1=(Token)match(input,83,FOLLOW_75); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_1, grammarAccess.getXFeatureCallAccess().getLessThanSignKeyword_1_0());
+                      			
+                    }
+                    // InternalChartDSL.g:6673:4: ( (lv_typeArguments_2_0= ruleJvmArgumentTypeReference ) )
+                    // InternalChartDSL.g:6674:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
+                    {
+                    // InternalChartDSL.g:6674:5: (lv_typeArguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalChartDSL.g:6675:6: lv_typeArguments_2_0= ruleJvmArgumentTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_76);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalChartDSL.g:6692:4: (otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) )*
+                    loop111:
+                    do {
+                        int alt111=2;
+                        int LA111_0 = input.LA(1);
+
+                        if ( (LA111_0==72) ) {
+                            alt111=1;
+                        }
+
+
+                        switch (alt111) {
+                    	case 1 :
+                    	    // InternalChartDSL.g:6693:5: otherlv_3= ',' ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    {
+                    	    otherlv_3=(Token)match(input,72,FOLLOW_75); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_3, grammarAccess.getXFeatureCallAccess().getCommaKeyword_1_2_0());
+                    	      				
+                    	    }
+                    	    // InternalChartDSL.g:6697:5: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalChartDSL.g:6698:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    	    {
+                    	    // InternalChartDSL.g:6698:6: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalChartDSL.g:6699:7: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXFeatureCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_76);
+                    	    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 loop111;
+                        }
+                    } while (true);
+
+                    otherlv_5=(Token)match(input,84,FOLLOW_74); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_5, grammarAccess.getXFeatureCallAccess().getGreaterThanSignKeyword_1_3());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalChartDSL.g:6722:3: ( ( ruleIdOrSuper ) )
+            // InternalChartDSL.g:6723:4: ( ruleIdOrSuper )
+            {
+            // InternalChartDSL.g:6723:4: ( ruleIdOrSuper )
+            // InternalChartDSL.g:6724: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_105);
+            ruleIdOrSuper();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalChartDSL.g:6738: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 alt115=2;
+            alt115 = dfa115.predict(input);
+            switch (alt115) {
+                case 1 :
+                    // InternalChartDSL.g:6739: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= ')'
+                    {
+                    // InternalChartDSL.g:6739:4: ( ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' ) )
+                    // InternalChartDSL.g:6740:5: ( ( '(' ) )=> (lv_explicitOperationCall_7_0= '(' )
+                    {
+                    // InternalChartDSL.g:6744:5: (lv_explicitOperationCall_7_0= '(' )
+                    // InternalChartDSL.g:6745:6: lv_explicitOperationCall_7_0= '('
+                    {
+                    lv_explicitOperationCall_7_0=(Token)match(input,71,FOLLOW_78); 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, "(");
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalChartDSL.g:6757:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) ) | ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* ) )?
+                    int alt114=3;
+                    alt114 = dfa114.predict(input);
+                    switch (alt114) {
+                        case 1 :
+                            // InternalChartDSL.g:6758:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
+                            {
+                            // InternalChartDSL.g:6758:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure ) )
+                            // InternalChartDSL.g:6759:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_featureCallArguments_8_0= ruleXShortClosure )
+                            {
+                            // InternalChartDSL.g:6784:6: (lv_featureCallArguments_8_0= ruleXShortClosure )
+                            // InternalChartDSL.g:6785:7: lv_featureCallArguments_8_0= ruleXShortClosure
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              							newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXShortClosureParserRuleCall_3_1_0_0());
+                              						
+                            }
+                            pushFollow(FOLLOW_48);
+                            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 :
+                            // InternalChartDSL.g:6803:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
+                            {
+                            // InternalChartDSL.g:6803:5: ( ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )* )
+                            // InternalChartDSL.g:6804:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) ) (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
+                            {
+                            // InternalChartDSL.g:6804:6: ( (lv_featureCallArguments_9_0= ruleXExpression ) )
+                            // InternalChartDSL.g:6805:7: (lv_featureCallArguments_9_0= ruleXExpression )
+                            {
+                            // InternalChartDSL.g:6805:7: (lv_featureCallArguments_9_0= ruleXExpression )
+                            // InternalChartDSL.g:6806:8: lv_featureCallArguments_9_0= ruleXExpression
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_0_0());
+                              							
+                            }
+                            pushFollow(FOLLOW_47);
+                            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();
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+                            // InternalChartDSL.g:6823:6: (otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) ) )*
+                            loop113:
+                            do {
+                                int alt113=2;
+                                int LA113_0 = input.LA(1);
+
+                                if ( (LA113_0==72) ) {
+                                    alt113=1;
+                                }
+
+
+                                switch (alt113) {
+                            	case 1 :
+                            	    // InternalChartDSL.g:6824:7: otherlv_10= ',' ( (lv_featureCallArguments_11_0= ruleXExpression ) )
+                            	    {
+                            	    otherlv_10=(Token)match(input,72,FOLLOW_50); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      							newLeafNode(otherlv_10, grammarAccess.getXFeatureCallAccess().getCommaKeyword_3_1_1_1_0());
+                            	      						
+                            	    }
+                            	    // InternalChartDSL.g:6828:7: ( (lv_featureCallArguments_11_0= ruleXExpression ) )
+                            	    // InternalChartDSL.g:6829:8: (lv_featureCallArguments_11_0= ruleXExpression )
+                            	    {
+                            	    // InternalChartDSL.g:6829:8: (lv_featureCallArguments_11_0= ruleXExpression )
+                            	    // InternalChartDSL.g:6830:9: lv_featureCallArguments_11_0= ruleXExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+
+                            	      									newCompositeNode(grammarAccess.getXFeatureCallAccess().getFeatureCallArgumentsXExpressionParserRuleCall_3_1_1_1_1_0());
+                            	      								
+                            	    }
+                            	    pushFollow(FOLLOW_47);
+                            	    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 loop113;
+                                }
+                            } while (true);
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_12=(Token)match(input,73,FOLLOW_106); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_12, grammarAccess.getXFeatureCallAccess().getRightParenthesisKeyword_3_2());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalChartDSL.g:6855:3: ( ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure ) )?
+            int alt116=2;
+            alt116 = dfa116.predict(input);
+            switch (alt116) {
+                case 1 :
+                    // InternalChartDSL.g:6856:4: ( ( () '[' ) )=> (lv_featureCallArguments_13_0= ruleXClosure )
+                    {
+                    // InternalChartDSL.g:6862:4: (lv_featureCallArguments_13_0= ruleXClosure )
+                    // InternalChartDSL.g:6863: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"
+    // InternalChartDSL.g:6884:1: entryRuleFeatureCallID returns [String current=null] : iv_ruleFeatureCallID= ruleFeatureCallID EOF ;
+    public final String entryRuleFeatureCallID() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleFeatureCallID = null;
+
+
+        try {
+            // InternalChartDSL.g:6884:53: (iv_ruleFeatureCallID= ruleFeatureCallID EOF )
+            // InternalChartDSL.g:6885: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"
+    // InternalChartDSL.g:6891: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 {
+            // InternalChartDSL.g:6897:2: ( (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' ) )
+            // InternalChartDSL.g:6898:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
+            {
+            // InternalChartDSL.g:6898:2: (this_ValidID_0= ruleValidID | kw= 'extends' | kw= 'static' | kw= 'import' | kw= 'extension' )
+            int alt117=5;
+            switch ( input.LA(1) ) {
+            case RULE_ID:
+                {
+                alt117=1;
+                }
+                break;
+            case 121:
+                {
+                alt117=2;
+                }
+                break;
+            case 65:
+                {
+                alt117=3;
+                }
+                break;
+            case 64:
+                {
+                alt117=4;
+                }
+                break;
+            case 66:
+                {
+                alt117=5;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 117, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt117) {
+                case 1 :
+                    // InternalChartDSL.g:6899: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 :
+                    // InternalChartDSL.g:6910:3: kw= 'extends'
+                    {
+                    kw=(Token)match(input,121,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getExtendsKeyword_1());
+                      		
+                    }
+
+                    }
+                    break;
+                case 3 :
+                    // InternalChartDSL.g:6916:3: kw= 'static'
+                    {
+                    kw=(Token)match(input,65,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getStaticKeyword_2());
+                      		
+                    }
+
+                    }
+                    break;
+                case 4 :
+                    // InternalChartDSL.g:6922:3: kw= 'import'
+                    {
+                    kw=(Token)match(input,64,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      			current.merge(kw);
+                      			newLeafNode(kw, grammarAccess.getFeatureCallIDAccess().getImportKeyword_3());
+                      		
+                    }
+
+                    }
+                    break;
+                case 5 :
+                    // InternalChartDSL.g:6928:3: kw= 'extension'
+                    {
+                    kw=(Token)match(input,66,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"
+    // InternalChartDSL.g:6937:1: entryRuleIdOrSuper returns [String current=null] : iv_ruleIdOrSuper= ruleIdOrSuper EOF ;
+    public final String entryRuleIdOrSuper() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleIdOrSuper = null;
+
+
+        try {
+            // InternalChartDSL.g:6937:49: (iv_ruleIdOrSuper= ruleIdOrSuper EOF )
+            // InternalChartDSL.g:6938: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"
+    // InternalChartDSL.g:6944: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 {
+            // InternalChartDSL.g:6950:2: ( (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' ) )
+            // InternalChartDSL.g:6951:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
+            {
+            // InternalChartDSL.g:6951:2: (this_FeatureCallID_0= ruleFeatureCallID | kw= 'super' )
+            int alt118=2;
+            int LA118_0 = input.LA(1);
+
+            if ( (LA118_0==RULE_ID||(LA118_0>=64 && LA118_0<=66)||LA118_0==121) ) {
+                alt118=1;
+            }
+            else if ( (LA118_0==122) ) {
+                alt118=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 118, 0, input);
+
+                throw nvae;
+            }
+            switch (alt118) {
+                case 1 :
+                    // InternalChartDSL.g:6952: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 :
+                    // InternalChartDSL.g:6963:3: kw= 'super'
+                    {
+                    kw=(Token)match(input,122,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"
+    // InternalChartDSL.g:6972:1: entryRuleXConstructorCall returns [EObject current=null] : iv_ruleXConstructorCall= ruleXConstructorCall EOF ;
+    public final EObject entryRuleXConstructorCall() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXConstructorCall = null;
+
+
+        try {
+            // InternalChartDSL.g:6972:57: (iv_ruleXConstructorCall= ruleXConstructorCall EOF )
+            // InternalChartDSL.g:6973: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"
+    // InternalChartDSL.g:6979: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 {
+            // InternalChartDSL.g:6985: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 ) )? ) )
+            // InternalChartDSL.g:6986: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 ) )? )
+            {
+            // InternalChartDSL.g:6986: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 ) )? )
+            // InternalChartDSL.g:6987: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 ) )?
+            {
+            // InternalChartDSL.g:6987:3: ()
+            // InternalChartDSL.g:6988:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXConstructorCallAccess().getXConstructorCallAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,123,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXConstructorCallAccess().getNewKeyword_1());
+              		
+            }
+            // InternalChartDSL.g:6998:3: ( ( ruleQualifiedName ) )
+            // InternalChartDSL.g:6999:4: ( ruleQualifiedName )
+            {
+            // InternalChartDSL.g:6999:4: ( ruleQualifiedName )
+            // InternalChartDSL.g:7000: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_107);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalChartDSL.g:7014:3: ( ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>' )?
+            int alt120=2;
+            alt120 = dfa120.predict(input);
+            switch (alt120) {
+                case 1 :
+                    // InternalChartDSL.g:7015:4: ( ( '<' )=>otherlv_3= '<' ) ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) ) (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )* otherlv_7= '>'
+                    {
+                    // InternalChartDSL.g:7015:4: ( ( '<' )=>otherlv_3= '<' )
+                    // InternalChartDSL.g:7016:5: ( '<' )=>otherlv_3= '<'
+                    {
+                    otherlv_3=(Token)match(input,83,FOLLOW_75); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_3, grammarAccess.getXConstructorCallAccess().getLessThanSignKeyword_3_0());
+                      				
+                    }
+
+                    }
+
+                    // InternalChartDSL.g:7022:4: ( (lv_typeArguments_4_0= ruleJvmArgumentTypeReference ) )
+                    // InternalChartDSL.g:7023:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    {
+                    // InternalChartDSL.g:7023:5: (lv_typeArguments_4_0= ruleJvmArgumentTypeReference )
+                    // InternalChartDSL.g:7024:6: lv_typeArguments_4_0= ruleJvmArgumentTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_76);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalChartDSL.g:7041:4: (otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) ) )*
+                    loop119:
+                    do {
+                        int alt119=2;
+                        int LA119_0 = input.LA(1);
+
+                        if ( (LA119_0==72) ) {
+                            alt119=1;
+                        }
+
+
+                        switch (alt119) {
+                    	case 1 :
+                    	    // InternalChartDSL.g:7042:5: otherlv_5= ',' ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
+                    	    {
+                    	    otherlv_5=(Token)match(input,72,FOLLOW_75); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_5, grammarAccess.getXConstructorCallAccess().getCommaKeyword_3_2_0());
+                    	      				
+                    	    }
+                    	    // InternalChartDSL.g:7046:5: ( (lv_typeArguments_6_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalChartDSL.g:7047:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
+                    	    {
+                    	    // InternalChartDSL.g:7047:6: (lv_typeArguments_6_0= ruleJvmArgumentTypeReference )
+                    	    // InternalChartDSL.g:7048:7: lv_typeArguments_6_0= ruleJvmArgumentTypeReference
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXConstructorCallAccess().getTypeArgumentsJvmArgumentTypeReferenceParserRuleCall_3_2_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_76);
+                    	    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 loop119;
+                        }
+                    } while (true);
+
+                    otherlv_7=(Token)match(input,84,FOLLOW_105); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_7, grammarAccess.getXConstructorCallAccess().getGreaterThanSignKeyword_3_3());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalChartDSL.g:7071: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 alt123=2;
+            alt123 = dfa123.predict(input);
+            switch (alt123) {
+                case 1 :
+                    // InternalChartDSL.g:7072: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= ')'
+                    {
+                    // InternalChartDSL.g:7072:4: ( ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' ) )
+                    // InternalChartDSL.g:7073:5: ( ( '(' ) )=> (lv_explicitConstructorCall_8_0= '(' )
+                    {
+                    // InternalChartDSL.g:7077:5: (lv_explicitConstructorCall_8_0= '(' )
+                    // InternalChartDSL.g:7078:6: lv_explicitConstructorCall_8_0= '('
+                    {
+                    lv_explicitConstructorCall_8_0=(Token)match(input,71,FOLLOW_78); 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, "(");
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalChartDSL.g:7090:4: ( ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) ) | ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* ) )?
+                    int alt122=3;
+                    alt122 = dfa122.predict(input);
+                    switch (alt122) {
+                        case 1 :
+                            // InternalChartDSL.g:7091:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
+                            {
+                            // InternalChartDSL.g:7091:5: ( ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure ) )
+                            // InternalChartDSL.g:7092:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )=> (lv_arguments_9_0= ruleXShortClosure )
+                            {
+                            // InternalChartDSL.g:7117:6: (lv_arguments_9_0= ruleXShortClosure )
+                            // InternalChartDSL.g:7118:7: lv_arguments_9_0= ruleXShortClosure
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              							newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXShortClosureParserRuleCall_4_1_0_0());
+                              						
+                            }
+                            pushFollow(FOLLOW_48);
+                            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 :
+                            // InternalChartDSL.g:7136:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
+                            {
+                            // InternalChartDSL.g:7136:5: ( ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )* )
+                            // InternalChartDSL.g:7137:6: ( (lv_arguments_10_0= ruleXExpression ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
+                            {
+                            // InternalChartDSL.g:7137:6: ( (lv_arguments_10_0= ruleXExpression ) )
+                            // InternalChartDSL.g:7138:7: (lv_arguments_10_0= ruleXExpression )
+                            {
+                            // InternalChartDSL.g:7138:7: (lv_arguments_10_0= ruleXExpression )
+                            // InternalChartDSL.g:7139:8: lv_arguments_10_0= ruleXExpression
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              								newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_0_0());
+                              							
+                            }
+                            pushFollow(FOLLOW_47);
+                            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();
+                              							
+                            }
+
+                            }
+
+
+                            }
+
+                            // InternalChartDSL.g:7156:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) ) )*
+                            loop121:
+                            do {
+                                int alt121=2;
+                                int LA121_0 = input.LA(1);
+
+                                if ( (LA121_0==72) ) {
+                                    alt121=1;
+                                }
+
+
+                                switch (alt121) {
+                            	case 1 :
+                            	    // InternalChartDSL.g:7157:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleXExpression ) )
+                            	    {
+                            	    otherlv_11=(Token)match(input,72,FOLLOW_50); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      							newLeafNode(otherlv_11, grammarAccess.getXConstructorCallAccess().getCommaKeyword_4_1_1_1_0());
+                            	      						
+                            	    }
+                            	    // InternalChartDSL.g:7161:7: ( (lv_arguments_12_0= ruleXExpression ) )
+                            	    // InternalChartDSL.g:7162:8: (lv_arguments_12_0= ruleXExpression )
+                            	    {
+                            	    // InternalChartDSL.g:7162:8: (lv_arguments_12_0= ruleXExpression )
+                            	    // InternalChartDSL.g:7163:9: lv_arguments_12_0= ruleXExpression
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+
+                            	      									newCompositeNode(grammarAccess.getXConstructorCallAccess().getArgumentsXExpressionParserRuleCall_4_1_1_1_1_0());
+                            	      								
+                            	    }
+                            	    pushFollow(FOLLOW_47);
+                            	    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 loop121;
+                                }
+                            } while (true);
+
+
+                            }
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_13=(Token)match(input,73,FOLLOW_106); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_13, grammarAccess.getXConstructorCallAccess().getRightParenthesisKeyword_4_2());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            // InternalChartDSL.g:7188:3: ( ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure ) )?
+            int alt124=2;
+            alt124 = dfa124.predict(input);
+            switch (alt124) {
+                case 1 :
+                    // InternalChartDSL.g:7189:4: ( ( () '[' ) )=> (lv_arguments_14_0= ruleXClosure )
+                    {
+                    // InternalChartDSL.g:7195:4: (lv_arguments_14_0= ruleXClosure )
+                    // InternalChartDSL.g:7196: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"
+    // InternalChartDSL.g:7217:1: entryRuleXBooleanLiteral returns [EObject current=null] : iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF ;
+    public final EObject entryRuleXBooleanLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXBooleanLiteral = null;
+
+
+        try {
+            // InternalChartDSL.g:7217:56: (iv_ruleXBooleanLiteral= ruleXBooleanLiteral EOF )
+            // InternalChartDSL.g:7218: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"
+    // InternalChartDSL.g:7224: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 {
+            // InternalChartDSL.g:7230:2: ( ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) ) )
+            // InternalChartDSL.g:7231:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
+            {
+            // InternalChartDSL.g:7231:2: ( () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) ) )
+            // InternalChartDSL.g:7232:3: () (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
+            {
+            // InternalChartDSL.g:7232:3: ()
+            // InternalChartDSL.g:7233:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXBooleanLiteralAccess().getXBooleanLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalChartDSL.g:7239:3: (otherlv_1= 'false' | ( (lv_isTrue_2_0= 'true' ) ) )
+            int alt125=2;
+            int LA125_0 = input.LA(1);
+
+            if ( (LA125_0==124) ) {
+                alt125=1;
+            }
+            else if ( (LA125_0==125) ) {
+                alt125=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 125, 0, input);
+
+                throw nvae;
+            }
+            switch (alt125) {
+                case 1 :
+                    // InternalChartDSL.g:7240:4: otherlv_1= 'false'
+                    {
+                    otherlv_1=(Token)match(input,124,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_1, grammarAccess.getXBooleanLiteralAccess().getFalseKeyword_1_0());
+                      			
+                    }
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:7245:4: ( (lv_isTrue_2_0= 'true' ) )
+                    {
+                    // InternalChartDSL.g:7245:4: ( (lv_isTrue_2_0= 'true' ) )
+                    // InternalChartDSL.g:7246:5: (lv_isTrue_2_0= 'true' )
+                    {
+                    // InternalChartDSL.g:7246:5: (lv_isTrue_2_0= 'true' )
+                    // InternalChartDSL.g:7247:6: lv_isTrue_2_0= 'true'
+                    {
+                    lv_isTrue_2_0=(Token)match(input,125,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"
+    // InternalChartDSL.g:7264:1: entryRuleXNullLiteral returns [EObject current=null] : iv_ruleXNullLiteral= ruleXNullLiteral EOF ;
+    public final EObject entryRuleXNullLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXNullLiteral = null;
+
+
+        try {
+            // InternalChartDSL.g:7264:53: (iv_ruleXNullLiteral= ruleXNullLiteral EOF )
+            // InternalChartDSL.g:7265: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"
+    // InternalChartDSL.g:7271:1: ruleXNullLiteral returns [EObject current=null] : ( () otherlv_1= 'null' ) ;
+    public final EObject ruleXNullLiteral() throws RecognitionException {
+        EObject current = null;
+
+        Token otherlv_1=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalChartDSL.g:7277:2: ( ( () otherlv_1= 'null' ) )
+            // InternalChartDSL.g:7278:2: ( () otherlv_1= 'null' )
+            {
+            // InternalChartDSL.g:7278:2: ( () otherlv_1= 'null' )
+            // InternalChartDSL.g:7279:3: () otherlv_1= 'null'
+            {
+            // InternalChartDSL.g:7279:3: ()
+            // InternalChartDSL.g:7280:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXNullLiteralAccess().getXNullLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,126,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"
+    // InternalChartDSL.g:7294:1: entryRuleXNumberLiteral returns [EObject current=null] : iv_ruleXNumberLiteral= ruleXNumberLiteral EOF ;
+    public final EObject entryRuleXNumberLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXNumberLiteral = null;
+
+
+        try {
+            // InternalChartDSL.g:7294:55: (iv_ruleXNumberLiteral= ruleXNumberLiteral EOF )
+            // InternalChartDSL.g:7295: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"
+    // InternalChartDSL.g:7301: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 {
+            // InternalChartDSL.g:7307:2: ( ( () ( (lv_value_1_0= ruleNumber ) ) ) )
+            // InternalChartDSL.g:7308:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
+            {
+            // InternalChartDSL.g:7308:2: ( () ( (lv_value_1_0= ruleNumber ) ) )
+            // InternalChartDSL.g:7309:3: () ( (lv_value_1_0= ruleNumber ) )
+            {
+            // InternalChartDSL.g:7309:3: ()
+            // InternalChartDSL.g:7310:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXNumberLiteralAccess().getXNumberLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalChartDSL.g:7316:3: ( (lv_value_1_0= ruleNumber ) )
+            // InternalChartDSL.g:7317:4: (lv_value_1_0= ruleNumber )
+            {
+            // InternalChartDSL.g:7317:4: (lv_value_1_0= ruleNumber )
+            // InternalChartDSL.g:7318: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"
+    // InternalChartDSL.g:7339:1: entryRuleXStringLiteral returns [EObject current=null] : iv_ruleXStringLiteral= ruleXStringLiteral EOF ;
+    public final EObject entryRuleXStringLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXStringLiteral = null;
+
+
+        try {
+            // InternalChartDSL.g:7339:55: (iv_ruleXStringLiteral= ruleXStringLiteral EOF )
+            // InternalChartDSL.g:7340: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"
+    // InternalChartDSL.g:7346: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 {
+            // InternalChartDSL.g:7352:2: ( ( () ( (lv_value_1_0= RULE_STRING ) ) ) )
+            // InternalChartDSL.g:7353:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
+            {
+            // InternalChartDSL.g:7353:2: ( () ( (lv_value_1_0= RULE_STRING ) ) )
+            // InternalChartDSL.g:7354:3: () ( (lv_value_1_0= RULE_STRING ) )
+            {
+            // InternalChartDSL.g:7354:3: ()
+            // InternalChartDSL.g:7355:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXStringLiteralAccess().getXStringLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            // InternalChartDSL.g:7361:3: ( (lv_value_1_0= RULE_STRING ) )
+            // InternalChartDSL.g:7362:4: (lv_value_1_0= RULE_STRING )
+            {
+            // InternalChartDSL.g:7362:4: (lv_value_1_0= RULE_STRING )
+            // InternalChartDSL.g:7363: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"
+    // InternalChartDSL.g:7383:1: entryRuleXTypeLiteral returns [EObject current=null] : iv_ruleXTypeLiteral= ruleXTypeLiteral EOF ;
+    public final EObject entryRuleXTypeLiteral() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXTypeLiteral = null;
+
+
+        try {
+            // InternalChartDSL.g:7383:53: (iv_ruleXTypeLiteral= ruleXTypeLiteral EOF )
+            // InternalChartDSL.g:7384: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"
+    // InternalChartDSL.g:7390: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 {
+            // InternalChartDSL.g:7396:2: ( ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' ) )
+            // InternalChartDSL.g:7397:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
+            {
+            // InternalChartDSL.g:7397:2: ( () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')' )
+            // InternalChartDSL.g:7398:3: () otherlv_1= 'typeof' otherlv_2= '(' ( ( ruleQualifiedName ) ) ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )* otherlv_5= ')'
+            {
+            // InternalChartDSL.g:7398:3: ()
+            // InternalChartDSL.g:7399:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXTypeLiteralAccess().getXTypeLiteralAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,127,FOLLOW_88); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXTypeLiteralAccess().getTypeofKeyword_1());
+              		
+            }
+            otherlv_2=(Token)match(input,71,FOLLOW_4); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_2, grammarAccess.getXTypeLiteralAccess().getLeftParenthesisKeyword_2());
+              		
+            }
+            // InternalChartDSL.g:7413:3: ( ( ruleQualifiedName ) )
+            // InternalChartDSL.g:7414:4: ( ruleQualifiedName )
+            {
+            // InternalChartDSL.g:7414:4: ( ruleQualifiedName )
+            // InternalChartDSL.g:7415: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_108);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalChartDSL.g:7429:3: ( (lv_arrayDimensions_4_0= ruleArrayBrackets ) )*
+            loop126:
+            do {
+                int alt126=2;
+                int LA126_0 = input.LA(1);
+
+                if ( (LA126_0==76) ) {
+                    alt126=1;
+                }
+
+
+                switch (alt126) {
+            	case 1 :
+            	    // InternalChartDSL.g:7430:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
+            	    {
+            	    // InternalChartDSL.g:7430:4: (lv_arrayDimensions_4_0= ruleArrayBrackets )
+            	    // InternalChartDSL.g:7431:5: lv_arrayDimensions_4_0= ruleArrayBrackets
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      					newCompositeNode(grammarAccess.getXTypeLiteralAccess().getArrayDimensionsArrayBracketsParserRuleCall_4_0());
+            	      				
+            	    }
+            	    pushFollow(FOLLOW_108);
+            	    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 loop126;
+                }
+            } while (true);
+
+            otherlv_5=(Token)match(input,73,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"
+    // InternalChartDSL.g:7456:1: entryRuleXThrowExpression returns [EObject current=null] : iv_ruleXThrowExpression= ruleXThrowExpression EOF ;
+    public final EObject entryRuleXThrowExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXThrowExpression = null;
+
+
+        try {
+            // InternalChartDSL.g:7456:57: (iv_ruleXThrowExpression= ruleXThrowExpression EOF )
+            // InternalChartDSL.g:7457: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"
+    // InternalChartDSL.g:7463: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 {
+            // InternalChartDSL.g:7469:2: ( ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) ) )
+            // InternalChartDSL.g:7470:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
+            {
+            // InternalChartDSL.g:7470:2: ( () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) ) )
+            // InternalChartDSL.g:7471:3: () otherlv_1= 'throw' ( (lv_expression_2_0= ruleXExpression ) )
+            {
+            // InternalChartDSL.g:7471:3: ()
+            // InternalChartDSL.g:7472:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXThrowExpressionAccess().getXThrowExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,128,FOLLOW_50); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXThrowExpressionAccess().getThrowKeyword_1());
+              		
+            }
+            // InternalChartDSL.g:7482:3: ( (lv_expression_2_0= ruleXExpression ) )
+            // InternalChartDSL.g:7483:4: (lv_expression_2_0= ruleXExpression )
+            {
+            // InternalChartDSL.g:7483:4: (lv_expression_2_0= ruleXExpression )
+            // InternalChartDSL.g:7484: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"
+    // InternalChartDSL.g:7505:1: entryRuleXReturnExpression returns [EObject current=null] : iv_ruleXReturnExpression= ruleXReturnExpression EOF ;
+    public final EObject entryRuleXReturnExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXReturnExpression = null;
+
+
+        try {
+            // InternalChartDSL.g:7505:58: (iv_ruleXReturnExpression= ruleXReturnExpression EOF )
+            // InternalChartDSL.g:7506: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"
+    // InternalChartDSL.g:7512: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 {
+            // InternalChartDSL.g:7518: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 ) )? ) )
+            // InternalChartDSL.g:7519: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 ) )? )
+            {
+            // InternalChartDSL.g:7519: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 ) )? )
+            // InternalChartDSL.g:7520: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 ) )?
+            {
+            // InternalChartDSL.g:7520:3: ()
+            // InternalChartDSL.g:7521:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXReturnExpressionAccess().getXReturnExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,129,FOLLOW_109); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXReturnExpressionAccess().getReturnKeyword_1());
+              		
+            }
+            // InternalChartDSL.g:7531: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 alt127=2;
+            alt127 = dfa127.predict(input);
+            switch (alt127) {
+                case 1 :
+                    // InternalChartDSL.g:7532: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 )
+                    {
+                    // InternalChartDSL.g:7533:4: (lv_expression_2_0= ruleXExpression )
+                    // InternalChartDSL.g:7534: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"
+    // InternalChartDSL.g:7555:1: entryRuleXTryCatchFinallyExpression returns [EObject current=null] : iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF ;
+    public final EObject entryRuleXTryCatchFinallyExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXTryCatchFinallyExpression = null;
+
+
+        try {
+            // InternalChartDSL.g:7555:67: (iv_ruleXTryCatchFinallyExpression= ruleXTryCatchFinallyExpression EOF )
+            // InternalChartDSL.g:7556: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"
+    // InternalChartDSL.g:7562: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 {
+            // InternalChartDSL.g:7568: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 ) ) ) ) ) )
+            // InternalChartDSL.g:7569: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 ) ) ) ) )
+            {
+            // InternalChartDSL.g:7569: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 ) ) ) ) )
+            // InternalChartDSL.g:7570: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 ) ) ) )
+            {
+            // InternalChartDSL.g:7570:3: ()
+            // InternalChartDSL.g:7571:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getXTryCatchFinallyExpressionAccess().getXTryCatchFinallyExpressionAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,130,FOLLOW_50); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXTryCatchFinallyExpressionAccess().getTryKeyword_1());
+              		
+            }
+            // InternalChartDSL.g:7581:3: ( (lv_expression_2_0= ruleXExpression ) )
+            // InternalChartDSL.g:7582:4: (lv_expression_2_0= ruleXExpression )
+            {
+            // InternalChartDSL.g:7582:4: (lv_expression_2_0= ruleXExpression )
+            // InternalChartDSL.g:7583:5: lv_expression_2_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getExpressionXExpressionParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_110);
+            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();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalChartDSL.g:7600: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 alt130=2;
+            int LA130_0 = input.LA(1);
+
+            if ( (LA130_0==133) ) {
+                alt130=1;
+            }
+            else if ( (LA130_0==131) ) {
+                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 :
+                    // InternalChartDSL.g:7601:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
+                    {
+                    // InternalChartDSL.g:7601:4: ( ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )? )
+                    // InternalChartDSL.g:7602:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+ ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
+                    {
+                    // InternalChartDSL.g:7602:5: ( ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause ) )+
+                    int cnt128=0;
+                    loop128:
+                    do {
+                        int alt128=2;
+                        int LA128_0 = input.LA(1);
+
+                        if ( (LA128_0==133) ) {
+                            int LA128_2 = input.LA(2);
+
+                            if ( (synpred44_InternalChartDSL()) ) {
+                                alt128=1;
+                            }
+
+
+                        }
+
+
+                        switch (alt128) {
+                    	case 1 :
+                    	    // InternalChartDSL.g:7603:6: ( 'catch' )=> (lv_catchClauses_3_0= ruleXCatchClause )
+                    	    {
+                    	    // InternalChartDSL.g:7604:6: (lv_catchClauses_3_0= ruleXCatchClause )
+                    	    // InternalChartDSL.g:7605:7: lv_catchClauses_3_0= ruleXCatchClause
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getXTryCatchFinallyExpressionAccess().getCatchClausesXCatchClauseParserRuleCall_3_0_0_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_111);
+                    	    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 ( cnt128 >= 1 ) break loop128;
+                    	    if (state.backtracking>0) {state.failed=true; return current;}
+                                EarlyExitException eee =
+                                    new EarlyExitException(128, input);
+                                throw eee;
+                        }
+                        cnt128++;
+                    } while (true);
+
+                    // InternalChartDSL.g:7622:5: ( ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) ) )?
+                    int alt129=2;
+                    int LA129_0 = input.LA(1);
+
+                    if ( (LA129_0==131) ) {
+                        int LA129_1 = input.LA(2);
+
+                        if ( (synpred45_InternalChartDSL()) ) {
+                            alt129=1;
+                        }
+                    }
+                    switch (alt129) {
+                        case 1 :
+                            // InternalChartDSL.g:7623:6: ( ( 'finally' )=>otherlv_4= 'finally' ) ( (lv_finallyExpression_5_0= ruleXExpression ) )
+                            {
+                            // InternalChartDSL.g:7623:6: ( ( 'finally' )=>otherlv_4= 'finally' )
+                            // InternalChartDSL.g:7624:7: ( 'finally' )=>otherlv_4= 'finally'
+                            {
+                            otherlv_4=(Token)match(input,131,FOLLOW_50); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              							newLeafNode(otherlv_4, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_0_1_0());
+                              						
+                            }
+
+                            }
+
+                            // InternalChartDSL.g:7630:6: ( (lv_finallyExpression_5_0= ruleXExpression ) )
+                            // InternalChartDSL.g:7631:7: (lv_finallyExpression_5_0= ruleXExpression )
+                            {
+                            // InternalChartDSL.g:7631:7: (lv_finallyExpression_5_0= ruleXExpression )
+                            // InternalChartDSL.g:7632: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 :
+                    // InternalChartDSL.g:7652:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
+                    {
+                    // InternalChartDSL.g:7652:4: (otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) ) )
+                    // InternalChartDSL.g:7653:5: otherlv_6= 'finally' ( (lv_finallyExpression_7_0= ruleXExpression ) )
+                    {
+                    otherlv_6=(Token)match(input,131,FOLLOW_50); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_6, grammarAccess.getXTryCatchFinallyExpressionAccess().getFinallyKeyword_3_1_0());
+                      				
+                    }
+                    // InternalChartDSL.g:7657:5: ( (lv_finallyExpression_7_0= ruleXExpression ) )
+                    // InternalChartDSL.g:7658:6: (lv_finallyExpression_7_0= ruleXExpression )
+                    {
+                    // InternalChartDSL.g:7658:6: (lv_finallyExpression_7_0= ruleXExpression )
+                    // InternalChartDSL.g:7659: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"
+    // InternalChartDSL.g:7682:1: entryRuleXSynchronizedExpression returns [EObject current=null] : iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF ;
+    public final EObject entryRuleXSynchronizedExpression() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXSynchronizedExpression = null;
+
+
+        try {
+            // InternalChartDSL.g:7682:64: (iv_ruleXSynchronizedExpression= ruleXSynchronizedExpression EOF )
+            // InternalChartDSL.g:7683: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"
+    // InternalChartDSL.g:7689: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 {
+            // InternalChartDSL.g:7695:2: ( ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) ) )
+            // InternalChartDSL.g:7696:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
+            {
+            // InternalChartDSL.g:7696:2: ( ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) ) )
+            // InternalChartDSL.g:7697:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) ) ( (lv_param_3_0= ruleXExpression ) ) otherlv_4= ')' ( (lv_expression_5_0= ruleXExpression ) )
+            {
+            // InternalChartDSL.g:7697:3: ( ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' ) )
+            // InternalChartDSL.g:7698:4: ( ( () 'synchronized' '(' ) )=> ( () otherlv_1= 'synchronized' otherlv_2= '(' )
+            {
+            // InternalChartDSL.g:7705:4: ( () otherlv_1= 'synchronized' otherlv_2= '(' )
+            // InternalChartDSL.g:7706:5: () otherlv_1= 'synchronized' otherlv_2= '('
+            {
+            // InternalChartDSL.g:7706:5: ()
+            // InternalChartDSL.g:7707:6: 
+            {
+            if ( state.backtracking==0 ) {
+
+              						current = forceCreateModelElement(
+              							grammarAccess.getXSynchronizedExpressionAccess().getXSynchronizedExpressionAction_0_0_0(),
+              							current);
+              					
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,132,FOLLOW_88); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_1, grammarAccess.getXSynchronizedExpressionAccess().getSynchronizedKeyword_0_0_1());
+              				
+            }
+            otherlv_2=(Token)match(input,71,FOLLOW_50); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					newLeafNode(otherlv_2, grammarAccess.getXSynchronizedExpressionAccess().getLeftParenthesisKeyword_0_0_2());
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalChartDSL.g:7723:3: ( (lv_param_3_0= ruleXExpression ) )
+            // InternalChartDSL.g:7724:4: (lv_param_3_0= ruleXExpression )
+            {
+            // InternalChartDSL.g:7724:4: (lv_param_3_0= ruleXExpression )
+            // InternalChartDSL.g:7725:5: lv_param_3_0= ruleXExpression
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXSynchronizedExpressionAccess().getParamXExpressionParserRuleCall_1_0());
+              				
+            }
+            pushFollow(FOLLOW_48);
+            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,73,FOLLOW_50); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_4, grammarAccess.getXSynchronizedExpressionAccess().getRightParenthesisKeyword_2());
+              		
+            }
+            // InternalChartDSL.g:7746:3: ( (lv_expression_5_0= ruleXExpression ) )
+            // InternalChartDSL.g:7747:4: (lv_expression_5_0= ruleXExpression )
+            {
+            // InternalChartDSL.g:7747:4: (lv_expression_5_0= ruleXExpression )
+            // InternalChartDSL.g:7748: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"
+    // InternalChartDSL.g:7769:1: entryRuleXCatchClause returns [EObject current=null] : iv_ruleXCatchClause= ruleXCatchClause EOF ;
+    public final EObject entryRuleXCatchClause() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXCatchClause = null;
+
+
+        try {
+            // InternalChartDSL.g:7769:53: (iv_ruleXCatchClause= ruleXCatchClause EOF )
+            // InternalChartDSL.g:7770: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"
+    // InternalChartDSL.g:7776: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 {
+            // InternalChartDSL.g:7782:2: ( ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) ) )
+            // InternalChartDSL.g:7783:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
+            {
+            // InternalChartDSL.g:7783:2: ( ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) ) )
+            // InternalChartDSL.g:7784:3: ( ( 'catch' )=>otherlv_0= 'catch' ) otherlv_1= '(' ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) ) otherlv_3= ')' ( (lv_expression_4_0= ruleXExpression ) )
+            {
+            // InternalChartDSL.g:7784:3: ( ( 'catch' )=>otherlv_0= 'catch' )
+            // InternalChartDSL.g:7785:4: ( 'catch' )=>otherlv_0= 'catch'
+            {
+            otherlv_0=(Token)match(input,133,FOLLOW_88); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              				newLeafNode(otherlv_0, grammarAccess.getXCatchClauseAccess().getCatchKeyword_0());
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,71,FOLLOW_63); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getXCatchClauseAccess().getLeftParenthesisKeyword_1());
+              		
+            }
+            // InternalChartDSL.g:7795:3: ( (lv_declaredParam_2_0= ruleFullJvmFormalParameter ) )
+            // InternalChartDSL.g:7796:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
+            {
+            // InternalChartDSL.g:7796:4: (lv_declaredParam_2_0= ruleFullJvmFormalParameter )
+            // InternalChartDSL.g:7797:5: lv_declaredParam_2_0= ruleFullJvmFormalParameter
+            {
+            if ( state.backtracking==0 ) {
+
+              					newCompositeNode(grammarAccess.getXCatchClauseAccess().getDeclaredParamFullJvmFormalParameterParserRuleCall_2_0());
+              				
+            }
+            pushFollow(FOLLOW_48);
+            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,73,FOLLOW_50); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_3, grammarAccess.getXCatchClauseAccess().getRightParenthesisKeyword_3());
+              		
+            }
+            // InternalChartDSL.g:7818:3: ( (lv_expression_4_0= ruleXExpression ) )
+            // InternalChartDSL.g:7819:4: (lv_expression_4_0= ruleXExpression )
+            {
+            // InternalChartDSL.g:7819:4: (lv_expression_4_0= ruleXExpression )
+            // InternalChartDSL.g:7820: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"
+    // InternalChartDSL.g:7841:1: entryRuleQualifiedName returns [String current=null] : iv_ruleQualifiedName= ruleQualifiedName EOF ;
+    public final String entryRuleQualifiedName() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleQualifiedName = null;
+
+
+        try {
+            // InternalChartDSL.g:7841:53: (iv_ruleQualifiedName= ruleQualifiedName EOF )
+            // InternalChartDSL.g:7842: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"
+    // InternalChartDSL.g:7848: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 {
+            // InternalChartDSL.g:7854:2: ( (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* ) )
+            // InternalChartDSL.g:7855:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
+            {
+            // InternalChartDSL.g:7855:2: (this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )* )
+            // InternalChartDSL.g:7856:3: this_ValidID_0= ruleValidID ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getQualifiedNameAccess().getValidIDParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_112);
+            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();
+              		
+            }
+            // InternalChartDSL.g:7866:3: ( ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID )*
+            loop131:
+            do {
+                int alt131=2;
+                int LA131_0 = input.LA(1);
+
+                if ( (LA131_0==106) ) {
+                    int LA131_2 = input.LA(2);
+
+                    if ( (LA131_2==RULE_ID) ) {
+                        int LA131_3 = input.LA(3);
+
+                        if ( (synpred48_InternalChartDSL()) ) {
+                            alt131=1;
+                        }
+
+
+                    }
+
+
+                }
+
+
+                switch (alt131) {
+            	case 1 :
+            	    // InternalChartDSL.g:7867:4: ( ( '.' )=>kw= '.' ) this_ValidID_2= ruleValidID
+            	    {
+            	    // InternalChartDSL.g:7867:4: ( ( '.' )=>kw= '.' )
+            	    // InternalChartDSL.g:7868:5: ( '.' )=>kw= '.'
+            	    {
+            	    kw=(Token)match(input,106,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_112);
+            	    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 loop131;
+                }
+            } while (true);
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleQualifiedName"
+
+
+    // $ANTLR start "entryRuleNumber"
+    // InternalChartDSL.g:7890: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 {
+            // InternalChartDSL.g:7892:2: (iv_ruleNumber= ruleNumber EOF )
+            // InternalChartDSL.g:7893: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"
+    // InternalChartDSL.g:7902: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 {
+            // InternalChartDSL.g:7909: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 ) )? ) ) )
+            // InternalChartDSL.g:7910: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 ) )? ) )
+            {
+            // InternalChartDSL.g:7910: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 alt135=2;
+            int LA135_0 = input.LA(1);
+
+            if ( (LA135_0==RULE_HEX) ) {
+                alt135=1;
+            }
+            else if ( (LA135_0==RULE_INT||LA135_0==RULE_DECIMAL) ) {
+                alt135=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 135, 0, input);
+
+                throw nvae;
+            }
+            switch (alt135) {
+                case 1 :
+                    // InternalChartDSL.g:7911: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 :
+                    // InternalChartDSL.g:7919:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
+                    {
+                    // InternalChartDSL.g:7919:3: ( (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )? )
+                    // InternalChartDSL.g:7920:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL ) (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
+                    {
+                    // InternalChartDSL.g:7920:4: (this_INT_1= RULE_INT | this_DECIMAL_2= RULE_DECIMAL )
+                    int alt132=2;
+                    int LA132_0 = input.LA(1);
+
+                    if ( (LA132_0==RULE_INT) ) {
+                        alt132=1;
+                    }
+                    else if ( (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 :
+                            // InternalChartDSL.g:7921:5: this_INT_1= RULE_INT
+                            {
+                            this_INT_1=(Token)match(input,RULE_INT,FOLLOW_112); 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 :
+                            // InternalChartDSL.g:7929:5: this_DECIMAL_2= RULE_DECIMAL
+                            {
+                            this_DECIMAL_2=(Token)match(input,RULE_DECIMAL,FOLLOW_112); 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;
+
+                    }
+
+                    // InternalChartDSL.g:7937:4: (kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL ) )?
+                    int alt134=2;
+                    int LA134_0 = input.LA(1);
+
+                    if ( (LA134_0==106) ) {
+                        int LA134_1 = input.LA(2);
+
+                        if ( (LA134_1==RULE_INT||LA134_1==RULE_DECIMAL) ) {
+                            alt134=1;
+                        }
+                    }
+                    switch (alt134) {
+                        case 1 :
+                            // InternalChartDSL.g:7938:5: kw= '.' (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
+                            {
+                            kw=(Token)match(input,106,FOLLOW_113); if (state.failed) return current;
+                            if ( state.backtracking==0 ) {
+
+                              					current.merge(kw);
+                              					newLeafNode(kw, grammarAccess.getNumberAccess().getFullStopKeyword_1_1_0());
+                              				
+                            }
+                            // InternalChartDSL.g:7943:5: (this_INT_4= RULE_INT | this_DECIMAL_5= RULE_DECIMAL )
+                            int alt133=2;
+                            int LA133_0 = input.LA(1);
+
+                            if ( (LA133_0==RULE_INT) ) {
+                                alt133=1;
+                            }
+                            else if ( (LA133_0==RULE_DECIMAL) ) {
+                                alt133=2;
+                            }
+                            else {
+                                if (state.backtracking>0) {state.failed=true; return current;}
+                                NoViableAltException nvae =
+                                    new NoViableAltException("", 133, 0, input);
+
+                                throw nvae;
+                            }
+                            switch (alt133) {
+                                case 1 :
+                                    // InternalChartDSL.g:7944: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 :
+                                    // InternalChartDSL.g:7952: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"
+    // InternalChartDSL.g:7969:1: entryRuleJvmTypeReference returns [EObject current=null] : iv_ruleJvmTypeReference= ruleJvmTypeReference EOF ;
+    public final EObject entryRuleJvmTypeReference() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmTypeReference = null;
+
+
+        try {
+            // InternalChartDSL.g:7969:57: (iv_ruleJvmTypeReference= ruleJvmTypeReference EOF )
+            // InternalChartDSL.g:7970: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"
+    // InternalChartDSL.g:7976: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 {
+            // InternalChartDSL.g:7982:2: ( ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef ) )
+            // InternalChartDSL.g:7983:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
+            {
+            // InternalChartDSL.g:7983:2: ( (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* ) | this_XFunctionTypeRef_3= ruleXFunctionTypeRef )
+            int alt137=2;
+            int LA137_0 = input.LA(1);
+
+            if ( (LA137_0==RULE_ID) ) {
+                alt137=1;
+            }
+            else if ( (LA137_0==71||LA137_0==96) ) {
+                alt137=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 137, 0, input);
+
+                throw nvae;
+            }
+            switch (alt137) {
+                case 1 :
+                    // InternalChartDSL.g:7984:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
+                    {
+                    // InternalChartDSL.g:7984:3: (this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )* )
+                    // InternalChartDSL.g:7985:4: this_JvmParameterizedTypeReference_0= ruleJvmParameterizedTypeReference ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      				newCompositeNode(grammarAccess.getJvmTypeReferenceAccess().getJvmParameterizedTypeReferenceParserRuleCall_0_0());
+                      			
+                    }
+                    pushFollow(FOLLOW_106);
+                    this_JvmParameterizedTypeReference_0=ruleJvmParameterizedTypeReference();
+
+                    state._fsp--;
+                    if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = this_JvmParameterizedTypeReference_0;
+                      				afterParserOrEnumRuleCall();
+                      			
+                    }
+                    // InternalChartDSL.g:7993:4: ( ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets ) )*
+                    loop136:
+                    do {
+                        int alt136=2;
+                        int LA136_0 = input.LA(1);
+
+                        if ( (LA136_0==76) ) {
+                            int LA136_2 = input.LA(2);
+
+                            if ( (LA136_2==77) ) {
+                                int LA136_3 = input.LA(3);
+
+                                if ( (synpred49_InternalChartDSL()) ) {
+                                    alt136=1;
+                                }
+
+
+                            }
+
+
+                        }
+
+
+                        switch (alt136) {
+                    	case 1 :
+                    	    // InternalChartDSL.g:7994:5: ( ( () ruleArrayBrackets ) )=> ( () ruleArrayBrackets )
+                    	    {
+                    	    // InternalChartDSL.g:8000:5: ( () ruleArrayBrackets )
+                    	    // InternalChartDSL.g:8001:6: () ruleArrayBrackets
+                    	    {
+                    	    // InternalChartDSL.g:8001:6: ()
+                    	    // InternalChartDSL.g:8002: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_106);
+                    	    ruleArrayBrackets();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      						afterParserOrEnumRuleCall();
+                    	      					
+                    	    }
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop136;
+                        }
+                    } while (true);
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:8019: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"
+    // InternalChartDSL.g:8031:1: entryRuleArrayBrackets returns [String current=null] : iv_ruleArrayBrackets= ruleArrayBrackets EOF ;
+    public final String entryRuleArrayBrackets() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleArrayBrackets = null;
+
+
+        try {
+            // InternalChartDSL.g:8031:53: (iv_ruleArrayBrackets= ruleArrayBrackets EOF )
+            // InternalChartDSL.g:8032: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"
+    // InternalChartDSL.g:8038:1: ruleArrayBrackets returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= '[' kw= ']' ) ;
+    public final AntlrDatatypeRuleToken ruleArrayBrackets() throws RecognitionException {
+        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();
+
+        Token kw=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalChartDSL.g:8044:2: ( (kw= '[' kw= ']' ) )
+            // InternalChartDSL.g:8045:2: (kw= '[' kw= ']' )
+            {
+            // InternalChartDSL.g:8045:2: (kw= '[' kw= ']' )
+            // InternalChartDSL.g:8046:3: kw= '[' kw= ']'
+            {
+            kw=(Token)match(input,76,FOLLOW_85); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current.merge(kw);
+              			newLeafNode(kw, grammarAccess.getArrayBracketsAccess().getLeftSquareBracketKeyword_0());
+              		
+            }
+            kw=(Token)match(input,77,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"
+    // InternalChartDSL.g:8060:1: entryRuleXFunctionTypeRef returns [EObject current=null] : iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF ;
+    public final EObject entryRuleXFunctionTypeRef() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXFunctionTypeRef = null;
+
+
+        try {
+            // InternalChartDSL.g:8060:57: (iv_ruleXFunctionTypeRef= ruleXFunctionTypeRef EOF )
+            // InternalChartDSL.g:8061: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"
+    // InternalChartDSL.g:8067: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 {
+            // InternalChartDSL.g:8073:2: ( ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) ) )
+            // InternalChartDSL.g:8074:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
+            {
+            // InternalChartDSL.g:8074:2: ( (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) ) )
+            // InternalChartDSL.g:8075:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )? otherlv_5= '=>' ( (lv_returnType_6_0= ruleJvmTypeReference ) )
+            {
+            // InternalChartDSL.g:8075:3: (otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')' )?
+            int alt140=2;
+            int LA140_0 = input.LA(1);
+
+            if ( (LA140_0==71) ) {
+                alt140=1;
+            }
+            switch (alt140) {
+                case 1 :
+                    // InternalChartDSL.g:8076:4: otherlv_0= '(' ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )? otherlv_4= ')'
+                    {
+                    otherlv_0=(Token)match(input,71,FOLLOW_114); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_0, grammarAccess.getXFunctionTypeRefAccess().getLeftParenthesisKeyword_0_0());
+                      			
+                    }
+                    // InternalChartDSL.g:8080:4: ( ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )* )?
+                    int alt139=2;
+                    int LA139_0 = input.LA(1);
+
+                    if ( (LA139_0==RULE_ID||LA139_0==71||LA139_0==96) ) {
+                        alt139=1;
+                    }
+                    switch (alt139) {
+                        case 1 :
+                            // InternalChartDSL.g:8081:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) ) (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
+                            {
+                            // InternalChartDSL.g:8081:5: ( (lv_paramTypes_1_0= ruleJvmTypeReference ) )
+                            // InternalChartDSL.g:8082:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
+                            {
+                            // InternalChartDSL.g:8082:6: (lv_paramTypes_1_0= ruleJvmTypeReference )
+                            // InternalChartDSL.g:8083:7: lv_paramTypes_1_0= ruleJvmTypeReference
+                            {
+                            if ( state.backtracking==0 ) {
+
+                              							newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_0_0());
+                              						
+                            }
+                            pushFollow(FOLLOW_47);
+                            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();
+                              						
+                            }
+
+                            }
+
+
+                            }
+
+                            // InternalChartDSL.g:8100:5: (otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) ) )*
+                            loop138:
+                            do {
+                                int alt138=2;
+                                int LA138_0 = input.LA(1);
+
+                                if ( (LA138_0==72) ) {
+                                    alt138=1;
+                                }
+
+
+                                switch (alt138) {
+                            	case 1 :
+                            	    // InternalChartDSL.g:8101:6: otherlv_2= ',' ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
+                            	    {
+                            	    otherlv_2=(Token)match(input,72,FOLLOW_63); if (state.failed) return current;
+                            	    if ( state.backtracking==0 ) {
+
+                            	      						newLeafNode(otherlv_2, grammarAccess.getXFunctionTypeRefAccess().getCommaKeyword_0_1_1_0());
+                            	      					
+                            	    }
+                            	    // InternalChartDSL.g:8105:6: ( (lv_paramTypes_3_0= ruleJvmTypeReference ) )
+                            	    // InternalChartDSL.g:8106:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
+                            	    {
+                            	    // InternalChartDSL.g:8106:7: (lv_paramTypes_3_0= ruleJvmTypeReference )
+                            	    // InternalChartDSL.g:8107:8: lv_paramTypes_3_0= ruleJvmTypeReference
+                            	    {
+                            	    if ( state.backtracking==0 ) {
+
+                            	      								newCompositeNode(grammarAccess.getXFunctionTypeRefAccess().getParamTypesJvmTypeReferenceParserRuleCall_0_1_1_1_0());
+                            	      							
+                            	    }
+                            	    pushFollow(FOLLOW_47);
+                            	    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 loop138;
+                                }
+                            } while (true);
+
+
+                            }
+                            break;
+
+                    }
+
+                    otherlv_4=(Token)match(input,73,FOLLOW_115); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_4, grammarAccess.getXFunctionTypeRefAccess().getRightParenthesisKeyword_0_2());
+                      			
+                    }
+
+                    }
+                    break;
+
+            }
+
+            otherlv_5=(Token)match(input,96,FOLLOW_63); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_5, grammarAccess.getXFunctionTypeRefAccess().getEqualsSignGreaterThanSignKeyword_1());
+              		
+            }
+            // InternalChartDSL.g:8135:3: ( (lv_returnType_6_0= ruleJvmTypeReference ) )
+            // InternalChartDSL.g:8136:4: (lv_returnType_6_0= ruleJvmTypeReference )
+            {
+            // InternalChartDSL.g:8136:4: (lv_returnType_6_0= ruleJvmTypeReference )
+            // InternalChartDSL.g:8137: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"
+    // InternalChartDSL.g:8158:1: entryRuleJvmParameterizedTypeReference returns [EObject current=null] : iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF ;
+    public final EObject entryRuleJvmParameterizedTypeReference() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmParameterizedTypeReference = null;
+
+
+        try {
+            // InternalChartDSL.g:8158:70: (iv_ruleJvmParameterizedTypeReference= ruleJvmParameterizedTypeReference EOF )
+            // InternalChartDSL.g:8159: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"
+    // InternalChartDSL.g:8165: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 {
+            // InternalChartDSL.g:8171: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= '>' )? )* )? ) )
+            // InternalChartDSL.g:8172: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= '>' )? )* )? )
+            {
+            // InternalChartDSL.g:8172: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= '>' )? )* )? )
+            // InternalChartDSL.g:8173: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= '>' )? )* )?
+            {
+            // InternalChartDSL.g:8173:3: ( ( ruleQualifiedName ) )
+            // InternalChartDSL.g:8174:4: ( ruleQualifiedName )
+            {
+            // InternalChartDSL.g:8174:4: ( ruleQualifiedName )
+            // InternalChartDSL.g:8175: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_116);
+            ruleQualifiedName();
+
+            state._fsp--;
+            if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              					afterParserOrEnumRuleCall();
+              				
+            }
+
+            }
+
+
+            }
+
+            // InternalChartDSL.g:8189: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 alt145=2;
+            alt145 = dfa145.predict(input);
+            switch (alt145) {
+                case 1 :
+                    // InternalChartDSL.g:8190: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= '>' )? )*
+                    {
+                    // InternalChartDSL.g:8190:4: ( ( '<' )=>otherlv_1= '<' )
+                    // InternalChartDSL.g:8191:5: ( '<' )=>otherlv_1= '<'
+                    {
+                    otherlv_1=(Token)match(input,83,FOLLOW_75); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      					newLeafNode(otherlv_1, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_0());
+                      				
+                    }
+
+                    }
+
+                    // InternalChartDSL.g:8197:4: ( (lv_arguments_2_0= ruleJvmArgumentTypeReference ) )
+                    // InternalChartDSL.g:8198:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
+                    {
+                    // InternalChartDSL.g:8198:5: (lv_arguments_2_0= ruleJvmArgumentTypeReference )
+                    // InternalChartDSL.g:8199:6: lv_arguments_2_0= ruleJvmArgumentTypeReference
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      						newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_1_0());
+                      					
+                    }
+                    pushFollow(FOLLOW_76);
+                    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();
+                      					
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalChartDSL.g:8216:4: (otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) ) )*
+                    loop141:
+                    do {
+                        int alt141=2;
+                        int LA141_0 = input.LA(1);
+
+                        if ( (LA141_0==72) ) {
+                            alt141=1;
+                        }
+
+
+                        switch (alt141) {
+                    	case 1 :
+                    	    // InternalChartDSL.g:8217:5: otherlv_3= ',' ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    {
+                    	    otherlv_3=(Token)match(input,72,FOLLOW_75); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      					newLeafNode(otherlv_3, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_2_0());
+                    	      				
+                    	    }
+                    	    // InternalChartDSL.g:8221:5: ( (lv_arguments_4_0= ruleJvmArgumentTypeReference ) )
+                    	    // InternalChartDSL.g:8222:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
+                    	    {
+                    	    // InternalChartDSL.g:8222:6: (lv_arguments_4_0= ruleJvmArgumentTypeReference )
+                    	    // InternalChartDSL.g:8223:7: lv_arguments_4_0= ruleJvmArgumentTypeReference
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_2_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_76);
+                    	    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 loop141;
+                        }
+                    } while (true);
+
+                    otherlv_5=(Token)match(input,84,FOLLOW_112); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				newLeafNode(otherlv_5, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_3());
+                      			
+                    }
+                    // InternalChartDSL.g:8245:4: ( ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )? )*
+                    loop144:
+                    do {
+                        int alt144=2;
+                        int LA144_0 = input.LA(1);
+
+                        if ( (LA144_0==106) ) {
+                            int LA144_2 = input.LA(2);
+
+                            if ( (LA144_2==RULE_ID) ) {
+                                int LA144_3 = input.LA(3);
+
+                                if ( (synpred51_InternalChartDSL()) ) {
+                                    alt144=1;
+                                }
+
+
+                            }
+
+
+                        }
+
+
+                        switch (alt144) {
+                    	case 1 :
+                    	    // InternalChartDSL.g:8246:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) ) ( ( ruleValidID ) ) ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
+                    	    {
+                    	    // InternalChartDSL.g:8246:5: ( ( ( () '.' ) )=> ( () otherlv_7= '.' ) )
+                    	    // InternalChartDSL.g:8247:6: ( ( () '.' ) )=> ( () otherlv_7= '.' )
+                    	    {
+                    	    // InternalChartDSL.g:8253:6: ( () otherlv_7= '.' )
+                    	    // InternalChartDSL.g:8254:7: () otherlv_7= '.'
+                    	    {
+                    	    // InternalChartDSL.g:8254:7: ()
+                    	    // InternalChartDSL.g:8255:8: 
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      								current = forceCreateModelElementAndSet(
+                    	      									grammarAccess.getJvmParameterizedTypeReferenceAccess().getJvmInnerTypeReferenceOuterAction_1_4_0_0_0(),
+                    	      									current);
+                    	      							
+                    	    }
+
+                    	    }
+
+                    	    otherlv_7=(Token)match(input,106,FOLLOW_4); if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newLeafNode(otherlv_7, grammarAccess.getJvmParameterizedTypeReferenceAccess().getFullStopKeyword_1_4_0_0_1());
+                    	      						
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    // InternalChartDSL.g:8267:5: ( ( ruleValidID ) )
+                    	    // InternalChartDSL.g:8268:6: ( ruleValidID )
+                    	    {
+                    	    // InternalChartDSL.g:8268:6: ( ruleValidID )
+                    	    // InternalChartDSL.g:8269: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_117);
+                    	    ruleValidID();
+
+                    	    state._fsp--;
+                    	    if (state.failed) return current;
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							afterParserOrEnumRuleCall();
+                    	      						
+                    	    }
+
+                    	    }
+
+
+                    	    }
+
+                    	    // InternalChartDSL.g:8283:5: ( ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>' )?
+                    	    int alt143=2;
+                    	    alt143 = dfa143.predict(input);
+                    	    switch (alt143) {
+                    	        case 1 :
+                    	            // InternalChartDSL.g:8284:6: ( ( '<' )=>otherlv_9= '<' ) ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) ) (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )* otherlv_13= '>'
+                    	            {
+                    	            // InternalChartDSL.g:8284:6: ( ( '<' )=>otherlv_9= '<' )
+                    	            // InternalChartDSL.g:8285:7: ( '<' )=>otherlv_9= '<'
+                    	            {
+                    	            otherlv_9=(Token)match(input,83,FOLLOW_75); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              							newLeafNode(otherlv_9, grammarAccess.getJvmParameterizedTypeReferenceAccess().getLessThanSignKeyword_1_4_2_0());
+                    	              						
+                    	            }
+
+                    	            }
+
+                    	            // InternalChartDSL.g:8291:6: ( (lv_arguments_10_0= ruleJvmArgumentTypeReference ) )
+                    	            // InternalChartDSL.g:8292:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
+                    	            {
+                    	            // InternalChartDSL.g:8292:7: (lv_arguments_10_0= ruleJvmArgumentTypeReference )
+                    	            // InternalChartDSL.g:8293:8: lv_arguments_10_0= ruleJvmArgumentTypeReference
+                    	            {
+                    	            if ( state.backtracking==0 ) {
+
+                    	              								newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_1_0());
+                    	              							
+                    	            }
+                    	            pushFollow(FOLLOW_76);
+                    	            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();
+                    	              							
+                    	            }
+
+                    	            }
+
+
+                    	            }
+
+                    	            // InternalChartDSL.g:8310:6: (otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) ) )*
+                    	            loop142:
+                    	            do {
+                    	                int alt142=2;
+                    	                int LA142_0 = input.LA(1);
+
+                    	                if ( (LA142_0==72) ) {
+                    	                    alt142=1;
+                    	                }
+
+
+                    	                switch (alt142) {
+                    	            	case 1 :
+                    	            	    // InternalChartDSL.g:8311:7: otherlv_11= ',' ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
+                    	            	    {
+                    	            	    otherlv_11=(Token)match(input,72,FOLLOW_75); if (state.failed) return current;
+                    	            	    if ( state.backtracking==0 ) {
+
+                    	            	      							newLeafNode(otherlv_11, grammarAccess.getJvmParameterizedTypeReferenceAccess().getCommaKeyword_1_4_2_2_0());
+                    	            	      						
+                    	            	    }
+                    	            	    // InternalChartDSL.g:8315:7: ( (lv_arguments_12_0= ruleJvmArgumentTypeReference ) )
+                    	            	    // InternalChartDSL.g:8316:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
+                    	            	    {
+                    	            	    // InternalChartDSL.g:8316:8: (lv_arguments_12_0= ruleJvmArgumentTypeReference )
+                    	            	    // InternalChartDSL.g:8317:9: lv_arguments_12_0= ruleJvmArgumentTypeReference
+                    	            	    {
+                    	            	    if ( state.backtracking==0 ) {
+
+                    	            	      									newCompositeNode(grammarAccess.getJvmParameterizedTypeReferenceAccess().getArgumentsJvmArgumentTypeReferenceParserRuleCall_1_4_2_2_1_0());
+                    	            	      								
+                    	            	    }
+                    	            	    pushFollow(FOLLOW_76);
+                    	            	    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 loop142;
+                    	                }
+                    	            } while (true);
+
+                    	            otherlv_13=(Token)match(input,84,FOLLOW_112); if (state.failed) return current;
+                    	            if ( state.backtracking==0 ) {
+
+                    	              						newLeafNode(otherlv_13, grammarAccess.getJvmParameterizedTypeReferenceAccess().getGreaterThanSignKeyword_1_4_2_3());
+                    	              					
+                    	            }
+
+                    	            }
+                    	            break;
+
+                    	    }
+
+
+                    	    }
+                    	    break;
+
+                    	default :
+                    	    break loop144;
+                        }
+                    } while (true);
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleJvmParameterizedTypeReference"
+
+
+    // $ANTLR start "entryRuleJvmArgumentTypeReference"
+    // InternalChartDSL.g:8346:1: entryRuleJvmArgumentTypeReference returns [EObject current=null] : iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF ;
+    public final EObject entryRuleJvmArgumentTypeReference() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmArgumentTypeReference = null;
+
+
+        try {
+            // InternalChartDSL.g:8346:65: (iv_ruleJvmArgumentTypeReference= ruleJvmArgumentTypeReference EOF )
+            // InternalChartDSL.g:8347: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"
+    // InternalChartDSL.g:8353: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 {
+            // InternalChartDSL.g:8359:2: ( (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference ) )
+            // InternalChartDSL.g:8360:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
+            {
+            // InternalChartDSL.g:8360:2: (this_JvmTypeReference_0= ruleJvmTypeReference | this_JvmWildcardTypeReference_1= ruleJvmWildcardTypeReference )
+            int alt146=2;
+            int LA146_0 = input.LA(1);
+
+            if ( (LA146_0==RULE_ID||LA146_0==71||LA146_0==96) ) {
+                alt146=1;
+            }
+            else if ( (LA146_0==134) ) {
+                alt146=2;
+            }
+            else {
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 146, 0, input);
+
+                throw nvae;
+            }
+            switch (alt146) {
+                case 1 :
+                    // InternalChartDSL.g:8361: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 :
+                    // InternalChartDSL.g:8370: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"
+    // InternalChartDSL.g:8382:1: entryRuleJvmWildcardTypeReference returns [EObject current=null] : iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF ;
+    public final EObject entryRuleJvmWildcardTypeReference() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmWildcardTypeReference = null;
+
+
+        try {
+            // InternalChartDSL.g:8382:65: (iv_ruleJvmWildcardTypeReference= ruleJvmWildcardTypeReference EOF )
+            // InternalChartDSL.g:8383: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"
+    // InternalChartDSL.g:8389: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 {
+            // InternalChartDSL.g:8395:2: ( ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? ) )
+            // InternalChartDSL.g:8396:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
+            {
+            // InternalChartDSL.g:8396:2: ( () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )? )
+            // InternalChartDSL.g:8397:3: () otherlv_1= '?' ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
+            {
+            // InternalChartDSL.g:8397:3: ()
+            // InternalChartDSL.g:8398:4: 
+            {
+            if ( state.backtracking==0 ) {
+
+              				current = forceCreateModelElement(
+              					grammarAccess.getJvmWildcardTypeReferenceAccess().getJvmWildcardTypeReferenceAction_0(),
+              					current);
+              			
+            }
+
+            }
+
+            otherlv_1=(Token)match(input,134,FOLLOW_118); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_1, grammarAccess.getJvmWildcardTypeReferenceAccess().getQuestionMarkKeyword_1());
+              		
+            }
+            // InternalChartDSL.g:8408:3: ( ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* ) | ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* ) )?
+            int alt149=3;
+            int LA149_0 = input.LA(1);
+
+            if ( (LA149_0==121) ) {
+                alt149=1;
+            }
+            else if ( (LA149_0==122) ) {
+                alt149=2;
+            }
+            switch (alt149) {
+                case 1 :
+                    // InternalChartDSL.g:8409:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
+                    {
+                    // InternalChartDSL.g:8409:4: ( ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )* )
+                    // InternalChartDSL.g:8410:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) ) ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
+                    {
+                    // InternalChartDSL.g:8410:5: ( (lv_constraints_2_0= ruleJvmUpperBound ) )
+                    // InternalChartDSL.g:8411:6: (lv_constraints_2_0= ruleJvmUpperBound )
+                    {
+                    // InternalChartDSL.g:8411:6: (lv_constraints_2_0= ruleJvmUpperBound )
+                    // InternalChartDSL.g:8412:7: lv_constraints_2_0= ruleJvmUpperBound
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundParserRuleCall_2_0_0_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_119);
+                    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();
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalChartDSL.g:8429:5: ( (lv_constraints_3_0= ruleJvmUpperBoundAnded ) )*
+                    loop147:
+                    do {
+                        int alt147=2;
+                        int LA147_0 = input.LA(1);
+
+                        if ( (LA147_0==135) ) {
+                            alt147=1;
+                        }
+
+
+                        switch (alt147) {
+                    	case 1 :
+                    	    // InternalChartDSL.g:8430:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
+                    	    {
+                    	    // InternalChartDSL.g:8430:6: (lv_constraints_3_0= ruleJvmUpperBoundAnded )
+                    	    // InternalChartDSL.g:8431:7: lv_constraints_3_0= ruleJvmUpperBoundAnded
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmUpperBoundAndedParserRuleCall_2_0_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_119);
+                    	    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 loop147;
+                        }
+                    } while (true);
+
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:8450:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
+                    {
+                    // InternalChartDSL.g:8450:4: ( ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )* )
+                    // InternalChartDSL.g:8451:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) ) ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
+                    {
+                    // InternalChartDSL.g:8451:5: ( (lv_constraints_4_0= ruleJvmLowerBound ) )
+                    // InternalChartDSL.g:8452:6: (lv_constraints_4_0= ruleJvmLowerBound )
+                    {
+                    // InternalChartDSL.g:8452:6: (lv_constraints_4_0= ruleJvmLowerBound )
+                    // InternalChartDSL.g:8453:7: lv_constraints_4_0= ruleJvmLowerBound
+                    {
+                    if ( state.backtracking==0 ) {
+
+                      							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundParserRuleCall_2_1_0_0());
+                      						
+                    }
+                    pushFollow(FOLLOW_119);
+                    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();
+                      						
+                    }
+
+                    }
+
+
+                    }
+
+                    // InternalChartDSL.g:8470:5: ( (lv_constraints_5_0= ruleJvmLowerBoundAnded ) )*
+                    loop148:
+                    do {
+                        int alt148=2;
+                        int LA148_0 = input.LA(1);
+
+                        if ( (LA148_0==135) ) {
+                            alt148=1;
+                        }
+
+
+                        switch (alt148) {
+                    	case 1 :
+                    	    // InternalChartDSL.g:8471:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
+                    	    {
+                    	    // InternalChartDSL.g:8471:6: (lv_constraints_5_0= ruleJvmLowerBoundAnded )
+                    	    // InternalChartDSL.g:8472:7: lv_constraints_5_0= ruleJvmLowerBoundAnded
+                    	    {
+                    	    if ( state.backtracking==0 ) {
+
+                    	      							newCompositeNode(grammarAccess.getJvmWildcardTypeReferenceAccess().getConstraintsJvmLowerBoundAndedParserRuleCall_2_1_1_0());
+                    	      						
+                    	    }
+                    	    pushFollow(FOLLOW_119);
+                    	    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 loop148;
+                        }
+                    } while (true);
+
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleJvmWildcardTypeReference"
+
+
+    // $ANTLR start "entryRuleJvmUpperBound"
+    // InternalChartDSL.g:8495:1: entryRuleJvmUpperBound returns [EObject current=null] : iv_ruleJvmUpperBound= ruleJvmUpperBound EOF ;
+    public final EObject entryRuleJvmUpperBound() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmUpperBound = null;
+
+
+        try {
+            // InternalChartDSL.g:8495:54: (iv_ruleJvmUpperBound= ruleJvmUpperBound EOF )
+            // InternalChartDSL.g:8496: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"
+    // InternalChartDSL.g:8502: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 {
+            // InternalChartDSL.g:8508:2: ( (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalChartDSL.g:8509:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            {
+            // InternalChartDSL.g:8509:2: (otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalChartDSL.g:8510:3: otherlv_0= 'extends' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            {
+            otherlv_0=(Token)match(input,121,FOLLOW_63); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAccess().getExtendsKeyword_0());
+              		
+            }
+            // InternalChartDSL.g:8514:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalChartDSL.g:8515:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            {
+            // InternalChartDSL.g:8515:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalChartDSL.g:8516: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"
+    // InternalChartDSL.g:8537:1: entryRuleJvmUpperBoundAnded returns [EObject current=null] : iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF ;
+    public final EObject entryRuleJvmUpperBoundAnded() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmUpperBoundAnded = null;
+
+
+        try {
+            // InternalChartDSL.g:8537:59: (iv_ruleJvmUpperBoundAnded= ruleJvmUpperBoundAnded EOF )
+            // InternalChartDSL.g:8538: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"
+    // InternalChartDSL.g:8544: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 {
+            // InternalChartDSL.g:8550:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalChartDSL.g:8551:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            {
+            // InternalChartDSL.g:8551:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalChartDSL.g:8552:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            {
+            otherlv_0=(Token)match(input,135,FOLLOW_63); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getJvmUpperBoundAndedAccess().getAmpersandKeyword_0());
+              		
+            }
+            // InternalChartDSL.g:8556:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalChartDSL.g:8557:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            {
+            // InternalChartDSL.g:8557:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalChartDSL.g:8558: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"
+    // InternalChartDSL.g:8579:1: entryRuleJvmLowerBound returns [EObject current=null] : iv_ruleJvmLowerBound= ruleJvmLowerBound EOF ;
+    public final EObject entryRuleJvmLowerBound() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmLowerBound = null;
+
+
+        try {
+            // InternalChartDSL.g:8579:54: (iv_ruleJvmLowerBound= ruleJvmLowerBound EOF )
+            // InternalChartDSL.g:8580: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"
+    // InternalChartDSL.g:8586: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 {
+            // InternalChartDSL.g:8592:2: ( (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalChartDSL.g:8593:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            {
+            // InternalChartDSL.g:8593:2: (otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalChartDSL.g:8594:3: otherlv_0= 'super' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            {
+            otherlv_0=(Token)match(input,122,FOLLOW_63); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAccess().getSuperKeyword_0());
+              		
+            }
+            // InternalChartDSL.g:8598:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalChartDSL.g:8599:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            {
+            // InternalChartDSL.g:8599:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalChartDSL.g:8600: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"
+    // InternalChartDSL.g:8621:1: entryRuleJvmLowerBoundAnded returns [EObject current=null] : iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF ;
+    public final EObject entryRuleJvmLowerBoundAnded() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleJvmLowerBoundAnded = null;
+
+
+        try {
+            // InternalChartDSL.g:8621:59: (iv_ruleJvmLowerBoundAnded= ruleJvmLowerBoundAnded EOF )
+            // InternalChartDSL.g:8622: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"
+    // InternalChartDSL.g:8628: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 {
+            // InternalChartDSL.g:8634:2: ( (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) ) )
+            // InternalChartDSL.g:8635:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            {
+            // InternalChartDSL.g:8635:2: (otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) ) )
+            // InternalChartDSL.g:8636:3: otherlv_0= '&' ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            {
+            otherlv_0=(Token)match(input,135,FOLLOW_63); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			newLeafNode(otherlv_0, grammarAccess.getJvmLowerBoundAndedAccess().getAmpersandKeyword_0());
+              		
+            }
+            // InternalChartDSL.g:8640:3: ( (lv_typeReference_1_0= ruleJvmTypeReference ) )
+            // InternalChartDSL.g:8641:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            {
+            // InternalChartDSL.g:8641:4: (lv_typeReference_1_0= ruleJvmTypeReference )
+            // InternalChartDSL.g:8642: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"
+    // InternalChartDSL.g:8663:1: entryRuleQualifiedNameWithWildcard returns [String current=null] : iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF ;
+    public final String entryRuleQualifiedNameWithWildcard() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleQualifiedNameWithWildcard = null;
+
+
+        try {
+            // InternalChartDSL.g:8663:65: (iv_ruleQualifiedNameWithWildcard= ruleQualifiedNameWithWildcard EOF )
+            // InternalChartDSL.g:8664: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"
+    // InternalChartDSL.g:8670: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 {
+            // InternalChartDSL.g:8676:2: ( (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' ) )
+            // InternalChartDSL.g:8677:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
+            {
+            // InternalChartDSL.g:8677:2: (this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*' )
+            // InternalChartDSL.g:8678:3: this_QualifiedName_0= ruleQualifiedName kw= '.' kw= '*'
+            {
+            if ( state.backtracking==0 ) {
+
+              			newCompositeNode(grammarAccess.getQualifiedNameWithWildcardAccess().getQualifiedNameParserRuleCall_0());
+              		
+            }
+            pushFollow(FOLLOW_120);
+            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,106,FOLLOW_121); if (state.failed) return current;
+            if ( state.backtracking==0 ) {
+
+              			current.merge(kw);
+              			newLeafNode(kw, grammarAccess.getQualifiedNameWithWildcardAccess().getFullStopKeyword_1());
+              		
+            }
+            kw=(Token)match(input,67,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"
+    // InternalChartDSL.g:8702:1: entryRuleValidID returns [String current=null] : iv_ruleValidID= ruleValidID EOF ;
+    public final String entryRuleValidID() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleValidID = null;
+
+
+        try {
+            // InternalChartDSL.g:8702:47: (iv_ruleValidID= ruleValidID EOF )
+            // InternalChartDSL.g:8703: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"
+    // InternalChartDSL.g:8709: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 {
+            // InternalChartDSL.g:8715:2: (this_ID_0= RULE_ID )
+            // InternalChartDSL.g:8716: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"
+    // InternalChartDSL.g:8726:1: entryRuleXImportSection returns [EObject current=null] : iv_ruleXImportSection= ruleXImportSection EOF ;
+    public final EObject entryRuleXImportSection() throws RecognitionException {
+        EObject current = null;
+
+        EObject iv_ruleXImportSection = null;
+
+
+        try {
+            // InternalChartDSL.g:8726:55: (iv_ruleXImportSection= ruleXImportSection EOF )
+            // InternalChartDSL.g:8727: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"
+    // InternalChartDSL.g:8733: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 {
+            // InternalChartDSL.g:8739:2: ( ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+ )
+            // InternalChartDSL.g:8740:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
+            {
+            // InternalChartDSL.g:8740:2: ( (lv_importDeclarations_0_0= ruleXImportDeclaration ) )+
+            int cnt150=0;
+            loop150:
+            do {
+                int alt150=2;
+                int LA150_0 = input.LA(1);
+
+                if ( (LA150_0==64) ) {
+                    alt150=1;
+                }
+
+
+                switch (alt150) {
+            	case 1 :
+            	    // InternalChartDSL.g:8741:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
+            	    {
+            	    // InternalChartDSL.g:8741:3: (lv_importDeclarations_0_0= ruleXImportDeclaration )
+            	    // InternalChartDSL.g:8742:4: lv_importDeclarations_0_0= ruleXImportDeclaration
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      				newCompositeNode(grammarAccess.getXImportSectionAccess().getImportDeclarationsXImportDeclarationParserRuleCall_0());
+            	      			
+            	    }
+            	    pushFollow(FOLLOW_122);
+            	    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 ( cnt150 >= 1 ) break loop150;
+            	    if (state.backtracking>0) {state.failed=true; return current;}
+                        EarlyExitException eee =
+                            new EarlyExitException(150, input);
+                        throw eee;
+                }
+                cnt150++;
+            } while (true);
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleXImportSection"
+
+
+    // $ANTLR start "entryRuleQualifiedNameInStaticImport"
+    // InternalChartDSL.g:8762:1: entryRuleQualifiedNameInStaticImport returns [String current=null] : iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF ;
+    public final String entryRuleQualifiedNameInStaticImport() throws RecognitionException {
+        String current = null;
+
+        AntlrDatatypeRuleToken iv_ruleQualifiedNameInStaticImport = null;
+
+
+        try {
+            // InternalChartDSL.g:8762:67: (iv_ruleQualifiedNameInStaticImport= ruleQualifiedNameInStaticImport EOF )
+            // InternalChartDSL.g:8763: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"
+    // InternalChartDSL.g:8769: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 {
+            // InternalChartDSL.g:8775:2: ( (this_ValidID_0= ruleValidID kw= '.' )+ )
+            // InternalChartDSL.g:8776:2: (this_ValidID_0= ruleValidID kw= '.' )+
+            {
+            // InternalChartDSL.g:8776:2: (this_ValidID_0= ruleValidID kw= '.' )+
+            int cnt151=0;
+            loop151:
+            do {
+                int alt151=2;
+                int LA151_0 = input.LA(1);
+
+                if ( (LA151_0==RULE_ID) ) {
+                    int LA151_2 = input.LA(2);
+
+                    if ( (LA151_2==106) ) {
+                        alt151=1;
+                    }
+
+
+                }
+
+
+                switch (alt151) {
+            	case 1 :
+            	    // InternalChartDSL.g:8777:3: this_ValidID_0= ruleValidID kw= '.'
+            	    {
+            	    if ( state.backtracking==0 ) {
+
+            	      			newCompositeNode(grammarAccess.getQualifiedNameInStaticImportAccess().getValidIDParserRuleCall_0());
+            	      		
+            	    }
+            	    pushFollow(FOLLOW_120);
+            	    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,106,FOLLOW_123); if (state.failed) return current;
+            	    if ( state.backtracking==0 ) {
+
+            	      			current.merge(kw);
+            	      			newLeafNode(kw, grammarAccess.getQualifiedNameInStaticImportAccess().getFullStopKeyword_1());
+            	      		
+            	    }
+
+            	    }
+            	    break;
+
+            	default :
+            	    if ( cnt151 >= 1 ) break loop151;
+            	    if (state.backtracking>0) {state.failed=true; return current;}
+                        EarlyExitException eee =
+                            new EarlyExitException(151, input);
+                        throw eee;
+                }
+                cnt151++;
+            } while (true);
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleQualifiedNameInStaticImport"
+
+
+    // $ANTLR start "ruleLegendPlacementEnum"
+    // InternalChartDSL.g:8796:1: ruleLegendPlacementEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'inside' ) | (enumLiteral_1= 'inside-grid' ) | (enumLiteral_2= 'outside' ) | (enumLiteral_3= 'outside-grid' ) ) ;
+    public final Enumerator ruleLegendPlacementEnum() throws RecognitionException {
+        Enumerator current = null;
+
+        Token enumLiteral_0=null;
+        Token enumLiteral_1=null;
+        Token enumLiteral_2=null;
+        Token enumLiteral_3=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalChartDSL.g:8802:2: ( ( (enumLiteral_0= 'inside' ) | (enumLiteral_1= 'inside-grid' ) | (enumLiteral_2= 'outside' ) | (enumLiteral_3= 'outside-grid' ) ) )
+            // InternalChartDSL.g:8803:2: ( (enumLiteral_0= 'inside' ) | (enumLiteral_1= 'inside-grid' ) | (enumLiteral_2= 'outside' ) | (enumLiteral_3= 'outside-grid' ) )
+            {
+            // InternalChartDSL.g:8803:2: ( (enumLiteral_0= 'inside' ) | (enumLiteral_1= 'inside-grid' ) | (enumLiteral_2= 'outside' ) | (enumLiteral_3= 'outside-grid' ) )
+            int alt152=4;
+            switch ( input.LA(1) ) {
+            case 57:
+                {
+                alt152=1;
+                }
+                break;
+            case 136:
+                {
+                alt152=2;
+                }
+                break;
+            case 137:
+                {
+                alt152=3;
+                }
+                break;
+            case 138:
+                {
+                alt152=4;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 152, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt152) {
+                case 1 :
+                    // InternalChartDSL.g:8804:3: (enumLiteral_0= 'inside' )
+                    {
+                    // InternalChartDSL.g:8804:3: (enumLiteral_0= 'inside' )
+                    // InternalChartDSL.g:8805:4: enumLiteral_0= 'inside'
+                    {
+                    enumLiteral_0=(Token)match(input,57,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getLegendPlacementEnumAccess().getINSIDEEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_0, grammarAccess.getLegendPlacementEnumAccess().getINSIDEEnumLiteralDeclaration_0());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:8812:3: (enumLiteral_1= 'inside-grid' )
+                    {
+                    // InternalChartDSL.g:8812:3: (enumLiteral_1= 'inside-grid' )
+                    // InternalChartDSL.g:8813:4: enumLiteral_1= 'inside-grid'
+                    {
+                    enumLiteral_1=(Token)match(input,136,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getLegendPlacementEnumAccess().getINSIDE_GRIDEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_1, grammarAccess.getLegendPlacementEnumAccess().getINSIDE_GRIDEnumLiteralDeclaration_1());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalChartDSL.g:8820:3: (enumLiteral_2= 'outside' )
+                    {
+                    // InternalChartDSL.g:8820:3: (enumLiteral_2= 'outside' )
+                    // InternalChartDSL.g:8821:4: enumLiteral_2= 'outside'
+                    {
+                    enumLiteral_2=(Token)match(input,137,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getLegendPlacementEnumAccess().getOUTSIDEEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_2, grammarAccess.getLegendPlacementEnumAccess().getOUTSIDEEnumLiteralDeclaration_2());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalChartDSL.g:8828:3: (enumLiteral_3= 'outside-grid' )
+                    {
+                    // InternalChartDSL.g:8828:3: (enumLiteral_3= 'outside-grid' )
+                    // InternalChartDSL.g:8829:4: enumLiteral_3= 'outside-grid'
+                    {
+                    enumLiteral_3=(Token)match(input,138,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getLegendPlacementEnumAccess().getOUTSIDE_GRIDEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_3, grammarAccess.getLegendPlacementEnumAccess().getOUTSIDE_GRIDEnumLiteralDeclaration_3());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleLegendPlacementEnum"
+
+
+    // $ANTLR start "ruleToggleTypeEnum"
+    // InternalChartDSL.g:8839:1: ruleToggleTypeEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'normal' ) | (enumLiteral_1= 'slow' ) | (enumLiteral_2= 'fast' ) ) ;
+    public final Enumerator ruleToggleTypeEnum() throws RecognitionException {
+        Enumerator current = null;
+
+        Token enumLiteral_0=null;
+        Token enumLiteral_1=null;
+        Token enumLiteral_2=null;
+
+
+        	enterRule();
+
+        try {
+            // InternalChartDSL.g:8845:2: ( ( (enumLiteral_0= 'normal' ) | (enumLiteral_1= 'slow' ) | (enumLiteral_2= 'fast' ) ) )
+            // InternalChartDSL.g:8846:2: ( (enumLiteral_0= 'normal' ) | (enumLiteral_1= 'slow' ) | (enumLiteral_2= 'fast' ) )
+            {
+            // InternalChartDSL.g:8846:2: ( (enumLiteral_0= 'normal' ) | (enumLiteral_1= 'slow' ) | (enumLiteral_2= 'fast' ) )
+            int alt153=3;
+            switch ( input.LA(1) ) {
+            case 139:
+                {
+                alt153=1;
+                }
+                break;
+            case 140:
+                {
+                alt153=2;
+                }
+                break;
+            case 141:
+                {
+                alt153=3;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 153, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt153) {
+                case 1 :
+                    // InternalChartDSL.g:8847:3: (enumLiteral_0= 'normal' )
+                    {
+                    // InternalChartDSL.g:8847:3: (enumLiteral_0= 'normal' )
+                    // InternalChartDSL.g:8848:4: enumLiteral_0= 'normal'
+                    {
+                    enumLiteral_0=(Token)match(input,139,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getToggleTypeEnumAccess().getNORMALEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_0, grammarAccess.getToggleTypeEnumAccess().getNORMALEnumLiteralDeclaration_0());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:8855:3: (enumLiteral_1= 'slow' )
+                    {
+                    // InternalChartDSL.g:8855:3: (enumLiteral_1= 'slow' )
+                    // InternalChartDSL.g:8856:4: enumLiteral_1= 'slow'
+                    {
+                    enumLiteral_1=(Token)match(input,140,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getToggleTypeEnumAccess().getSLOWEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_1, grammarAccess.getToggleTypeEnumAccess().getSLOWEnumLiteralDeclaration_1());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalChartDSL.g:8863:3: (enumLiteral_2= 'fast' )
+                    {
+                    // InternalChartDSL.g:8863:3: (enumLiteral_2= 'fast' )
+                    // InternalChartDSL.g:8864:4: enumLiteral_2= 'fast'
+                    {
+                    enumLiteral_2=(Token)match(input,141,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getToggleTypeEnumAccess().getFASTEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_2, grammarAccess.getToggleTypeEnumAccess().getFASTEnumLiteralDeclaration_2());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleToggleTypeEnum"
+
+
+    // $ANTLR start "ruleTooltipLocationEnum"
+    // InternalChartDSL.g:8874:1: ruleTooltipLocationEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'north' ) | (enumLiteral_1= 'north-east' ) | (enumLiteral_2= 'east' ) | (enumLiteral_3= 'south-east' ) | (enumLiteral_4= 'south' ) | (enumLiteral_5= 'south-west' ) | (enumLiteral_6= 'west' ) | (enumLiteral_7= 'north-west' ) ) ;
+    public final Enumerator ruleTooltipLocationEnum() 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;
+
+
+        	enterRule();
+
+        try {
+            // InternalChartDSL.g:8880:2: ( ( (enumLiteral_0= 'north' ) | (enumLiteral_1= 'north-east' ) | (enumLiteral_2= 'east' ) | (enumLiteral_3= 'south-east' ) | (enumLiteral_4= 'south' ) | (enumLiteral_5= 'south-west' ) | (enumLiteral_6= 'west' ) | (enumLiteral_7= 'north-west' ) ) )
+            // InternalChartDSL.g:8881:2: ( (enumLiteral_0= 'north' ) | (enumLiteral_1= 'north-east' ) | (enumLiteral_2= 'east' ) | (enumLiteral_3= 'south-east' ) | (enumLiteral_4= 'south' ) | (enumLiteral_5= 'south-west' ) | (enumLiteral_6= 'west' ) | (enumLiteral_7= 'north-west' ) )
+            {
+            // InternalChartDSL.g:8881:2: ( (enumLiteral_0= 'north' ) | (enumLiteral_1= 'north-east' ) | (enumLiteral_2= 'east' ) | (enumLiteral_3= 'south-east' ) | (enumLiteral_4= 'south' ) | (enumLiteral_5= 'south-west' ) | (enumLiteral_6= 'west' ) | (enumLiteral_7= 'north-west' ) )
+            int alt154=8;
+            switch ( input.LA(1) ) {
+            case 142:
+                {
+                alt154=1;
+                }
+                break;
+            case 143:
+                {
+                alt154=2;
+                }
+                break;
+            case 144:
+                {
+                alt154=3;
+                }
+                break;
+            case 145:
+                {
+                alt154=4;
+                }
+                break;
+            case 146:
+                {
+                alt154=5;
+                }
+                break;
+            case 147:
+                {
+                alt154=6;
+                }
+                break;
+            case 148:
+                {
+                alt154=7;
+                }
+                break;
+            case 149:
+                {
+                alt154=8;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 154, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt154) {
+                case 1 :
+                    // InternalChartDSL.g:8882:3: (enumLiteral_0= 'north' )
+                    {
+                    // InternalChartDSL.g:8882:3: (enumLiteral_0= 'north' )
+                    // InternalChartDSL.g:8883:4: enumLiteral_0= 'north'
+                    {
+                    enumLiteral_0=(Token)match(input,142,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTooltipLocationEnumAccess().getNORTHEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_0, grammarAccess.getTooltipLocationEnumAccess().getNORTHEnumLiteralDeclaration_0());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:8890:3: (enumLiteral_1= 'north-east' )
+                    {
+                    // InternalChartDSL.g:8890:3: (enumLiteral_1= 'north-east' )
+                    // InternalChartDSL.g:8891:4: enumLiteral_1= 'north-east'
+                    {
+                    enumLiteral_1=(Token)match(input,143,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTooltipLocationEnumAccess().getNORTH_EASTEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_1, grammarAccess.getTooltipLocationEnumAccess().getNORTH_EASTEnumLiteralDeclaration_1());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalChartDSL.g:8898:3: (enumLiteral_2= 'east' )
+                    {
+                    // InternalChartDSL.g:8898:3: (enumLiteral_2= 'east' )
+                    // InternalChartDSL.g:8899:4: enumLiteral_2= 'east'
+                    {
+                    enumLiteral_2=(Token)match(input,144,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTooltipLocationEnumAccess().getEASTEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_2, grammarAccess.getTooltipLocationEnumAccess().getEASTEnumLiteralDeclaration_2());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalChartDSL.g:8906:3: (enumLiteral_3= 'south-east' )
+                    {
+                    // InternalChartDSL.g:8906:3: (enumLiteral_3= 'south-east' )
+                    // InternalChartDSL.g:8907:4: enumLiteral_3= 'south-east'
+                    {
+                    enumLiteral_3=(Token)match(input,145,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTooltipLocationEnumAccess().getSOUTH_EASTEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_3, grammarAccess.getTooltipLocationEnumAccess().getSOUTH_EASTEnumLiteralDeclaration_3());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalChartDSL.g:8914:3: (enumLiteral_4= 'south' )
+                    {
+                    // InternalChartDSL.g:8914:3: (enumLiteral_4= 'south' )
+                    // InternalChartDSL.g:8915:4: enumLiteral_4= 'south'
+                    {
+                    enumLiteral_4=(Token)match(input,146,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTooltipLocationEnumAccess().getSOUTHEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_4, grammarAccess.getTooltipLocationEnumAccess().getSOUTHEnumLiteralDeclaration_4());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 6 :
+                    // InternalChartDSL.g:8922:3: (enumLiteral_5= 'south-west' )
+                    {
+                    // InternalChartDSL.g:8922:3: (enumLiteral_5= 'south-west' )
+                    // InternalChartDSL.g:8923:4: enumLiteral_5= 'south-west'
+                    {
+                    enumLiteral_5=(Token)match(input,147,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTooltipLocationEnumAccess().getSOUTH_WESTEnumLiteralDeclaration_5().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_5, grammarAccess.getTooltipLocationEnumAccess().getSOUTH_WESTEnumLiteralDeclaration_5());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 7 :
+                    // InternalChartDSL.g:8930:3: (enumLiteral_6= 'west' )
+                    {
+                    // InternalChartDSL.g:8930:3: (enumLiteral_6= 'west' )
+                    // InternalChartDSL.g:8931:4: enumLiteral_6= 'west'
+                    {
+                    enumLiteral_6=(Token)match(input,148,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTooltipLocationEnumAccess().getWESTEnumLiteralDeclaration_6().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_6, grammarAccess.getTooltipLocationEnumAccess().getWESTEnumLiteralDeclaration_6());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 8 :
+                    // InternalChartDSL.g:8938:3: (enumLiteral_7= 'north-west' )
+                    {
+                    // InternalChartDSL.g:8938:3: (enumLiteral_7= 'north-west' )
+                    // InternalChartDSL.g:8939:4: enumLiteral_7= 'north-west'
+                    {
+                    enumLiteral_7=(Token)match(input,149,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getTooltipLocationEnumAccess().getNORTH_WESTEnumLiteralDeclaration_7().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_7, grammarAccess.getTooltipLocationEnumAccess().getNORTH_WESTEnumLiteralDeclaration_7());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleTooltipLocationEnum"
+
+
+    // $ANTLR start "ruleRenderTypeEnum"
+    // InternalChartDSL.g:8949:1: ruleRenderTypeEnum returns [Enumerator current=null] : ( (enumLiteral_0= 'category' ) | (enumLiteral_1= 'linear' ) | (enumLiteral_2= 'date' ) | (enumLiteral_3= 'logarithmic' ) | (enumLiteral_4= 'pyramid' ) ) ;
+    public final Enumerator ruleRenderTypeEnum() 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;
+
+
+        	enterRule();
+
+        try {
+            // InternalChartDSL.g:8955:2: ( ( (enumLiteral_0= 'category' ) | (enumLiteral_1= 'linear' ) | (enumLiteral_2= 'date' ) | (enumLiteral_3= 'logarithmic' ) | (enumLiteral_4= 'pyramid' ) ) )
+            // InternalChartDSL.g:8956:2: ( (enumLiteral_0= 'category' ) | (enumLiteral_1= 'linear' ) | (enumLiteral_2= 'date' ) | (enumLiteral_3= 'logarithmic' ) | (enumLiteral_4= 'pyramid' ) )
+            {
+            // InternalChartDSL.g:8956:2: ( (enumLiteral_0= 'category' ) | (enumLiteral_1= 'linear' ) | (enumLiteral_2= 'date' ) | (enumLiteral_3= 'logarithmic' ) | (enumLiteral_4= 'pyramid' ) )
+            int alt155=5;
+            switch ( input.LA(1) ) {
+            case 150:
+                {
+                alt155=1;
+                }
+                break;
+            case 151:
+                {
+                alt155=2;
+                }
+                break;
+            case 152:
+                {
+                alt155=3;
+                }
+                break;
+            case 153:
+                {
+                alt155=4;
+                }
+                break;
+            case 154:
+                {
+                alt155=5;
+                }
+                break;
+            default:
+                if (state.backtracking>0) {state.failed=true; return current;}
+                NoViableAltException nvae =
+                    new NoViableAltException("", 155, 0, input);
+
+                throw nvae;
+            }
+
+            switch (alt155) {
+                case 1 :
+                    // InternalChartDSL.g:8957:3: (enumLiteral_0= 'category' )
+                    {
+                    // InternalChartDSL.g:8957:3: (enumLiteral_0= 'category' )
+                    // InternalChartDSL.g:8958:4: enumLiteral_0= 'category'
+                    {
+                    enumLiteral_0=(Token)match(input,150,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getRenderTypeEnumAccess().getCATEGORYEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_0, grammarAccess.getRenderTypeEnumAccess().getCATEGORYEnumLiteralDeclaration_0());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 2 :
+                    // InternalChartDSL.g:8965:3: (enumLiteral_1= 'linear' )
+                    {
+                    // InternalChartDSL.g:8965:3: (enumLiteral_1= 'linear' )
+                    // InternalChartDSL.g:8966:4: enumLiteral_1= 'linear'
+                    {
+                    enumLiteral_1=(Token)match(input,151,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getRenderTypeEnumAccess().getLINEAREnumLiteralDeclaration_1().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_1, grammarAccess.getRenderTypeEnumAccess().getLINEAREnumLiteralDeclaration_1());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 3 :
+                    // InternalChartDSL.g:8973:3: (enumLiteral_2= 'date' )
+                    {
+                    // InternalChartDSL.g:8973:3: (enumLiteral_2= 'date' )
+                    // InternalChartDSL.g:8974:4: enumLiteral_2= 'date'
+                    {
+                    enumLiteral_2=(Token)match(input,152,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getRenderTypeEnumAccess().getDATEEnumLiteralDeclaration_2().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_2, grammarAccess.getRenderTypeEnumAccess().getDATEEnumLiteralDeclaration_2());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 4 :
+                    // InternalChartDSL.g:8981:3: (enumLiteral_3= 'logarithmic' )
+                    {
+                    // InternalChartDSL.g:8981:3: (enumLiteral_3= 'logarithmic' )
+                    // InternalChartDSL.g:8982:4: enumLiteral_3= 'logarithmic'
+                    {
+                    enumLiteral_3=(Token)match(input,153,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getRenderTypeEnumAccess().getLOGEnumLiteralDeclaration_3().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_3, grammarAccess.getRenderTypeEnumAccess().getLOGEnumLiteralDeclaration_3());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+                case 5 :
+                    // InternalChartDSL.g:8989:3: (enumLiteral_4= 'pyramid' )
+                    {
+                    // InternalChartDSL.g:8989:3: (enumLiteral_4= 'pyramid' )
+                    // InternalChartDSL.g:8990:4: enumLiteral_4= 'pyramid'
+                    {
+                    enumLiteral_4=(Token)match(input,154,FOLLOW_2); if (state.failed) return current;
+                    if ( state.backtracking==0 ) {
+
+                      				current = grammarAccess.getRenderTypeEnumAccess().getPYRAMIDEnumLiteralDeclaration_4().getEnumLiteral().getInstance();
+                      				newLeafNode(enumLiteral_4, grammarAccess.getRenderTypeEnumAccess().getPYRAMIDEnumLiteralDeclaration_4());
+                      			
+                    }
+
+                    }
+
+
+                    }
+                    break;
+
+            }
+
+
+            }
+
+            if ( state.backtracking==0 ) {
+
+              	leaveRule();
+
+            }
+        }
+
+            catch (RecognitionException re) {
+                recover(input,re);
+                appendSkippedTokens();
+            }
+        finally {
+        }
+        return current;
+    }
+    // $ANTLR end "ruleRenderTypeEnum"
+
+    // $ANTLR start synpred1_InternalChartDSL
+    public final void synpred1_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:2172:5: ( '(' )
+        // InternalChartDSL.g:2172:6: '('
+        {
+        match(input,71,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred1_InternalChartDSL
+
+    // $ANTLR start synpred2_InternalChartDSL
+    public final void synpred2_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:2181:7: ( ( ( ( ruleValidID ) ) '=' ) )
+        // InternalChartDSL.g:2181:8: ( ( ( ruleValidID ) ) '=' )
+        {
+        // InternalChartDSL.g:2181:8: ( ( ( ruleValidID ) ) '=' )
+        // InternalChartDSL.g:2182:8: ( ( ruleValidID ) ) '='
+        {
+        // InternalChartDSL.g:2182:8: ( ( ruleValidID ) )
+        // InternalChartDSL.g:2183:9: ( ruleValidID )
+        {
+        // InternalChartDSL.g:2183:9: ( ruleValidID )
+        // InternalChartDSL.g:2184:10: ruleValidID
+        {
+        pushFollow(FOLLOW_49);
+        ruleValidID();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        match(input,74,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred2_InternalChartDSL
+
+    // $ANTLR start synpred5_InternalChartDSL
+    public final void synpred5_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:2361:5: ( ( () '#' '[' ) )
+        // InternalChartDSL.g:2361:6: ( () '#' '[' )
+        {
+        // InternalChartDSL.g:2361:6: ( () '#' '[' )
+        // InternalChartDSL.g:2362:6: () '#' '['
+        {
+        // InternalChartDSL.g:2362:6: ()
+        // InternalChartDSL.g:2363:6: 
+        {
+        }
+
+        match(input,75,FOLLOW_51); if (state.failed) return ;
+        match(input,76,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred5_InternalChartDSL
+
+    // $ANTLR start synpred6_InternalChartDSL
+    public final void synpred6_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:2503:5: ( ( () '#' '[' ) )
+        // InternalChartDSL.g:2503:6: ( () '#' '[' )
+        {
+        // InternalChartDSL.g:2503:6: ( () '#' '[' )
+        // InternalChartDSL.g:2504:6: () '#' '['
+        {
+        // InternalChartDSL.g:2504:6: ()
+        // InternalChartDSL.g:2505:6: 
+        {
+        }
+
+        match(input,75,FOLLOW_51); if (state.failed) return ;
+        match(input,76,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred6_InternalChartDSL
+
+    // $ANTLR start synpred7_InternalChartDSL
+    public final void synpred7_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:2731:6: ( ( () ( ( ruleOpMultiAssign ) ) ) )
+        // InternalChartDSL.g:2731:7: ( () ( ( ruleOpMultiAssign ) ) )
+        {
+        // InternalChartDSL.g:2731:7: ( () ( ( ruleOpMultiAssign ) ) )
+        // InternalChartDSL.g:2732:7: () ( ( ruleOpMultiAssign ) )
+        {
+        // InternalChartDSL.g:2732:7: ()
+        // InternalChartDSL.g:2733:7: 
+        {
+        }
+
+        // InternalChartDSL.g:2734:7: ( ( ruleOpMultiAssign ) )
+        // InternalChartDSL.g:2735:8: ( ruleOpMultiAssign )
+        {
+        // InternalChartDSL.g:2735:8: ( ruleOpMultiAssign )
+        // InternalChartDSL.g:2736:9: ruleOpMultiAssign
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpMultiAssign();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred7_InternalChartDSL
+
+    // $ANTLR start synpred8_InternalChartDSL
+    public final void synpred8_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:2925:5: ( ( () ( ( ruleOpOr ) ) ) )
+        // InternalChartDSL.g:2925:6: ( () ( ( ruleOpOr ) ) )
+        {
+        // InternalChartDSL.g:2925:6: ( () ( ( ruleOpOr ) ) )
+        // InternalChartDSL.g:2926:6: () ( ( ruleOpOr ) )
+        {
+        // InternalChartDSL.g:2926:6: ()
+        // InternalChartDSL.g:2927:6: 
+        {
+        }
+
+        // InternalChartDSL.g:2928:6: ( ( ruleOpOr ) )
+        // InternalChartDSL.g:2929:7: ( ruleOpOr )
+        {
+        // InternalChartDSL.g:2929:7: ( ruleOpOr )
+        // InternalChartDSL.g:2930:8: ruleOpOr
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpOr();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred8_InternalChartDSL
+
+    // $ANTLR start synpred9_InternalChartDSL
+    public final void synpred9_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:3032:5: ( ( () ( ( ruleOpAnd ) ) ) )
+        // InternalChartDSL.g:3032:6: ( () ( ( ruleOpAnd ) ) )
+        {
+        // InternalChartDSL.g:3032:6: ( () ( ( ruleOpAnd ) ) )
+        // InternalChartDSL.g:3033:6: () ( ( ruleOpAnd ) )
+        {
+        // InternalChartDSL.g:3033:6: ()
+        // InternalChartDSL.g:3034:6: 
+        {
+        }
+
+        // InternalChartDSL.g:3035:6: ( ( ruleOpAnd ) )
+        // InternalChartDSL.g:3036:7: ( ruleOpAnd )
+        {
+        // InternalChartDSL.g:3036:7: ( ruleOpAnd )
+        // InternalChartDSL.g:3037:8: ruleOpAnd
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpAnd();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred9_InternalChartDSL
+
+    // $ANTLR start synpred10_InternalChartDSL
+    public final void synpred10_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:3139:5: ( ( () ( ( ruleOpEquality ) ) ) )
+        // InternalChartDSL.g:3139:6: ( () ( ( ruleOpEquality ) ) )
+        {
+        // InternalChartDSL.g:3139:6: ( () ( ( ruleOpEquality ) ) )
+        // InternalChartDSL.g:3140:6: () ( ( ruleOpEquality ) )
+        {
+        // InternalChartDSL.g:3140:6: ()
+        // InternalChartDSL.g:3141:6: 
+        {
+        }
+
+        // InternalChartDSL.g:3142:6: ( ( ruleOpEquality ) )
+        // InternalChartDSL.g:3143:7: ( ruleOpEquality )
+        {
+        // InternalChartDSL.g:3143:7: ( ruleOpEquality )
+        // InternalChartDSL.g:3144:8: ruleOpEquality
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpEquality();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred10_InternalChartDSL
+
+    // $ANTLR start synpred11_InternalChartDSL
+    public final void synpred11_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:3267:6: ( ( () 'instanceof' ) )
+        // InternalChartDSL.g:3267:7: ( () 'instanceof' )
+        {
+        // InternalChartDSL.g:3267:7: ( () 'instanceof' )
+        // InternalChartDSL.g:3268:7: () 'instanceof'
+        {
+        // InternalChartDSL.g:3268:7: ()
+        // InternalChartDSL.g:3269:7: 
+        {
+        }
+
+        match(input,92,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred11_InternalChartDSL
+
+    // $ANTLR start synpred12_InternalChartDSL
+    public final void synpred12_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:3310:6: ( ( () ( ( ruleOpCompare ) ) ) )
+        // InternalChartDSL.g:3310:7: ( () ( ( ruleOpCompare ) ) )
+        {
+        // InternalChartDSL.g:3310:7: ( () ( ( ruleOpCompare ) ) )
+        // InternalChartDSL.g:3311:7: () ( ( ruleOpCompare ) )
+        {
+        // InternalChartDSL.g:3311:7: ()
+        // InternalChartDSL.g:3312:7: 
+        {
+        }
+
+        // InternalChartDSL.g:3313:7: ( ( ruleOpCompare ) )
+        // InternalChartDSL.g:3314:8: ( ruleOpCompare )
+        {
+        // InternalChartDSL.g:3314:8: ( ruleOpCompare )
+        // InternalChartDSL.g:3315:9: ruleOpCompare
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpCompare();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred12_InternalChartDSL
+
+    // $ANTLR start synpred13_InternalChartDSL
+    public final void synpred13_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:3445:5: ( ( () ( ( ruleOpOther ) ) ) )
+        // InternalChartDSL.g:3445:6: ( () ( ( ruleOpOther ) ) )
+        {
+        // InternalChartDSL.g:3445:6: ( () ( ( ruleOpOther ) ) )
+        // InternalChartDSL.g:3446:6: () ( ( ruleOpOther ) )
+        {
+        // InternalChartDSL.g:3446:6: ()
+        // InternalChartDSL.g:3447:6: 
+        {
+        }
+
+        // InternalChartDSL.g:3448:6: ( ( ruleOpOther ) )
+        // InternalChartDSL.g:3449:7: ( ruleOpOther )
+        {
+        // InternalChartDSL.g:3449:7: ( ruleOpOther )
+        // InternalChartDSL.g:3450:8: ruleOpOther
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpOther();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred13_InternalChartDSL
+
+    // $ANTLR start synpred14_InternalChartDSL
+    public final void synpred14_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:3565:6: ( ( '>' '>' ) )
+        // InternalChartDSL.g:3565:7: ( '>' '>' )
+        {
+        // InternalChartDSL.g:3565:7: ( '>' '>' )
+        // InternalChartDSL.g:3566:7: '>' '>'
+        {
+        match(input,84,FOLLOW_66); if (state.failed) return ;
+        match(input,84,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred14_InternalChartDSL
+
+    // $ANTLR start synpred15_InternalChartDSL
+    public final void synpred15_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:3600:6: ( ( '<' '<' ) )
+        // InternalChartDSL.g:3600:7: ( '<' '<' )
+        {
+        // InternalChartDSL.g:3600:7: ( '<' '<' )
+        // InternalChartDSL.g:3601:7: '<' '<'
+        {
+        match(input,83,FOLLOW_56); if (state.failed) return ;
+        match(input,83,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred15_InternalChartDSL
+
+    // $ANTLR start synpred16_InternalChartDSL
+    public final void synpred16_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:3673:5: ( ( () ( ( ruleOpAdd ) ) ) )
+        // InternalChartDSL.g:3673:6: ( () ( ( ruleOpAdd ) ) )
+        {
+        // InternalChartDSL.g:3673:6: ( () ( ( ruleOpAdd ) ) )
+        // InternalChartDSL.g:3674:6: () ( ( ruleOpAdd ) )
+        {
+        // InternalChartDSL.g:3674:6: ()
+        // InternalChartDSL.g:3675:6: 
+        {
+        }
+
+        // InternalChartDSL.g:3676:6: ( ( ruleOpAdd ) )
+        // InternalChartDSL.g:3677:7: ( ruleOpAdd )
+        {
+        // InternalChartDSL.g:3677:7: ( ruleOpAdd )
+        // InternalChartDSL.g:3678:8: ruleOpAdd
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpAdd();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred16_InternalChartDSL
+
+    // $ANTLR start synpred17_InternalChartDSL
+    public final void synpred17_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:3788:5: ( ( () ( ( ruleOpMulti ) ) ) )
+        // InternalChartDSL.g:3788:6: ( () ( ( ruleOpMulti ) ) )
+        {
+        // InternalChartDSL.g:3788:6: ( () ( ( ruleOpMulti ) ) )
+        // InternalChartDSL.g:3789:6: () ( ( ruleOpMulti ) )
+        {
+        // InternalChartDSL.g:3789:6: ()
+        // InternalChartDSL.g:3790:6: 
+        {
+        }
+
+        // InternalChartDSL.g:3791:6: ( ( ruleOpMulti ) )
+        // InternalChartDSL.g:3792:7: ( ruleOpMulti )
+        {
+        // InternalChartDSL.g:3792:7: ( ruleOpMulti )
+        // InternalChartDSL.g:3793:8: ruleOpMulti
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpMulti();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred17_InternalChartDSL
+
+    // $ANTLR start synpred18_InternalChartDSL
+    public final void synpred18_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:4023:5: ( ( () 'as' ) )
+        // InternalChartDSL.g:4023:6: ( () 'as' )
+        {
+        // InternalChartDSL.g:4023:6: ( () 'as' )
+        // InternalChartDSL.g:4024:6: () 'as'
+        {
+        // InternalChartDSL.g:4024:6: ()
+        // InternalChartDSL.g:4025:6: 
+        {
+        }
+
+        match(input,18,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred18_InternalChartDSL
+
+    // $ANTLR start synpred19_InternalChartDSL
+    public final void synpred19_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:4091:4: ( ( () ( ( ruleOpPostfix ) ) ) )
+        // InternalChartDSL.g:4091:5: ( () ( ( ruleOpPostfix ) ) )
+        {
+        // InternalChartDSL.g:4091:5: ( () ( ( ruleOpPostfix ) ) )
+        // InternalChartDSL.g:4092:5: () ( ( ruleOpPostfix ) )
+        {
+        // InternalChartDSL.g:4092:5: ()
+        // InternalChartDSL.g:4093:5: 
+        {
+        }
+
+        // InternalChartDSL.g:4094:5: ( ( ruleOpPostfix ) )
+        // InternalChartDSL.g:4095:6: ( ruleOpPostfix )
+        {
+        // InternalChartDSL.g:4095:6: ( ruleOpPostfix )
+        // InternalChartDSL.g:4096:7: ruleOpPostfix
+        {
+        pushFollow(FOLLOW_2);
+        ruleOpPostfix();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred19_InternalChartDSL
+
+    // $ANTLR start synpred20_InternalChartDSL
+    public final void synpred20_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:4187:6: ( ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign ) )
+        // InternalChartDSL.g:4187:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+        {
+        // InternalChartDSL.g:4187:7: ( () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign )
+        // InternalChartDSL.g:4188:7: () ( '.' | ( ( '::' ) ) ) ( ( ruleFeatureCallID ) ) ruleOpSingleAssign
+        {
+        // InternalChartDSL.g:4188:7: ()
+        // InternalChartDSL.g:4189:7: 
+        {
+        }
+
+        // InternalChartDSL.g:4190:7: ( '.' | ( ( '::' ) ) )
+        int alt156=2;
+        int LA156_0 = input.LA(1);
+
+        if ( (LA156_0==106) ) {
+            alt156=1;
+        }
+        else if ( (LA156_0==107) ) {
+            alt156=2;
+        }
+        else {
+            if (state.backtracking>0) {state.failed=true; return ;}
+            NoViableAltException nvae =
+                new NoViableAltException("", 156, 0, input);
+
+            throw nvae;
+        }
+        switch (alt156) {
+            case 1 :
+                // InternalChartDSL.g:4191:8: '.'
+                {
+                match(input,106,FOLLOW_73); if (state.failed) return ;
+
+                }
+                break;
+            case 2 :
+                // InternalChartDSL.g:4193:8: ( ( '::' ) )
+                {
+                // InternalChartDSL.g:4193:8: ( ( '::' ) )
+                // InternalChartDSL.g:4194:9: ( '::' )
+                {
+                // InternalChartDSL.g:4194:9: ( '::' )
+                // InternalChartDSL.g:4195:10: '::'
+                {
+                match(input,107,FOLLOW_73); if (state.failed) return ;
+
+                }
+
+
+                }
+
+
+                }
+                break;
+
+        }
+
+        // InternalChartDSL.g:4199:7: ( ( ruleFeatureCallID ) )
+        // InternalChartDSL.g:4200:8: ( ruleFeatureCallID )
+        {
+        // InternalChartDSL.g:4200:8: ( ruleFeatureCallID )
+        // InternalChartDSL.g:4201:9: ruleFeatureCallID
+        {
+        pushFollow(FOLLOW_49);
+        ruleFeatureCallID();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        pushFollow(FOLLOW_2);
+        ruleOpSingleAssign();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred20_InternalChartDSL
+
+    // $ANTLR start synpred21_InternalChartDSL
+    public final void synpred21_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:4284:6: ( ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) ) )
+        // InternalChartDSL.g:4284:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
+        {
+        // InternalChartDSL.g:4284:7: ( () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) ) )
+        // InternalChartDSL.g:4285:7: () ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
+        {
+        // InternalChartDSL.g:4285:7: ()
+        // InternalChartDSL.g:4286:7: 
+        {
+        }
+
+        // InternalChartDSL.g:4287:7: ( '.' | ( ( '?.' ) ) | ( ( '::' ) ) )
+        int alt157=3;
+        switch ( input.LA(1) ) {
+        case 106:
+            {
+            alt157=1;
+            }
+            break;
+        case 108:
+            {
+            alt157=2;
+            }
+            break;
+        case 107:
+            {
+            alt157=3;
+            }
+            break;
+        default:
+            if (state.backtracking>0) {state.failed=true; return ;}
+            NoViableAltException nvae =
+                new NoViableAltException("", 157, 0, input);
+
+            throw nvae;
+        }
+
+        switch (alt157) {
+            case 1 :
+                // InternalChartDSL.g:4288:8: '.'
+                {
+                match(input,106,FOLLOW_2); if (state.failed) return ;
+
+                }
+                break;
+            case 2 :
+                // InternalChartDSL.g:4290:8: ( ( '?.' ) )
+                {
+                // InternalChartDSL.g:4290:8: ( ( '?.' ) )
+                // InternalChartDSL.g:4291:9: ( '?.' )
+                {
+                // InternalChartDSL.g:4291:9: ( '?.' )
+                // InternalChartDSL.g:4292:10: '?.'
+                {
+                match(input,108,FOLLOW_2); if (state.failed) return ;
+
+                }
+
+
+                }
+
+
+                }
+                break;
+            case 3 :
+                // InternalChartDSL.g:4296:8: ( ( '::' ) )
+                {
+                // InternalChartDSL.g:4296:8: ( ( '::' ) )
+                // InternalChartDSL.g:4297:9: ( '::' )
+                {
+                // InternalChartDSL.g:4297:9: ( '::' )
+                // InternalChartDSL.g:4298:10: '::'
+                {
+                match(input,107,FOLLOW_2); if (state.failed) return ;
+
+                }
+
+
+                }
+
+
+                }
+                break;
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred21_InternalChartDSL
+
+    // $ANTLR start synpred22_InternalChartDSL
+    public final void synpred22_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:4422:7: ( ( '(' ) )
+        // InternalChartDSL.g:4422:8: ( '(' )
+        {
+        // InternalChartDSL.g:4422:8: ( '(' )
+        // InternalChartDSL.g:4423:8: '('
+        {
+        match(input,71,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred22_InternalChartDSL
+
+    // $ANTLR start synpred23_InternalChartDSL
+    public final void synpred23_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:4441:8: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalChartDSL.g:4441:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        {
+        // InternalChartDSL.g:4441:9: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalChartDSL.g:4442:9: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        {
+        // InternalChartDSL.g:4442:9: ()
+        // InternalChartDSL.g:4443:9: 
+        {
+        }
+
+        // InternalChartDSL.g:4444:9: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt159=2;
+        int LA159_0 = input.LA(1);
+
+        if ( (LA159_0==RULE_ID||LA159_0==71||LA159_0==96) ) {
+            alt159=1;
+        }
+        switch (alt159) {
+            case 1 :
+                // InternalChartDSL.g:4445:10: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                {
+                // InternalChartDSL.g:4445:10: ( ( ruleJvmFormalParameter ) )
+                // InternalChartDSL.g:4446:11: ( ruleJvmFormalParameter )
+                {
+                // InternalChartDSL.g:4446:11: ( ruleJvmFormalParameter )
+                // InternalChartDSL.g:4447:12: ruleJvmFormalParameter
+                {
+                pushFollow(FOLLOW_83);
+                ruleJvmFormalParameter();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+
+
+                }
+
+                // InternalChartDSL.g:4450:10: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop158:
+                do {
+                    int alt158=2;
+                    int LA158_0 = input.LA(1);
+
+                    if ( (LA158_0==72) ) {
+                        alt158=1;
+                    }
+
+
+                    switch (alt158) {
+                	case 1 :
+                	    // InternalChartDSL.g:4451:11: ',' ( ( ruleJvmFormalParameter ) )
+                	    {
+                	    match(input,72,FOLLOW_63); if (state.failed) return ;
+                	    // InternalChartDSL.g:4452:11: ( ( ruleJvmFormalParameter ) )
+                	    // InternalChartDSL.g:4453:12: ( ruleJvmFormalParameter )
+                	    {
+                	    // InternalChartDSL.g:4453:12: ( ruleJvmFormalParameter )
+                	    // InternalChartDSL.g:4454:13: ruleJvmFormalParameter
+                	    {
+                	    pushFollow(FOLLOW_83);
+                	    ruleJvmFormalParameter();
+
+                	    state._fsp--;
+                	    if (state.failed) return ;
+
+                	    }
+
+
+                	    }
+
+
+                	    }
+                	    break;
+
+                	default :
+                	    break loop158;
+                    }
+                } while (true);
+
+
+                }
+                break;
+
+        }
+
+        // InternalChartDSL.g:4459:9: ( ( '|' ) )
+        // InternalChartDSL.g:4460:10: ( '|' )
+        {
+        // InternalChartDSL.g:4460:10: ( '|' )
+        // InternalChartDSL.g:4461:11: '|'
+        {
+        match(input,109,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred23_InternalChartDSL
+
+    // $ANTLR start synpred24_InternalChartDSL
+    public final void synpred24_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:4538:6: ( ( () '[' ) )
+        // InternalChartDSL.g:4538:7: ( () '[' )
+        {
+        // InternalChartDSL.g:4538:7: ( () '[' )
+        // InternalChartDSL.g:4539:7: () '['
+        {
+        // InternalChartDSL.g:4539:7: ()
+        // InternalChartDSL.g:4540:7: 
+        {
+        }
+
+        match(input,76,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred24_InternalChartDSL
+
+    // $ANTLR start synpred25_InternalChartDSL
+    public final void synpred25_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:4611:4: ( ( () 'synchronized' '(' ) )
+        // InternalChartDSL.g:4611:5: ( () 'synchronized' '(' )
+        {
+        // InternalChartDSL.g:4611:5: ( () 'synchronized' '(' )
+        // InternalChartDSL.g:4612:5: () 'synchronized' '('
+        {
+        // InternalChartDSL.g:4612:5: ()
+        // InternalChartDSL.g:4613:5: 
+        {
+        }
+
+        match(input,132,FOLLOW_88); if (state.failed) return ;
+        match(input,71,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred25_InternalChartDSL
+
+    // $ANTLR start synpred26_InternalChartDSL
+    public final void synpred26_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:4656:4: ( ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalChartDSL.g:4656:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        {
+        // InternalChartDSL.g:4656:5: ( () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalChartDSL.g:4657:5: () 'for' '(' ( ( ruleJvmFormalParameter ) ) ':'
+        {
+        // InternalChartDSL.g:4657:5: ()
+        // InternalChartDSL.g:4658:5: 
+        {
+        }
+
+        match(input,116,FOLLOW_88); if (state.failed) return ;
+        match(input,71,FOLLOW_63); if (state.failed) return ;
+        // InternalChartDSL.g:4661:5: ( ( ruleJvmFormalParameter ) )
+        // InternalChartDSL.g:4662:6: ( ruleJvmFormalParameter )
+        {
+        // InternalChartDSL.g:4662:6: ( ruleJvmFormalParameter )
+        // InternalChartDSL.g:4663:7: ruleJvmFormalParameter
+        {
+        pushFollow(FOLLOW_91);
+        ruleJvmFormalParameter();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        match(input,113,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred26_InternalChartDSL
+
+    // $ANTLR start synpred27_InternalChartDSL
+    public final void synpred27_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:4770:4: ( ( () '[' ) )
+        // InternalChartDSL.g:4770:5: ( () '[' )
+        {
+        // InternalChartDSL.g:4770:5: ( () '[' )
+        // InternalChartDSL.g:4771:5: () '['
+        {
+        // InternalChartDSL.g:4771:5: ()
+        // InternalChartDSL.g:4772:5: 
+        {
+        }
+
+        match(input,76,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred27_InternalChartDSL
+
+    // $ANTLR start synpred29_InternalChartDSL
+    public final void synpred29_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:5075:4: ( ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalChartDSL.g:5075:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        {
+        // InternalChartDSL.g:5075:5: ( ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalChartDSL.g:5076:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        {
+        // InternalChartDSL.g:5076:5: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt161=2;
+        int LA161_0 = input.LA(1);
+
+        if ( (LA161_0==RULE_ID||LA161_0==71||LA161_0==96) ) {
+            alt161=1;
+        }
+        switch (alt161) {
+            case 1 :
+                // InternalChartDSL.g:5077:6: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                {
+                // InternalChartDSL.g:5077:6: ( ( ruleJvmFormalParameter ) )
+                // InternalChartDSL.g:5078:7: ( ruleJvmFormalParameter )
+                {
+                // InternalChartDSL.g:5078:7: ( ruleJvmFormalParameter )
+                // InternalChartDSL.g:5079:8: ruleJvmFormalParameter
+                {
+                pushFollow(FOLLOW_83);
+                ruleJvmFormalParameter();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+
+
+                }
+
+                // InternalChartDSL.g:5082:6: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop160:
+                do {
+                    int alt160=2;
+                    int LA160_0 = input.LA(1);
+
+                    if ( (LA160_0==72) ) {
+                        alt160=1;
+                    }
+
+
+                    switch (alt160) {
+                	case 1 :
+                	    // InternalChartDSL.g:5083:7: ',' ( ( ruleJvmFormalParameter ) )
+                	    {
+                	    match(input,72,FOLLOW_63); if (state.failed) return ;
+                	    // InternalChartDSL.g:5084:7: ( ( ruleJvmFormalParameter ) )
+                	    // InternalChartDSL.g:5085:8: ( ruleJvmFormalParameter )
+                	    {
+                	    // InternalChartDSL.g:5085:8: ( ruleJvmFormalParameter )
+                	    // InternalChartDSL.g:5086:9: ruleJvmFormalParameter
+                	    {
+                	    pushFollow(FOLLOW_83);
+                	    ruleJvmFormalParameter();
+
+                	    state._fsp--;
+                	    if (state.failed) return ;
+
+                	    }
+
+
+                	    }
+
+
+                	    }
+                	    break;
+
+                	default :
+                	    break loop160;
+                    }
+                } while (true);
+
+
+                }
+                break;
+
+        }
+
+        // InternalChartDSL.g:5091:5: ( ( '|' ) )
+        // InternalChartDSL.g:5092:6: ( '|' )
+        {
+        // InternalChartDSL.g:5092:6: ( '|' )
+        // InternalChartDSL.g:5093:7: '|'
+        {
+        match(input,109,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred29_InternalChartDSL
+
+    // $ANTLR start synpred31_InternalChartDSL
+    public final void synpred31_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:5484:5: ( 'else' )
+        // InternalChartDSL.g:5484:6: 'else'
+        {
+        match(input,111,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred31_InternalChartDSL
+
+    // $ANTLR start synpred32_InternalChartDSL
+    public final void synpred32_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:5543:6: ( ( '(' ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalChartDSL.g:5543:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        {
+        // InternalChartDSL.g:5543:7: ( '(' ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalChartDSL.g:5544:7: '(' ( ( ruleJvmFormalParameter ) ) ':'
+        {
+        match(input,71,FOLLOW_63); if (state.failed) return ;
+        // InternalChartDSL.g:5545:7: ( ( ruleJvmFormalParameter ) )
+        // InternalChartDSL.g:5546:8: ( ruleJvmFormalParameter )
+        {
+        // InternalChartDSL.g:5546:8: ( ruleJvmFormalParameter )
+        // InternalChartDSL.g:5547:9: ruleJvmFormalParameter
+        {
+        pushFollow(FOLLOW_91);
+        ruleJvmFormalParameter();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        match(input,113,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred32_InternalChartDSL
+
+    // $ANTLR start synpred33_InternalChartDSL
+    public final void synpred33_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:5610:6: ( ( ( ( ruleJvmFormalParameter ) ) ':' ) )
+        // InternalChartDSL.g:5610:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
+        {
+        // InternalChartDSL.g:5610:7: ( ( ( ruleJvmFormalParameter ) ) ':' )
+        // InternalChartDSL.g:5611:7: ( ( ruleJvmFormalParameter ) ) ':'
+        {
+        // InternalChartDSL.g:5611:7: ( ( ruleJvmFormalParameter ) )
+        // InternalChartDSL.g:5612:8: ( ruleJvmFormalParameter )
+        {
+        // InternalChartDSL.g:5612:8: ( ruleJvmFormalParameter )
+        // InternalChartDSL.g:5613:9: ruleJvmFormalParameter
+        {
+        pushFollow(FOLLOW_91);
+        ruleJvmFormalParameter();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        match(input,113,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred33_InternalChartDSL
+
+    // $ANTLR start synpred35_InternalChartDSL
+    public final void synpred35_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:6428:5: ( ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) ) )
+        // InternalChartDSL.g:6428:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
+        {
+        // InternalChartDSL.g:6428:6: ( ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) ) )
+        // InternalChartDSL.g:6429:6: ( ( ruleJvmTypeReference ) ) ( ( ruleValidID ) )
+        {
+        // InternalChartDSL.g:6429:6: ( ( ruleJvmTypeReference ) )
+        // InternalChartDSL.g:6430:7: ( ruleJvmTypeReference )
+        {
+        // InternalChartDSL.g:6430:7: ( ruleJvmTypeReference )
+        // InternalChartDSL.g:6431:8: ruleJvmTypeReference
+        {
+        pushFollow(FOLLOW_4);
+        ruleJvmTypeReference();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+        // InternalChartDSL.g:6434:6: ( ( ruleValidID ) )
+        // InternalChartDSL.g:6435:7: ( ruleValidID )
+        {
+        // InternalChartDSL.g:6435:7: ( ruleValidID )
+        // InternalChartDSL.g:6436:8: ruleValidID
+        {
+        pushFollow(FOLLOW_2);
+        ruleValidID();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred35_InternalChartDSL
+
+    // $ANTLR start synpred36_InternalChartDSL
+    public final void synpred36_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:6740:5: ( ( '(' ) )
+        // InternalChartDSL.g:6740:6: ( '(' )
+        {
+        // InternalChartDSL.g:6740:6: ( '(' )
+        // InternalChartDSL.g:6741:6: '('
+        {
+        match(input,71,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred36_InternalChartDSL
+
+    // $ANTLR start synpred37_InternalChartDSL
+    public final void synpred37_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:6759:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalChartDSL.g:6759:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        {
+        // InternalChartDSL.g:6759:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalChartDSL.g:6760:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        {
+        // InternalChartDSL.g:6760:7: ()
+        // InternalChartDSL.g:6761:7: 
+        {
+        }
+
+        // InternalChartDSL.g:6762:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt165=2;
+        int LA165_0 = input.LA(1);
+
+        if ( (LA165_0==RULE_ID||LA165_0==71||LA165_0==96) ) {
+            alt165=1;
+        }
+        switch (alt165) {
+            case 1 :
+                // InternalChartDSL.g:6763:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                {
+                // InternalChartDSL.g:6763:8: ( ( ruleJvmFormalParameter ) )
+                // InternalChartDSL.g:6764:9: ( ruleJvmFormalParameter )
+                {
+                // InternalChartDSL.g:6764:9: ( ruleJvmFormalParameter )
+                // InternalChartDSL.g:6765:10: ruleJvmFormalParameter
+                {
+                pushFollow(FOLLOW_83);
+                ruleJvmFormalParameter();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+
+
+                }
+
+                // InternalChartDSL.g:6768:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop164:
+                do {
+                    int alt164=2;
+                    int LA164_0 = input.LA(1);
+
+                    if ( (LA164_0==72) ) {
+                        alt164=1;
+                    }
+
+
+                    switch (alt164) {
+                	case 1 :
+                	    // InternalChartDSL.g:6769:9: ',' ( ( ruleJvmFormalParameter ) )
+                	    {
+                	    match(input,72,FOLLOW_63); if (state.failed) return ;
+                	    // InternalChartDSL.g:6770:9: ( ( ruleJvmFormalParameter ) )
+                	    // InternalChartDSL.g:6771:10: ( ruleJvmFormalParameter )
+                	    {
+                	    // InternalChartDSL.g:6771:10: ( ruleJvmFormalParameter )
+                	    // InternalChartDSL.g:6772:11: ruleJvmFormalParameter
+                	    {
+                	    pushFollow(FOLLOW_83);
+                	    ruleJvmFormalParameter();
+
+                	    state._fsp--;
+                	    if (state.failed) return ;
+
+                	    }
+
+
+                	    }
+
+
+                	    }
+                	    break;
+
+                	default :
+                	    break loop164;
+                    }
+                } while (true);
+
+
+                }
+                break;
+
+        }
+
+        // InternalChartDSL.g:6777:7: ( ( '|' ) )
+        // InternalChartDSL.g:6778:8: ( '|' )
+        {
+        // InternalChartDSL.g:6778:8: ( '|' )
+        // InternalChartDSL.g:6779:9: '|'
+        {
+        match(input,109,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred37_InternalChartDSL
+
+    // $ANTLR start synpred38_InternalChartDSL
+    public final void synpred38_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:6856:4: ( ( () '[' ) )
+        // InternalChartDSL.g:6856:5: ( () '[' )
+        {
+        // InternalChartDSL.g:6856:5: ( () '[' )
+        // InternalChartDSL.g:6857:5: () '['
+        {
+        // InternalChartDSL.g:6857:5: ()
+        // InternalChartDSL.g:6858:5: 
+        {
+        }
+
+        match(input,76,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred38_InternalChartDSL
+
+    // $ANTLR start synpred39_InternalChartDSL
+    public final void synpred39_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:7016:5: ( '<' )
+        // InternalChartDSL.g:7016:6: '<'
+        {
+        match(input,83,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred39_InternalChartDSL
+
+    // $ANTLR start synpred40_InternalChartDSL
+    public final void synpred40_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:7073:5: ( ( '(' ) )
+        // InternalChartDSL.g:7073:6: ( '(' )
+        {
+        // InternalChartDSL.g:7073:6: ( '(' )
+        // InternalChartDSL.g:7074:6: '('
+        {
+        match(input,71,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred40_InternalChartDSL
+
+    // $ANTLR start synpred41_InternalChartDSL
+    public final void synpred41_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:7092:6: ( ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) ) )
+        // InternalChartDSL.g:7092:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        {
+        // InternalChartDSL.g:7092:7: ( () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) ) )
+        // InternalChartDSL.g:7093:7: () ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )? ( ( '|' ) )
+        {
+        // InternalChartDSL.g:7093:7: ()
+        // InternalChartDSL.g:7094:7: 
+        {
+        }
+
+        // InternalChartDSL.g:7095:7: ( ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )* )?
+        int alt167=2;
+        int LA167_0 = input.LA(1);
+
+        if ( (LA167_0==RULE_ID||LA167_0==71||LA167_0==96) ) {
+            alt167=1;
+        }
+        switch (alt167) {
+            case 1 :
+                // InternalChartDSL.g:7096:8: ( ( ruleJvmFormalParameter ) ) ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                {
+                // InternalChartDSL.g:7096:8: ( ( ruleJvmFormalParameter ) )
+                // InternalChartDSL.g:7097:9: ( ruleJvmFormalParameter )
+                {
+                // InternalChartDSL.g:7097:9: ( ruleJvmFormalParameter )
+                // InternalChartDSL.g:7098:10: ruleJvmFormalParameter
+                {
+                pushFollow(FOLLOW_83);
+                ruleJvmFormalParameter();
+
+                state._fsp--;
+                if (state.failed) return ;
+
+                }
+
+
+                }
+
+                // InternalChartDSL.g:7101:8: ( ',' ( ( ruleJvmFormalParameter ) ) )*
+                loop166:
+                do {
+                    int alt166=2;
+                    int LA166_0 = input.LA(1);
+
+                    if ( (LA166_0==72) ) {
+                        alt166=1;
+                    }
+
+
+                    switch (alt166) {
+                	case 1 :
+                	    // InternalChartDSL.g:7102:9: ',' ( ( ruleJvmFormalParameter ) )
+                	    {
+                	    match(input,72,FOLLOW_63); if (state.failed) return ;
+                	    // InternalChartDSL.g:7103:9: ( ( ruleJvmFormalParameter ) )
+                	    // InternalChartDSL.g:7104:10: ( ruleJvmFormalParameter )
+                	    {
+                	    // InternalChartDSL.g:7104:10: ( ruleJvmFormalParameter )
+                	    // InternalChartDSL.g:7105:11: ruleJvmFormalParameter
+                	    {
+                	    pushFollow(FOLLOW_83);
+                	    ruleJvmFormalParameter();
+
+                	    state._fsp--;
+                	    if (state.failed) return ;
+
+                	    }
+
+
+                	    }
+
+
+                	    }
+                	    break;
+
+                	default :
+                	    break loop166;
+                    }
+                } while (true);
+
+
+                }
+                break;
+
+        }
+
+        // InternalChartDSL.g:7110:7: ( ( '|' ) )
+        // InternalChartDSL.g:7111:8: ( '|' )
+        {
+        // InternalChartDSL.g:7111:8: ( '|' )
+        // InternalChartDSL.g:7112:9: '|'
+        {
+        match(input,109,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred41_InternalChartDSL
+
+    // $ANTLR start synpred42_InternalChartDSL
+    public final void synpred42_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:7189:4: ( ( () '[' ) )
+        // InternalChartDSL.g:7189:5: ( () '[' )
+        {
+        // InternalChartDSL.g:7189:5: ( () '[' )
+        // InternalChartDSL.g:7190:5: () '['
+        {
+        // InternalChartDSL.g:7190:5: ()
+        // InternalChartDSL.g:7191:5: 
+        {
+        }
+
+        match(input,76,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred42_InternalChartDSL
+
+    // $ANTLR start synpred43_InternalChartDSL
+    public final void synpred43_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:7532: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 )
+        // InternalChartDSL.g:
+        {
+        if ( (input.LA(1)>=RULE_INT && input.LA(1)<=RULE_DECIMAL)||input.LA(1)==14||(input.LA(1)>=63 && input.LA(1)<=66)||input.LA(1)==71||(input.LA(1)>=75 && input.LA(1)<=76)||input.LA(1)==83||input.LA(1)==99||input.LA(1)==103||input.LA(1)==110||input.LA(1)==112||(input.LA(1)>=116 && input.LA(1)<=118)||(input.LA(1)>=121 && input.LA(1)<=130)||input.LA(1)==132 ) {
+            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_InternalChartDSL
+
+    // $ANTLR start synpred44_InternalChartDSL
+    public final void synpred44_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:7603:6: ( 'catch' )
+        // InternalChartDSL.g:7603:7: 'catch'
+        {
+        match(input,133,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred44_InternalChartDSL
+
+    // $ANTLR start synpred45_InternalChartDSL
+    public final void synpred45_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:7624:7: ( 'finally' )
+        // InternalChartDSL.g:7624:8: 'finally'
+        {
+        match(input,131,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred45_InternalChartDSL
+
+    // $ANTLR start synpred48_InternalChartDSL
+    public final void synpred48_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:7868:5: ( '.' )
+        // InternalChartDSL.g:7868:6: '.'
+        {
+        match(input,106,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred48_InternalChartDSL
+
+    // $ANTLR start synpred49_InternalChartDSL
+    public final void synpred49_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:7994:5: ( ( () ruleArrayBrackets ) )
+        // InternalChartDSL.g:7994:6: ( () ruleArrayBrackets )
+        {
+        // InternalChartDSL.g:7994:6: ( () ruleArrayBrackets )
+        // InternalChartDSL.g:7995:6: () ruleArrayBrackets
+        {
+        // InternalChartDSL.g:7995:6: ()
+        // InternalChartDSL.g:7996:6: 
+        {
+        }
+
+        pushFollow(FOLLOW_2);
+        ruleArrayBrackets();
+
+        state._fsp--;
+        if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred49_InternalChartDSL
+
+    // $ANTLR start synpred50_InternalChartDSL
+    public final void synpred50_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:8191:5: ( '<' )
+        // InternalChartDSL.g:8191:6: '<'
+        {
+        match(input,83,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred50_InternalChartDSL
+
+    // $ANTLR start synpred51_InternalChartDSL
+    public final void synpred51_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:8247:6: ( ( () '.' ) )
+        // InternalChartDSL.g:8247:7: ( () '.' )
+        {
+        // InternalChartDSL.g:8247:7: ( () '.' )
+        // InternalChartDSL.g:8248:7: () '.'
+        {
+        // InternalChartDSL.g:8248:7: ()
+        // InternalChartDSL.g:8249:7: 
+        {
+        }
+
+        match(input,106,FOLLOW_2); if (state.failed) return ;
+
+        }
+
+
+        }
+    }
+    // $ANTLR end synpred51_InternalChartDSL
+
+    // $ANTLR start synpred52_InternalChartDSL
+    public final void synpred52_InternalChartDSL_fragment() throws RecognitionException {   
+        // InternalChartDSL.g:8285:7: ( '<' )
+        // InternalChartDSL.g:8285:8: '<'
+        {
+        match(input,83,FOLLOW_2); if (state.failed) return ;
+
+        }
+    }
+    // $ANTLR end synpred52_InternalChartDSL
+
+    // Delegated rules
+
+    public final boolean synpred31_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred31_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred36_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred49_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred19_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred44_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred15_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred9_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred35_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred22_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred37_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred52_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred5_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred24_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred11_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred48_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred32_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred18_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred45_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred8_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred14_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred27_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred40_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred10_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred23_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred12_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred42_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred17_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred39_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred26_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred33_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred41_InternalChartDSL_fragment(); // can never throw exception
+        } catch (RecognitionException re) {
+            System.err.println("impossible: "+re);
+        }
+        boolean success = !state.failed;
+        input.rewind(start);
+        state.backtracking--;
+        state.failed=false;
+        return success;
+    }
+    public final boolean synpred1_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred1_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred20_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred7_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred50_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred43_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred29_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred13_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred16_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred2_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred21_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred25_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred6_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred38_InternalChartDSL_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_InternalChartDSL() {
+        state.backtracking++;
+        int start = input.mark();
+        try {
+            synpred51_InternalChartDSL_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 DFA31 dfa31 = new DFA31(this);
+    protected DFA34 dfa34 = new DFA34(this);
+    protected DFA40 dfa40 = new DFA40(this);
+    protected DFA43 dfa43 = new DFA43(this);
+    protected DFA45 dfa45 = new DFA45(this);
+    protected DFA55 dfa55 = new DFA55(this);
+    protected DFA58 dfa58 = new DFA58(this);
+    protected DFA74 dfa74 = new DFA74(this);
+    protected DFA73 dfa73 = new DFA73(this);
+    protected DFA75 dfa75 = new DFA75(this);
+    protected DFA77 dfa77 = new DFA77(this);
+    protected DFA86 dfa86 = new DFA86(this);
+    protected DFA93 dfa93 = new DFA93(this);
+    protected DFA92 dfa92 = new DFA92(this);
+    protected DFA115 dfa115 = new DFA115(this);
+    protected DFA114 dfa114 = new DFA114(this);
+    protected DFA116 dfa116 = new DFA116(this);
+    protected DFA120 dfa120 = new DFA120(this);
+    protected DFA123 dfa123 = new DFA123(this);
+    protected DFA122 dfa122 = new DFA122(this);
+    protected DFA124 dfa124 = new DFA124(this);
+    protected DFA127 dfa127 = new DFA127(this);
+    protected DFA145 dfa145 = new DFA145(this);
+    protected DFA143 dfa143 = new DFA143(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\6\1\uffff\1\15\1\uffff\1\6\2\uffff\1\15";
+    static final String dfa_4s = "\1\104\1\uffff\1\152\1\uffff\1\103\2\uffff\1\152";
+    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\72\uffff\1\1\2\uffff\1\3",
+            "",
+            "\1\5\62\uffff\1\5\4\uffff\1\5\44\uffff\1\4",
+            "",
+            "\1\7\74\uffff\1\6",
+            "",
+            "",
+            "\1\5\62\uffff\1\5\4\uffff\1\5\44\uffff\1\4"
+    };
+
+    static final short[] dfa_1 = DFA.unpackEncodedString(dfa_1s);
+    static final short[] dfa_2 = DFA.unpackEncodedString(dfa_2s);
+    static final char[] dfa_3 = DFA.unpackEncodedStringToUnsignedChars(dfa_3s);
+    static final char[] dfa_4 = DFA.unpackEncodedStringToUnsignedChars(dfa_4s);
+    static final short[] dfa_5 = DFA.unpackEncodedString(dfa_5s);
+    static final short[] dfa_6 = DFA.unpackEncodedString(dfa_6s);
+    static final short[][] dfa_7 = unpackEncodedStringArray(dfa_7s);
+
+    class DFA31 extends DFA {
+
+        public DFA31(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 31;
+            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 "1961: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\u0084\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 = {
+            "\2\2\1\1\2\2\5\uffff\1\2\60\uffff\4\2\3\uffff\2\2\1\uffff\1\42\1\uffff\2\2\6\uffff\1\2\17\uffff\1\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 DFA34 extends DFA {
+
+        public DFA34(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 34;
+            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 "2178: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 LA34_1 = input.LA(1);
+
+                         
+                        int index34_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred2_InternalChartDSL()) ) {s = 35;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index34_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 34, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_14s = "\43\uffff";
+    static final String dfa_15s = "\1\4\1\0\41\uffff";
+    static final String dfa_16s = "\1\u0084\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\60\uffff\4\2\3\uffff\2\2\3\uffff\1\1\1\2\6\uffff\1\2\17\uffff\1\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 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 "2358: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 LA40_1 = input.LA(1);
+
+                         
+                        int index40_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred5_InternalChartDSL()) ) {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;
+        }
+    }
+
+    class DFA43 extends DFA {
+
+        public DFA43(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 43;
+            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 "2500: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 LA43_1 = input.LA(1);
+
+                         
+                        int index43_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred6_InternalChartDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index43_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 43, _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\u0085\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\2\uffff\1\10\54\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\30\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 DFA45 extends DFA {
+
+        public DFA45(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 45;
+            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 "2729: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 LA45_7 = input.LA(1);
+
+                         
+                        int index45_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalChartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index45_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA45_6 = input.LA(1);
+
+                         
+                        int index45_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalChartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index45_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA45_1 = input.LA(1);
+
+                         
+                        int index45_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalChartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index45_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA45_2 = input.LA(1);
+
+                         
+                        int index45_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalChartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index45_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA45_3 = input.LA(1);
+
+                         
+                        int index45_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalChartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index45_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA45_4 = input.LA(1);
+
+                         
+                        int index45_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalChartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index45_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA45_5 = input.LA(1);
+
+                         
+                        int index45_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred7_InternalChartDSL()) ) {s = 9;}
+
+                        else if ( (true) ) {s = 8;}
+
+                         
+                        input.seek(index45_5);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 45, _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\u0085\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\5\1\3\1\0\1\1\1\4\1\2\1\6\1\7\1\uffff}>";
+    static final String[] dfa_33s = {
+            "\5\1\5\uffff\2\1\2\uffff\1\1\54\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\12\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 DFA55 extends DFA {
+
+        public DFA55(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 55;
+            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 3443: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 LA55_4 = input.LA(1);
+
+                         
+                        int index55_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalChartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index55_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA55_5 = input.LA(1);
+
+                         
+                        int index55_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalChartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index55_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA55_7 = input.LA(1);
+
+                         
+                        int index55_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalChartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index55_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA55_3 = input.LA(1);
+
+                         
+                        int index55_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalChartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index55_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA55_6 = input.LA(1);
+
+                         
+                        int index55_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalChartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index55_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA55_2 = input.LA(1);
+
+                         
+                        int index55_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalChartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index55_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA55_8 = input.LA(1);
+
+                         
+                        int index55_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalChartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index55_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA55_9 = input.LA(1);
+
+                         
+                        int index55_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred13_InternalChartDSL()) ) {s = 10;}
+
+                        else if ( (true) ) {s = 1;}
+
+                         
+                        input.seek(index55_9);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 55, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_34s = "\1\123\2\uffff\1\124\7\uffff";
+    static final String dfa_35s = "\1\142\2\uffff\1\137\7\uffff";
+    static final String dfa_36s = "\1\uffff\1\1\1\2\1\uffff\1\4\1\5\1\7\1\10\1\11\1\3\1\6";
+    static final String dfa_37s = "\13\uffff}>";
+    static final String[] dfa_38s = {
+            "\1\6\1\3\10\uffff\1\1\1\2\1\4\1\5\1\7\1\10",
+            "",
+            "",
+            "\1\12\12\uffff\1\11",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final char[] dfa_34 = DFA.unpackEncodedStringToUnsignedChars(dfa_34s);
+    static final char[] dfa_35 = DFA.unpackEncodedStringToUnsignedChars(dfa_35s);
+    static final short[] dfa_36 = DFA.unpackEncodedString(dfa_36s);
+    static final short[] dfa_37 = DFA.unpackEncodedString(dfa_37s);
+    static final short[][] dfa_38 = unpackEncodedStringArray(dfa_38s);
+
+    class DFA58 extends DFA {
+
+        public DFA58(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 58;
+            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 "3519: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\u0085\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\2\uffff\1\2\54\uffff\5\2\1\uffff\1\2\1\uffff\1\1\2\2\1\uffff\42\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 DFA74 extends DFA {
+
+        public DFA74(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 74;
+            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 "4420: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 LA74_1 = input.LA(1);
+
+                         
+                        int index74_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred22_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index74_1);
+                        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_46s = "\1\4\2\0\41\uffff";
+    static final String dfa_47s = "\1\u0084\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 = {
+            "\2\5\1\1\2\5\5\uffff\1\5\60\uffff\4\5\4\uffff\1\2\1\uffff\1\43\1\uffff\2\5\6\uffff\1\5\14\uffff\1\3\2\uffff\1\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 DFA73 extends DFA {
+
+        public DFA73(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 73;
+            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 "4439: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 LA73_0 = input.LA(1);
+
+                         
+                        int index73_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA73_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA73_0==71) ) {s = 2;}
+
+                        else if ( (LA73_0==96) && (synpred23_InternalChartDSL())) {s = 3;}
+
+                        else if ( (LA73_0==109) && (synpred23_InternalChartDSL())) {s = 4;}
+
+                        else if ( ((LA73_0>=RULE_INT && LA73_0<=RULE_STRING)||(LA73_0>=RULE_HEX && LA73_0<=RULE_DECIMAL)||LA73_0==14||(LA73_0>=63 && LA73_0<=66)||(LA73_0>=75 && LA73_0<=76)||LA73_0==83||LA73_0==99||LA73_0==103||LA73_0==110||LA73_0==112||(LA73_0>=116 && LA73_0<=118)||(LA73_0>=121 && LA73_0<=130)||LA73_0==132) ) {s = 5;}
+
+                        else if ( (LA73_0==73) ) {s = 35;}
+
+                         
+                        input.seek(index73_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA73_1 = input.LA(1);
+
+                         
+                        int index73_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred23_InternalChartDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index73_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA73_2 = input.LA(1);
+
+                         
+                        int index73_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred23_InternalChartDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index73_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 73, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_51s = {
+            "\5\2\5\uffff\2\2\2\uffff\1\2\54\uffff\5\2\1\uffff\1\2\1\uffff\3\2\1\uffff\1\2\1\1\40\2\1\uffff\30\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_51 = unpackEncodedStringArray(dfa_51s);
+
+    class DFA75 extends DFA {
+
+        public DFA75(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 75;
+            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 "4537: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 LA75_1 = input.LA(1);
+
+                         
+                        int index75_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred24_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index75_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 75, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_52s = "\40\uffff";
+    static final String dfa_53s = "\1\4\26\uffff\1\0\10\uffff";
+    static final String dfa_54s = "\1\u0084\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 = {
+            "\2\14\1\5\2\14\5\uffff\1\2\61\uffff\3\5\4\uffff\1\35\3\uffff\2\14\6\uffff\1\5\32\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 DFA77 extends DFA {
+
+        public DFA77(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 77;
+            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 "4582: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 LA77_0 = input.LA(1);
+
+                         
+                        int index77_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA77_0==123) ) {s = 1;}
+
+                        else if ( (LA77_0==14) ) {s = 2;}
+
+                        else if ( (LA77_0==112) ) {s = 3;}
+
+                        else if ( (LA77_0==132) && (synpred25_InternalChartDSL())) {s = 4;}
+
+                        else if ( (LA77_0==RULE_ID||(LA77_0>=64 && LA77_0<=66)||LA77_0==83||(LA77_0>=121 && LA77_0<=122)) ) {s = 5;}
+
+                        else if ( ((LA77_0>=RULE_INT && LA77_0<=RULE_STRING)||(LA77_0>=RULE_HEX && LA77_0<=RULE_DECIMAL)||(LA77_0>=75 && LA77_0<=76)||(LA77_0>=124 && LA77_0<=127)) ) {s = 12;}
+
+                        else if ( (LA77_0==110) ) {s = 22;}
+
+                        else if ( (LA77_0==116) ) {s = 23;}
+
+                        else if ( (LA77_0==117) ) {s = 24;}
+
+                        else if ( (LA77_0==118) ) {s = 25;}
+
+                        else if ( (LA77_0==128) ) {s = 26;}
+
+                        else if ( (LA77_0==129) ) {s = 27;}
+
+                        else if ( (LA77_0==130) ) {s = 28;}
+
+                        else if ( (LA77_0==71) ) {s = 29;}
+
+                         
+                        input.seek(index77_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA77_23 = input.LA(1);
+
+                         
+                        int index77_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred26_InternalChartDSL()) ) {s = 30;}
+
+                        else if ( (true) ) {s = 31;}
+
+                         
+                        input.seek(index77_23);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 77, _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\u0084\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 = {
+            "\2\5\1\1\2\5\5\uffff\1\5\60\uffff\4\5\4\uffff\1\2\3\uffff\3\5\5\uffff\1\5\14\uffff\1\3\2\uffff\1\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 DFA86 extends DFA {
+
+        public DFA86(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 86;
+            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 "5074: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 LA86_0 = input.LA(1);
+
+                         
+                        int index86_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA86_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA86_0==71) ) {s = 2;}
+
+                        else if ( (LA86_0==96) && (synpred29_InternalChartDSL())) {s = 3;}
+
+                        else if ( (LA86_0==109) && (synpred29_InternalChartDSL())) {s = 4;}
+
+                        else if ( ((LA86_0>=RULE_INT && LA86_0<=RULE_STRING)||(LA86_0>=RULE_HEX && LA86_0<=RULE_DECIMAL)||LA86_0==14||(LA86_0>=63 && LA86_0<=66)||(LA86_0>=75 && LA86_0<=77)||LA86_0==83||LA86_0==99||LA86_0==103||LA86_0==110||LA86_0==112||(LA86_0>=116 && LA86_0<=130)||LA86_0==132) ) {s = 5;}
+
+                         
+                        input.seek(index86_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA86_1 = input.LA(1);
+
+                         
+                        int index86_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred29_InternalChartDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index86_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA86_2 = input.LA(1);
+
+                         
+                        int index86_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred29_InternalChartDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index86_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 86, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_64s = {
+            "\5\2\5\uffff\1\2\60\uffff\4\2\4\uffff\1\1\3\uffff\2\2\6\uffff\1\2\14\uffff\1\2\2\uffff\1\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 DFA93 extends DFA {
+
+        public DFA93(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 93;
+            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 "5540: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 LA93_1 = input.LA(1);
+
+                         
+                        int index93_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred32_InternalChartDSL()) ) {s = 34;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index93_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 93, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String dfa_65s = "\42\uffff";
+    static final String dfa_66s = "\1\4\2\0\37\uffff";
+    static final String dfa_67s = "\1\u0084\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 = {
+            "\2\4\1\1\2\4\5\uffff\1\4\60\uffff\4\4\4\uffff\1\2\3\uffff\2\4\6\uffff\1\4\14\uffff\1\3\2\uffff\1\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 DFA92 extends DFA {
+
+        public DFA92(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 92;
+            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 "5609: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 LA92_0 = input.LA(1);
+
+                         
+                        int index92_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA92_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA92_0==71) ) {s = 2;}
+
+                        else if ( (LA92_0==96) && (synpred33_InternalChartDSL())) {s = 3;}
+
+                        else if ( ((LA92_0>=RULE_INT && LA92_0<=RULE_STRING)||(LA92_0>=RULE_HEX && LA92_0<=RULE_DECIMAL)||LA92_0==14||(LA92_0>=63 && LA92_0<=66)||(LA92_0>=75 && LA92_0<=76)||LA92_0==83||LA92_0==99||LA92_0==103||LA92_0==110||LA92_0==112||(LA92_0>=116 && LA92_0<=118)||(LA92_0>=121 && LA92_0<=130)||LA92_0==132) ) {s = 4;}
+
+                         
+                        input.seek(index92_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA92_1 = input.LA(1);
+
+                         
+                        int index92_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred33_InternalChartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index92_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA92_2 = input.LA(1);
+
+                         
+                        int index92_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred33_InternalChartDSL()) ) {s = 3;}
+
+                        else if ( (true) ) {s = 4;}
+
+                         
+                        input.seek(index92_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 92, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA115 extends DFA {
+
+        public DFA115(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 115;
+            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 "6738: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 LA115_1 = input.LA(1);
+
+                         
+                        int index115_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred36_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index115_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 115, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA114 extends DFA {
+
+        public DFA114(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 114;
+            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 "6757: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 LA114_0 = input.LA(1);
+
+                         
+                        int index114_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA114_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA114_0==71) ) {s = 2;}
+
+                        else if ( (LA114_0==96) && (synpred37_InternalChartDSL())) {s = 3;}
+
+                        else if ( (LA114_0==109) && (synpred37_InternalChartDSL())) {s = 4;}
+
+                        else if ( ((LA114_0>=RULE_INT && LA114_0<=RULE_STRING)||(LA114_0>=RULE_HEX && LA114_0<=RULE_DECIMAL)||LA114_0==14||(LA114_0>=63 && LA114_0<=66)||(LA114_0>=75 && LA114_0<=76)||LA114_0==83||LA114_0==99||LA114_0==103||LA114_0==110||LA114_0==112||(LA114_0>=116 && LA114_0<=118)||(LA114_0>=121 && LA114_0<=130)||LA114_0==132) ) {s = 5;}
+
+                        else if ( (LA114_0==73) ) {s = 35;}
+
+                         
+                        input.seek(index114_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA114_1 = input.LA(1);
+
+                         
+                        int index114_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred37_InternalChartDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index114_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA114_2 = input.LA(1);
+
+                         
+                        int index114_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred37_InternalChartDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index114_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 114, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA116 extends DFA {
+
+        public DFA116(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 116;
+            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 "6855: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 LA116_1 = input.LA(1);
+
+                         
+                        int index116_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred38_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index116_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 116, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+    static final String[] dfa_71s = {
+            "\5\2\5\uffff\2\2\2\uffff\1\2\54\uffff\5\2\1\uffff\1\2\1\uffff\3\2\1\uffff\10\2\1\1\31\2\1\uffff\30\2",
+            "\1\uffff",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            "",
+            ""
+    };
+    static final short[][] dfa_71 = unpackEncodedStringArray(dfa_71s);
+
+    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_71;
+        }
+        public String getDescription() {
+            return "7014: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 LA120_1 = input.LA(1);
+
+                         
+                        int index120_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred39_InternalChartDSL()) ) {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 DFA123 extends DFA {
+
+        public DFA123(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 123;
+            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 "7071: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 LA123_1 = input.LA(1);
+
+                         
+                        int index123_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred40_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index123_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 123, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA122 extends DFA {
+
+        public DFA122(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 122;
+            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 "7090: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 LA122_0 = input.LA(1);
+
+                         
+                        int index122_0 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (LA122_0==RULE_ID) ) {s = 1;}
+
+                        else if ( (LA122_0==71) ) {s = 2;}
+
+                        else if ( (LA122_0==96) && (synpred41_InternalChartDSL())) {s = 3;}
+
+                        else if ( (LA122_0==109) && (synpred41_InternalChartDSL())) {s = 4;}
+
+                        else if ( ((LA122_0>=RULE_INT && LA122_0<=RULE_STRING)||(LA122_0>=RULE_HEX && LA122_0<=RULE_DECIMAL)||LA122_0==14||(LA122_0>=63 && LA122_0<=66)||(LA122_0>=75 && LA122_0<=76)||LA122_0==83||LA122_0==99||LA122_0==103||LA122_0==110||LA122_0==112||(LA122_0>=116 && LA122_0<=118)||(LA122_0>=121 && LA122_0<=130)||LA122_0==132) ) {s = 5;}
+
+                        else if ( (LA122_0==73) ) {s = 35;}
+
+                         
+                        input.seek(index122_0);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA122_1 = input.LA(1);
+
+                         
+                        int index122_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred41_InternalChartDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index122_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA122_2 = input.LA(1);
+
+                         
+                        int index122_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred41_InternalChartDSL()) ) {s = 4;}
+
+                        else if ( (true) ) {s = 5;}
+
+                         
+                        input.seek(index122_2);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 122, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA124 extends DFA {
+
+        public DFA124(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 124;
+            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 "7188: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 LA124_1 = input.LA(1);
+
+                         
+                        int index124_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred42_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index124_1);
+                        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_72s = "\1\41\115\uffff";
+    static final String dfa_73s = "\1\4\40\0\55\uffff";
+    static final String dfa_74s = "\1\u0085\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\24\1\27\1\1\1\23\1\25\5\uffff\1\12\1\41\2\uffff\1\41\54\uffff\1\7\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\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 DFA127 extends DFA {
+
+        public DFA127(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 127;
+            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 "7531: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 LA127_1 = input.LA(1);
+
+                         
+                        int index127_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_1);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 1 : 
+                        int LA127_2 = input.LA(1);
+
+                         
+                        int index127_2 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_2);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 2 : 
+                        int LA127_3 = input.LA(1);
+
+                         
+                        int index127_3 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_3);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 3 : 
+                        int LA127_4 = input.LA(1);
+
+                         
+                        int index127_4 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_4);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 4 : 
+                        int LA127_5 = input.LA(1);
+
+                         
+                        int index127_5 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_5);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 5 : 
+                        int LA127_6 = input.LA(1);
+
+                         
+                        int index127_6 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_6);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 6 : 
+                        int LA127_7 = input.LA(1);
+
+                         
+                        int index127_7 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_7);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 7 : 
+                        int LA127_8 = input.LA(1);
+
+                         
+                        int index127_8 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_8);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 8 : 
+                        int LA127_9 = input.LA(1);
+
+                         
+                        int index127_9 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_9);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 9 : 
+                        int LA127_10 = input.LA(1);
+
+                         
+                        int index127_10 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_10);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 10 : 
+                        int LA127_11 = input.LA(1);
+
+                         
+                        int index127_11 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_11);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 11 : 
+                        int LA127_12 = input.LA(1);
+
+                         
+                        int index127_12 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_12);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 12 : 
+                        int LA127_13 = input.LA(1);
+
+                         
+                        int index127_13 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_13);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 13 : 
+                        int LA127_14 = input.LA(1);
+
+                         
+                        int index127_14 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_14);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 14 : 
+                        int LA127_15 = input.LA(1);
+
+                         
+                        int index127_15 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_15);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 15 : 
+                        int LA127_16 = input.LA(1);
+
+                         
+                        int index127_16 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_16);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 16 : 
+                        int LA127_17 = input.LA(1);
+
+                         
+                        int index127_17 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_17);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 17 : 
+                        int LA127_18 = input.LA(1);
+
+                         
+                        int index127_18 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_18);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 18 : 
+                        int LA127_19 = input.LA(1);
+
+                         
+                        int index127_19 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_19);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 19 : 
+                        int LA127_20 = input.LA(1);
+
+                         
+                        int index127_20 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_20);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 20 : 
+                        int LA127_21 = input.LA(1);
+
+                         
+                        int index127_21 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_21);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 21 : 
+                        int LA127_22 = input.LA(1);
+
+                         
+                        int index127_22 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_22);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 22 : 
+                        int LA127_23 = input.LA(1);
+
+                         
+                        int index127_23 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_23);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 23 : 
+                        int LA127_24 = input.LA(1);
+
+                         
+                        int index127_24 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_24);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 24 : 
+                        int LA127_25 = input.LA(1);
+
+                         
+                        int index127_25 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_25);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 25 : 
+                        int LA127_26 = input.LA(1);
+
+                         
+                        int index127_26 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_26);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 26 : 
+                        int LA127_27 = input.LA(1);
+
+                         
+                        int index127_27 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_27);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 27 : 
+                        int LA127_28 = input.LA(1);
+
+                         
+                        int index127_28 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_28);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 28 : 
+                        int LA127_29 = input.LA(1);
+
+                         
+                        int index127_29 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_29);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 29 : 
+                        int LA127_30 = input.LA(1);
+
+                         
+                        int index127_30 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_30);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 30 : 
+                        int LA127_31 = input.LA(1);
+
+                         
+                        int index127_31 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_31);
+                        if ( s>=0 ) return s;
+                        break;
+                    case 31 : 
+                        int LA127_32 = input.LA(1);
+
+                         
+                        int index127_32 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred43_InternalChartDSL()) ) {s = 77;}
+
+                        else if ( (true) ) {s = 33;}
+
+                         
+                        input.seek(index127_32);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 127, _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\u0087\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\2\uffff\1\2\54\uffff\5\2\1\uffff\1\2\1\uffff\3\2\1\uffff\10\2\1\1\31\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 DFA145 extends DFA {
+
+        public DFA145(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 145;
+            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 "8189: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 LA145_1 = input.LA(1);
+
+                         
+                        int index145_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred50_InternalChartDSL()) ) {s = 78;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index145_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 145, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+
+    class DFA143 extends DFA {
+
+        public DFA143(BaseRecognizer recognizer) {
+            this.recognizer = recognizer;
+            this.decisionNumber = 143;
+            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 "8283: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 LA143_1 = input.LA(1);
+
+                         
+                        int index143_1 = input.index();
+                        input.rewind();
+                        s = -1;
+                        if ( (synpred52_InternalChartDSL()) ) {s = 78;}
+
+                        else if ( (true) ) {s = 2;}
+
+                         
+                        input.seek(index143_1);
+                        if ( s>=0 ) return s;
+                        break;
+            }
+            if (state.backtracking>0) {state.failed=true; return -1;}
+            NoViableAltException nvae =
+                new NoViableAltException(getDescription(), 143, _s, input);
+            error(nvae);
+            throw nvae;
+        }
+    }
+ 
+
+    public static final BitSet FOLLOW_1 = new BitSet(new long[]{0x0000000000000000L});
+    public static final BitSet FOLLOW_2 = new BitSet(new long[]{0x0000000000000002L});
+    public static final BitSet FOLLOW_3 = new BitSet(new long[]{0x0000000000002002L});
+    public static final BitSet FOLLOW_4 = new BitSet(new long[]{0x0000000000000040L});
+    public static final BitSet FOLLOW_5 = new BitSet(new long[]{0x0000000000004002L});
+    public static final BitSet FOLLOW_6 = new BitSet(new long[]{0x0000000000018000L});
+    public static final BitSet FOLLOW_7 = new BitSet(new long[]{0x0000000000060000L});
+    public static final BitSet FOLLOW_8 = new BitSet(new long[]{0x0000000000000020L});
+    public static final BitSet FOLLOW_9 = new BitSet(new long[]{0x0000000000040000L});
+    public static final BitSet FOLLOW_10 = new BitSet(new long[]{0x0001046808400000L});
+    public static final BitSet FOLLOW_11 = new BitSet(new long[]{0x0000000000380002L});
+    public static final BitSet FOLLOW_12 = new BitSet(new long[]{0x0000000000000010L});
+    public static final BitSet FOLLOW_13 = new BitSet(new long[]{0x0010000000000000L});
+    public static final BitSet FOLLOW_14 = new BitSet(new long[]{0x0000000007800002L});
+    public static final BitSet FOLLOW_15 = new BitSet(new long[]{0x0000000671000002L});
+    public static final BitSet FOLLOW_16 = new BitSet(new long[]{0x00000007F1000002L});
+    public static final BitSet FOLLOW_17 = new BitSet(new long[]{0x0000000771000002L});
+    public static final BitSet FOLLOW_18 = new BitSet(new long[]{0x0000001000000002L});
+    public static final BitSet FOLLOW_19 = new BitSet(new long[]{0x0000038000000002L});
+    public static final BitSet FOLLOW_20 = new BitSet(new long[]{0x0000000000000190L});
+    public static final BitSet FOLLOW_21 = new BitSet(new long[]{0x0000980000000002L});
+    public static final BitSet FOLLOW_22 = new BitSet(new long[]{0x0000200000000000L});
+    public static final BitSet FOLLOW_23 = new BitSet(new long[]{0x0000400000000000L});
+    public static final BitSet FOLLOW_24 = new BitSet(new long[]{0x0000000000004000L});
+    public static final BitSet FOLLOW_25 = new BitSet(new long[]{0x0008000000008000L});
+    public static final BitSet FOLLOW_26 = new BitSet(new long[]{0x0006000000000000L});
+    public static final BitSet FOLLOW_27 = new BitSet(new long[]{0xC000000000000010L});
+    public static final BitSet FOLLOW_28 = new BitSet(new long[]{0x0420000100008000L});
+    public static final BitSet FOLLOW_29 = new BitSet(new long[]{0x0200000000000000L,0x0000000000000000L,0x0000000000000700L});
+    public static final BitSet FOLLOW_30 = new BitSet(new long[]{0x0040000000000002L});
+    public static final BitSet FOLLOW_31 = new BitSet(new long[]{0x0080000000000000L});
+    public static final BitSet FOLLOW_32 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000003800L});
+    public static final BitSet FOLLOW_33 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x00000000003FC000L});
+    public static final BitSet FOLLOW_34 = new BitSet(new long[]{0x0300000000000002L});
+    public static final BitSet FOLLOW_35 = new BitSet(new long[]{0x0200000000000002L});
+    public static final BitSet FOLLOW_36 = new BitSet(new long[]{0x0800000000000000L});
+    public static final BitSet FOLLOW_37 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000007C00000L});
+    public static final BitSet FOLLOW_38 = new BitSet(new long[]{0x3000000000000002L});
+    public static final BitSet FOLLOW_39 = new BitSet(new long[]{0x2000000000000002L});
+    public static final BitSet FOLLOW_40 = new BitSet(new long[]{0x8000000000000010L});
+    public static final BitSet FOLLOW_41 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000012L});
+    public static final BitSet FOLLOW_42 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000004L});
+    public static final BitSet FOLLOW_43 = new BitSet(new long[]{0x0000000000000040L,0x0000000000000008L});
+    public static final BitSet FOLLOW_44 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000020L});
+    public static final BitSet FOLLOW_45 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000080L});
+    public static final BitSet FOLLOW_46 = new BitSet(new long[]{0x80000000000041F0L,0xFE71408800081AC7L,0x0000000000000017L});
+    public static final BitSet FOLLOW_47 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000300L});
+    public static final BitSet FOLLOW_48 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000200L});
+    public static final BitSet FOLLOW_49 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000400L});
+    public static final BitSet FOLLOW_50 = new BitSet(new long[]{0x80000000000041F0L,0xFE714088000818C7L,0x0000000000000017L});
+    public static final BitSet FOLLOW_51 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001000L});
+    public static final BitSet FOLLOW_52 = new BitSet(new long[]{0x80000000000041F0L,0xFE714088000838C7L,0x0000000000000017L});
+    public static final BitSet FOLLOW_53 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002100L});
+    public static final BitSet FOLLOW_54 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000100L});
+    public static final BitSet FOLLOW_55 = new BitSet(new long[]{0x0000000000000002L,0x00000000001FC000L});
+    public static final BitSet FOLLOW_56 = new BitSet(new long[]{0x0000000000000000L,0x0000000000080000L});
+    public static final BitSet FOLLOW_57 = new BitSet(new long[]{0x0000000000000000L,0x0000000000300000L});
+    public static final BitSet FOLLOW_58 = new BitSet(new long[]{0x0000000000000000L,0x0000000000200000L});
+    public static final BitSet FOLLOW_59 = new BitSet(new long[]{0x0000000000000002L,0x0000000000400000L});
+    public static final BitSet FOLLOW_60 = new BitSet(new long[]{0x0000000000000002L,0x0000000000800000L});
+    public static final BitSet FOLLOW_61 = new BitSet(new long[]{0x0000000000000002L,0x000000000F000000L});
+    public static final BitSet FOLLOW_62 = new BitSet(new long[]{0x0000000000000002L,0x0000000010380000L});
+    public static final BitSet FOLLOW_63 = new BitSet(new long[]{0x0000000000000040L,0x0000000100000080L});
+    public static final BitSet FOLLOW_64 = new BitSet(new long[]{0x0000000000000002L,0x00000007E0180000L});
+    public static final BitSet FOLLOW_65 = new BitSet(new long[]{0x0000000000000000L,0x0000000080000000L});
+    public static final BitSet FOLLOW_66 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100000L});
+    public static final BitSet FOLLOW_67 = new BitSet(new long[]{0x0000000000000000L,0x0000000100080000L});
+    public static final BitSet FOLLOW_68 = new BitSet(new long[]{0x8000000000000002L,0x0000000800000000L});
+    public static final BitSet FOLLOW_69 = new BitSet(new long[]{0x0000000000000002L,0x0000007000000008L});
+    public static final BitSet FOLLOW_70 = new BitSet(new long[]{0x0000000000040002L});
+    public static final BitSet FOLLOW_71 = new BitSet(new long[]{0x0000000000000002L,0x0000030000000000L});
+    public static final BitSet FOLLOW_72 = new BitSet(new long[]{0x0000000000000002L,0x00001C0000000000L});
+    public static final BitSet FOLLOW_73 = new BitSet(new long[]{0x0000000000000040L,0x0200000000000007L});
+    public static final BitSet FOLLOW_74 = new BitSet(new long[]{0x0000000000000040L,0x0600000000080007L});
+    public static final BitSet FOLLOW_75 = new BitSet(new long[]{0x0000000000000040L,0x0000000100000080L,0x0000000000000040L});
+    public static final BitSet FOLLOW_76 = new BitSet(new long[]{0x0000000000000000L,0x0000000000100100L});
+    public static final BitSet FOLLOW_77 = new BitSet(new long[]{0x0000000000000002L,0x00001C0000001080L});
+    public static final BitSet FOLLOW_78 = new BitSet(new long[]{0x80000000000041F0L,0xFE71608900081AC7L,0x0000000000000017L});
+    public static final BitSet FOLLOW_79 = new BitSet(new long[]{0x0000000000000002L,0x00001C0000001000L});
+    public static final BitSet FOLLOW_80 = new BitSet(new long[]{0x800000000000C1F0L,0xFE714088000818C7L,0x0000000000000017L});
+    public static final BitSet FOLLOW_81 = new BitSet(new long[]{0x0000000000008000L,0x0000000000000100L});
+    public static final BitSet FOLLOW_82 = new BitSet(new long[]{0x80000000000041F0L,0xFFF16089000838C7L,0x0000000000000017L});
+    public static final BitSet FOLLOW_83 = new BitSet(new long[]{0x0000000000000000L,0x0000200000000100L});
+    public static final BitSet FOLLOW_84 = new BitSet(new long[]{0x80000000000041F0L,0xFFF14088000838C7L,0x0000000000000017L});
+    public static final BitSet FOLLOW_85 = new BitSet(new long[]{0x0000000000000000L,0x0000000000002000L});
+    public static final BitSet FOLLOW_86 = new BitSet(new long[]{0x80000000000041F2L,0xFFF14088000818E7L,0x0000000000000017L});
+    public static final BitSet FOLLOW_87 = new BitSet(new long[]{0x80000000000041F2L,0xFFF14088000818C7L,0x0000000000000017L});
+    public static final BitSet FOLLOW_88 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_89 = new BitSet(new long[]{0x0000000000000002L,0x0000800000000000L});
+    public static final BitSet FOLLOW_90 = new BitSet(new long[]{0x80000000000041F0L,0xFE714089000818C7L,0x0000000000000017L});
+    public static final BitSet FOLLOW_91 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000000L});
+    public static final BitSet FOLLOW_92 = new BitSet(new long[]{0x0000000000008040L,0x000E000100000180L});
+    public static final BitSet FOLLOW_93 = new BitSet(new long[]{0x0000000000008000L});
+    public static final BitSet FOLLOW_94 = new BitSet(new long[]{0x0000000000000000L,0x000A000000000100L});
+    public static final BitSet FOLLOW_95 = new BitSet(new long[]{0x0000000000000000L,0x0002000000000100L});
+    public static final BitSet FOLLOW_96 = new BitSet(new long[]{0x80000000000041F0L,0xFFF14088000818E7L,0x0000000000000017L});
+    public static final BitSet FOLLOW_97 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000120L});
+    public static final BitSet FOLLOW_98 = new BitSet(new long[]{0x80000000000041F0L,0xFFF14088000818C7L,0x0000000000000017L});
+    public static final BitSet FOLLOW_99 = new BitSet(new long[]{0x80000000000041F0L,0xFE714088000818E7L,0x0000000000000017L});
+    public static final BitSet FOLLOW_100 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000020L});
+    public static final BitSet FOLLOW_101 = new BitSet(new long[]{0x0000000000000000L,0x0020000000000000L});
+    public static final BitSet FOLLOW_102 = new BitSet(new long[]{0x800000000000C1F0L,0xFFF14088000818C7L,0x0000000000000017L});
+    public static final BitSet FOLLOW_103 = new BitSet(new long[]{0x800000000000C1F0L,0xFFF14088000818E7L,0x0000000000000017L});
+    public static final BitSet FOLLOW_104 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000400L});
+    public static final BitSet FOLLOW_105 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001080L});
+    public static final BitSet FOLLOW_106 = new BitSet(new long[]{0x0000000000000002L,0x0000000000001000L});
+    public static final BitSet FOLLOW_107 = new BitSet(new long[]{0x0000000000000002L,0x0000000000081080L});
+    public static final BitSet FOLLOW_108 = new BitSet(new long[]{0x0000000000000000L,0x0000000000001200L});
+    public static final BitSet FOLLOW_109 = new BitSet(new long[]{0x80000000000041F2L,0xFE714088000818C7L,0x0000000000000017L});
+    public static final BitSet FOLLOW_110 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000000L,0x0000000000000028L});
+    public static final BitSet FOLLOW_111 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000028L});
+    public static final BitSet FOLLOW_112 = new BitSet(new long[]{0x0000000000000002L,0x0000040000000000L});
+    public static final BitSet FOLLOW_113 = new BitSet(new long[]{0x0000000000000110L});
+    public static final BitSet FOLLOW_114 = new BitSet(new long[]{0x0000000000000040L,0x0000000100000280L});
+    public static final BitSet FOLLOW_115 = new BitSet(new long[]{0x0000000000000000L,0x0000000100000000L});
+    public static final BitSet FOLLOW_116 = new BitSet(new long[]{0x0000000000000002L,0x0000000000080000L});
+    public static final BitSet FOLLOW_117 = new BitSet(new long[]{0x0000000000000002L,0x0000040000080000L});
+    public static final BitSet FOLLOW_118 = new BitSet(new long[]{0x0000000000000002L,0x0600000000000000L});
+    public static final BitSet FOLLOW_119 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000000L,0x0000000000000080L});
+    public static final BitSet FOLLOW_120 = new BitSet(new long[]{0x0000000000000000L,0x0000040000000000L});
+    public static final BitSet FOLLOW_121 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000008L});
+    public static final BitSet FOLLOW_122 = new BitSet(new long[]{0x0000000000000002L,0x0000000000000001L});
+    public static final BitSet FOLLOW_123 = new BitSet(new long[]{0x0000000000000042L});
+
+}
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/scoping/AbstractChartDSLScopeProvider.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/scoping/AbstractChartDSLScopeProvider.java
new file mode 100644
index 0000000..5fd9a5f
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/scoping/AbstractChartDSLScopeProvider.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.chart.scoping;
+
+import org.eclipse.osbp.xtext.oxtype.scoping.OXtypeScopeProvider;
+
+public abstract class AbstractChartDSLScopeProvider extends OXtypeScopeProvider {
+}
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/serializer/ChartDSLSemanticSequencer.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/serializer/ChartDSLSemanticSequencer.java
index a3979c1..ce34b63 100644
--- a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/serializer/ChartDSLSemanticSequencer.java
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/serializer/ChartDSLSemanticSequencer.java
@@ -10,14 +10,16 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.chart.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.chart.Chart;
 import org.eclipse.osbp.xtext.chart.ChartAxis;
 import org.eclipse.osbp.xtext.chart.ChartBar;
@@ -36,6 +38,12 @@
 import org.eclipse.osbp.xtext.chart.ChartSegmentColor;
 import org.eclipse.osbp.xtext.chart.ChartTree;
 import org.eclipse.osbp.xtext.chart.services.ChartDSLGrammarAccess;
+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;
@@ -45,14 +53,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;
@@ -86,1512 +88,533 @@
 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 ChartDSLSemanticSequencer extends XbaseWithAnnotationsSemanticSequencer {
+public class ChartDSLSemanticSequencer extends OXtypeSemanticSequencer {
 
 	@Inject
 	private ChartDSLGrammarAccess grammarAccess;
 	
-	public void createSequence(EObject context, EObject semanticObject) {
-		if(semanticObject.eClass().getEPackage() == ChartDSLPackage.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 == ChartDSLPackage.eINSTANCE)
+			switch (semanticObject.eClass().getClassifierID()) {
 			case ChartDSLPackage.CHART:
-				if(context == grammarAccess.getChartRule()) {
-					sequence_Chart(context, (Chart) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_Chart(context, (Chart) semanticObject); 
+				return; 
 			case ChartDSLPackage.CHART_AXIS:
-				if(context == grammarAccess.getChartAxisRule() ||
-				   context == grammarAccess.getChartElementRule()) {
-					sequence_ChartAxis(context, (ChartAxis) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ChartAxis(context, (ChartAxis) semanticObject); 
+				return; 
 			case ChartDSLPackage.CHART_BAR:
-				if(context == grammarAccess.getChartBarRule() ||
-				   context == grammarAccess.getChartOptionRule()) {
-					sequence_ChartBar(context, (ChartBar) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ChartBar(context, (ChartBar) semanticObject); 
+				return; 
 			case ChartDSLPackage.CHART_BUBBLE:
-				if(context == grammarAccess.getChartBubbleRule() ||
-				   context == grammarAccess.getChartOptionRule()) {
-					sequence_ChartBubble(context, (ChartBubble) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ChartBubble(context, (ChartBubble) semanticObject); 
+				return; 
 			case ChartDSLPackage.CHART_DATAMART:
-				if(context == grammarAccess.getChartDatamartRule()) {
-					sequence_ChartDatamart(context, (ChartDatamart) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ChartDatamart(context, (ChartDatamart) semanticObject); 
+				return; 
 			case ChartDSLPackage.CHART_DONUT:
-				if(context == grammarAccess.getChartDonutRule() ||
-				   context == grammarAccess.getChartOptionRule()) {
-					sequence_ChartDonut(context, (ChartDonut) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ChartDonut(context, (ChartDonut) semanticObject); 
+				return; 
 			case ChartDSLPackage.CHART_GAUGE:
-				if(context == grammarAccess.getChartGaugeRule() ||
-				   context == grammarAccess.getChartOptionRule()) {
-					sequence_ChartGauge(context, (ChartGauge) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ChartGauge(context, (ChartGauge) semanticObject); 
+				return; 
 			case ChartDSLPackage.CHART_HIGHLIGHTER:
-				if(context == grammarAccess.getChartElementRule() ||
-				   context == grammarAccess.getChartHighlighterRule()) {
-					sequence_ChartHighlighter(context, (ChartHighlighter) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ChartHighlighter(context, (ChartHighlighter) semanticObject); 
+				return; 
 			case ChartDSLPackage.CHART_LEGEND:
-				if(context == grammarAccess.getChartElementRule() ||
-				   context == grammarAccess.getChartLegendRule()) {
-					sequence_ChartLegend(context, (ChartLegend) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ChartLegend(context, (ChartLegend) semanticObject); 
+				return; 
 			case ChartDSLPackage.CHART_LINE:
-				if(context == grammarAccess.getChartLineRule() ||
-				   context == grammarAccess.getChartOptionRule()) {
-					sequence_ChartLine(context, (ChartLine) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ChartLine(context, (ChartLine) semanticObject); 
+				return; 
 			case ChartDSLPackage.CHART_MODEL:
-				if(context == grammarAccess.getChartModelRule()) {
-					sequence_ChartModel(context, (ChartModel) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ChartModel(context, (ChartModel) semanticObject); 
+				return; 
 			case ChartDSLPackage.CHART_NUMBER_INTERVAL:
-				if(context == grammarAccess.getChartIntervalRule() ||
-				   context == grammarAccess.getChartNumberIntervalRule()) {
-					sequence_ChartNumberInterval(context, (ChartNumberInterval) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ChartNumberInterval(context, (ChartNumberInterval) semanticObject); 
+				return; 
 			case ChartDSLPackage.CHART_PACKAGE:
-				if(context == grammarAccess.getChartPackageRule()) {
-					sequence_ChartPackage(context, (ChartPackage) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ChartPackage(context, (ChartPackage) semanticObject); 
+				return; 
 			case ChartDSLPackage.CHART_PIE:
-				if(context == grammarAccess.getChartOptionRule() ||
-				   context == grammarAccess.getChartPieRule()) {
-					sequence_ChartPie(context, (ChartPie) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ChartPie(context, (ChartPie) semanticObject); 
+				return; 
 			case ChartDSLPackage.CHART_SEGMENT_COLOR:
-				if(context == grammarAccess.getChartRangeElementRule() ||
-				   context == grammarAccess.getChartSegmentColorRule()) {
-					sequence_ChartSegmentColor(context, (ChartSegmentColor) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ChartSegmentColor(context, (ChartSegmentColor) semanticObject); 
+				return; 
 			case ChartDSLPackage.CHART_TREE:
-				if(context == grammarAccess.getChartOptionRule() ||
-				   context == grammarAccess.getChartTreeRule()) {
-					sequence_ChartTree(context, (ChartTree) semanticObject); 
-					return; 
-				}
-				else break;
+				sequence_ChartTree(context, (ChartTree) semanticObject); 
+				return; 
 			}
-		else if(semanticObject.eClass().getEPackage() == OSBPTypesPackage.eINSTANCE) switch(semanticObject.eClass().getClassifierID()) {
-			case OSBPTypesPackage.LIMPORT:
-				if(context == grammarAccess.getChartImportRule()) {
-					sequence_ChartImport(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:
+	 *     ChartElement returns ChartAxis
+	 *     ChartAxis returns ChartAxis
+	 *
 	 * Constraint:
 	 *     (axis=[DatamartAxis|ID] renderType=RenderTypeEnum shortLabel?='shortLabel'? angle=SignedNumber?)
 	 */
-	protected void sequence_ChartAxis(EObject context, ChartAxis semanticObject) {
+	protected void sequence_ChartAxis(ISerializationContext context, ChartAxis semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ChartOption returns ChartBar
+	 *     ChartBar returns ChartBar
+	 *
 	 * Constraint:
-	 *     (shadow?='shaded'? animated?='animated'? swapped?='swapped'? stacked?='stacked'?)
+	 *     (shadow?='shaded' | animated?='animated' | swapped?='swapped' | stacked?='stacked')*
 	 */
-	protected void sequence_ChartBar(EObject context, ChartBar semanticObject) {
+	protected void sequence_ChartBar(ISerializationContext context, ChartBar semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ChartOption returns ChartBubble
+	 *     ChartBubble returns ChartBubble
+	 *
 	 * Constraint:
-	 *     (((multiplier?='multiplier' multiplierValue=Number)? (gradient?='gradient' | transparent?='transparent'))?)
+	 *     ((gradient?='gradient' | transparent?='transparent')? (multiplier?='multiplier' multiplierValue=Number)?)+
 	 */
-	protected void sequence_ChartBubble(EObject context, ChartBubble semanticObject) {
+	protected void sequence_ChartBubble(ISerializationContext context, ChartBubble semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ChartDatamart returns ChartDatamart
+	 *
 	 * Constraint:
 	 *     (datamartRef=[DatamartDefinition|ID] elements+=ChartElement*)
 	 */
-	protected void sequence_ChartDatamart(EObject context, ChartDatamart semanticObject) {
+	protected void sequence_ChartDatamart(ISerializationContext context, ChartDatamart semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ChartOption returns ChartDonut
+	 *     ChartDonut returns ChartDonut
+	 *
 	 * Constraint:
 	 *     {ChartDonut}
 	 */
-	protected void sequence_ChartDonut(EObject context, ChartDonut semanticObject) {
+	protected void sequence_ChartDonut(ISerializationContext context, ChartDonut semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ChartOption returns ChartGauge
+	 *     ChartGauge returns ChartGauge
+	 *
 	 * Constraint:
-	 *     ((labeled?='label' labelValue=STRING)? (hasTicks?='hasTicks' minValue=INT maxValue=INT)? (hasIntervals?='intervals' intervals+=ChartInterval*)?)
+	 *     (
+	 *         ((labeled?='label' labelValue=STRING) | (hasIntervals?='intervals' intervals+=ChartInterval*))? 
+	 *         (hasTicks?='hasTicks' minValue=INT maxValue=INT)?
+	 *     )+
 	 */
-	protected void sequence_ChartGauge(EObject context, ChartGauge semanticObject) {
+	protected void sequence_ChartGauge(ISerializationContext context, ChartGauge semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ChartElement returns ChartHighlighter
+	 *     ChartHighlighter returns ChartHighlighter
+	 *
 	 * Constraint:
 	 *     (location=TooltipLocationEnum tooltipAlways?='always'? insideChart?='inside'?)
 	 */
-	protected void sequence_ChartHighlighter(EObject context, ChartHighlighter semanticObject) {
+	protected void sequence_ChartHighlighter(ISerializationContext context, ChartHighlighter semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
-	 * Constraint:
-	 *     importedNamespace=ChartQualifiedNameWithWildCard
-	 */
-	protected void sequence_ChartImport(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.getChartImportAccess().getImportedNamespaceChartQualifiedNameWithWildCardParserRuleCall_1_0(), semanticObject.getImportedNamespace());
-		feeder.finish();
-	}
-	
-	
-	/**
+	 * Contexts:
+	 *     ChartElement returns ChartLegend
+	 *     ChartLegend returns ChartLegend
+	 *
 	 * Constraint:
 	 *     (placement=LegendPlacementEnum (toggle?='toggle' replot?='replot' toggleType=ToggleTypeEnum)?)
 	 */
-	protected void sequence_ChartLegend(EObject context, ChartLegend semanticObject) {
+	protected void sequence_ChartLegend(ISerializationContext context, ChartLegend semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ChartOption returns ChartLine
+	 *     ChartLine returns ChartLine
+	 *
 	 * Constraint:
 	 *     (
-	 *         animated?='animated'? 
-	 *         showMarker?='showMarker'? 
-	 *         trendLine?='trendLine'? 
-	 *         (cursor?='cursor' zoom?='zoom'? tooltip?='tooltip'?)? 
-	 *         fillToZero?='fillZero'? 
-	 *         fillArea?='filled'?
-	 *     )
+	 *         (animated?='animated' | showMarker?='showMarker' | trendLine?='trendLine' | fillToZero?='fillZero' | fillArea?='filled')? 
+	 *         (cursor?='cursor' zoom?='zoom'? tooltip?='tooltip'?)?
+	 *     )+
 	 */
-	protected void sequence_ChartLine(EObject context, ChartLine semanticObject) {
+	protected void sequence_ChartLine(ISerializationContext context, ChartLine semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ChartModel returns ChartModel
+	 *
 	 * Constraint:
-	 *     packages+=ChartPackage*
+	 *     ((importSection=XImportSection packages+=ChartPackage+) | packages+=ChartPackage+)?
 	 */
-	protected void sequence_ChartModel(EObject context, ChartModel semanticObject) {
+	protected void sequence_ChartModel(ISerializationContext context, ChartModel semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ChartInterval returns ChartNumberInterval
+	 *     ChartNumberInterval returns ChartNumberInterval
+	 *
 	 * Constraint:
 	 *     (numberIntervalValue=SignedNumber numberRange=ChartRangeElement)
 	 */
-	protected void sequence_ChartNumberInterval(EObject context, ChartNumberInterval semanticObject) {
-		if(errorAcceptor != null) {
-			if(transientValues.isValueTransient(semanticObject, ChartDSLPackage.Literals.CHART_NUMBER_INTERVAL__NUMBER_INTERVAL_VALUE) == ValueTransient.YES)
+	protected void sequence_ChartNumberInterval(ISerializationContext context, ChartNumberInterval semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, ChartDSLPackage.Literals.CHART_NUMBER_INTERVAL__NUMBER_INTERVAL_VALUE) == ValueTransient.YES)
 				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ChartDSLPackage.Literals.CHART_NUMBER_INTERVAL__NUMBER_INTERVAL_VALUE));
-			if(transientValues.isValueTransient(semanticObject, ChartDSLPackage.Literals.CHART_NUMBER_INTERVAL__NUMBER_RANGE) == ValueTransient.YES)
+			if (transientValues.isValueTransient(semanticObject, ChartDSLPackage.Literals.CHART_NUMBER_INTERVAL__NUMBER_RANGE) == ValueTransient.YES)
 				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ChartDSLPackage.Literals.CHART_NUMBER_INTERVAL__NUMBER_RANGE));
 		}
-		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
-		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
 		feeder.accept(grammarAccess.getChartNumberIntervalAccess().getNumberIntervalValueSignedNumberParserRuleCall_2_0(), semanticObject.getNumberIntervalValue());
 		feeder.accept(grammarAccess.getChartNumberIntervalAccess().getNumberRangeChartRangeElementParserRuleCall_3_0(), semanticObject.getNumberRange());
 		feeder.finish();
@@ -1599,59 +622,78 @@
 	
 	
 	/**
+	 * Contexts:
+	 *     ChartPackage returns ChartPackage
+	 *
 	 * Constraint:
-	 *     (name=QualifiedName (imports+=ChartImport* charts+=Chart*)?)
+	 *     (name=QualifiedName charts+=Chart*)
 	 */
-	protected void sequence_ChartPackage(EObject context, ChartPackage semanticObject) {
+	protected void sequence_ChartPackage(ISerializationContext context, ChartPackage semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ChartOption returns ChartPie
+	 *     ChartPie returns ChartPie
+	 *
 	 * Constraint:
-	 *     (empty?='empty'?)
+	 *     empty?='empty'?
 	 */
-	protected void sequence_ChartPie(EObject context, ChartPie semanticObject) {
+	protected void sequence_ChartPie(ISerializationContext context, ChartPie semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ChartRangeElement returns ChartSegmentColor
+	 *     ChartSegmentColor returns ChartSegmentColor
+	 *
 	 * Constraint:
 	 *     rgb=STRING
 	 */
-	protected void sequence_ChartSegmentColor(EObject context, ChartSegmentColor semanticObject) {
-		if(errorAcceptor != null) {
-			if(transientValues.isValueTransient(semanticObject, ChartDSLPackage.Literals.CHART_SEGMENT_COLOR__RGB) == ValueTransient.YES)
+	protected void sequence_ChartSegmentColor(ISerializationContext context, ChartSegmentColor semanticObject) {
+		if (errorAcceptor != null) {
+			if (transientValues.isValueTransient(semanticObject, ChartDSLPackage.Literals.CHART_SEGMENT_COLOR__RGB) == ValueTransient.YES)
 				errorAcceptor.accept(diagnosticProvider.createFeatureValueMissing(semanticObject, ChartDSLPackage.Literals.CHART_SEGMENT_COLOR__RGB));
 		}
-		INodesForEObjectProvider nodes = createNodeProvider(semanticObject);
-		SequenceFeeder feeder = createSequencerFeeder(semanticObject, nodes);
+		SequenceFeeder feeder = createSequencerFeeder(context, semanticObject);
 		feeder.accept(grammarAccess.getChartSegmentColorAccess().getRgbSTRINGTerminalRuleCall_1_0(), semanticObject.getRgb());
 		feeder.finish();
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     ChartOption returns ChartTree
+	 *     ChartTree returns ChartTree
+	 *
 	 * Constraint:
 	 *     (map?='map' | collapsible?='collapsible')
 	 */
-	protected void sequence_ChartTree(EObject context, ChartTree semanticObject) {
+	protected void sequence_ChartTree(ISerializationContext context, ChartTree semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
 	
 	
 	/**
+	 * Contexts:
+	 *     Chart returns Chart
+	 *
 	 * Constraint:
 	 *     (
 	 *         name=TRANSLATABLEID 
-	 *         (description?='described by' descriptionValue=TRANSLATABLESTRING)? 
+	 *         (description?='describedBy' descriptionValue=TRANSLATABLESTRING)? 
 	 *         charttype=ChartOption 
-	 *         (polling?='polling' pollingTime=INT)? 
+	 *         (selectById?='selectById'? (polling?='polling' pollingTime=INT)?)+ 
 	 *         source=ChartDatamart?
 	 *     )
 	 */
-	protected void sequence_Chart(EObject context, Chart semanticObject) {
+	protected void sequence_Chart(ISerializationContext context, Chart semanticObject) {
 		genericSequencer.createSequence(context, semanticObject);
 	}
+	
+	
 }
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/serializer/ChartDSLSyntacticSequencer.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/serializer/ChartDSLSyntacticSequencer.java
index e5a06ad..fcb38ab 100644
--- a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/serializer/ChartDSLSyntacticSequencer.java
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/serializer/ChartDSLSyntacticSequencer.java
@@ -10,7 +10,10 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.chart.serializer;
 
 import com.google.inject.Inject;
@@ -31,33 +34,33 @@
 public class ChartDSLSyntacticSequencer extends AbstractSyntacticSequencer {
 
 	protected ChartDSLGrammarAccess grammarAccess;
-	protected AbstractElementAlias match_ChartPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q;
+	protected AbstractElementAlias match_ChartPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_2__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 = (ChartDSLGrammarAccess) access;
-		match_ChartPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getChartPackageAccess().getLeftCurlyBracketKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getChartPackageAccess().getRightCurlyBracketKeyword_3_3()));
+		match_ChartPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_2__q = new GroupAlias(false, true, new TokenAlias(false, false, grammarAccess.getChartPackageAccess().getLeftCurlyBracketKeyword_3_0()), new TokenAlias(false, false, grammarAccess.getChartPackageAccess().getRightCurlyBracketKeyword_3_2()));
 		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 "";
 	}
@@ -90,85 +93,198 @@
 		List<INode> transitionNodes = collectNodes(fromNode, toNode);
 		for (AbstractElementAlias syntax : transition.getAmbiguousSyntaxes()) {
 			List<INode> syntaxNodes = getNodesFor(transitionNodes, syntax);
-			if(match_ChartPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q.equals(syntax))
-				emit_ChartPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q(semanticObject, getLastNavigableState(), syntaxNodes);
-			else if(match_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q.equals(syntax))
+			if (match_ChartPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_2__q.equals(syntax))
+				emit_ChartPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_2__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:
+	 * Ambiguous syntax:
 	 *     ('{' '}')?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     name=QualifiedName (ambiguity) (rule end)
 	 */
-	protected void emit_ChartPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_3__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+	protected void emit_ChartPackage___LeftCurlyBracketKeyword_3_0_RightCurlyBracketKeyword_3_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('(' ')')?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     annotationType=[JvmAnnotationType|QualifiedName] (ambiguity) (rule end)
 	 */
 	protected void emit_XAnnotation___LeftParenthesisKeyword_3_0_RightParenthesisKeyword_3_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ';'?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     expressions+=XExpressionOrVarDeclaration (ambiguity) '}' ')' (rule end)
+	 *     expressions+=XExpressionOrVarDeclaration (ambiguity) '}' (rule end)
+	 *     expressions+=XExpressionOrVarDeclaration (ambiguity) expressions+=XExpressionOrVarDeclaration
 	 */
 	protected void emit_XBlockExpression_SemicolonKeyword_2_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ';'?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     expressions+=XExpressionOrVarDeclaration (ambiguity) (rule end)
+	 *     expressions+=XExpressionOrVarDeclaration (ambiguity) expressions+=XExpressionOrVarDeclaration
 	 */
 	protected void emit_XExpressionInClosure_SemicolonKeyword_1_1_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ('(' ')')?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     (rule start) (ambiguity) '=>' returnType=JvmTypeReference
 	 */
 	protected void emit_XFunctionTypeRef___LeftParenthesisKeyword_0_0_RightParenthesisKeyword_0_2__q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     ';'?
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     importedFullyQualifiedName=QualifiedName (ambiguity) (rule end)
+	 *     importedNamespace=QualifiedNameWithWildcard (ambiguity) (rule end)
+	 *     importedType=[JvmDeclaredType|QualifiedName] (ambiguity) (rule end)
+	 *     memberName=ValidID (ambiguity) (rule end)
+	 *     wildcard?='*' (ambiguity) (rule end)
 	 */
-	protected void emit_XImportDeclaration_SemicolonKeyword_2_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
+	protected void emit_XImportDeclaration_SemicolonKeyword_3_q(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     '('*
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     (rule start) (ambiguity) '#' '[' ']' (rule start)
+	 *     (rule start) (ambiguity) '#' '[' elements+=XExpression
+	 *     (rule start) (ambiguity) '#' '{' '}' (rule start)
+	 *     (rule start) (ambiguity) '#' '{' elements+=XExpression
+	 *     (rule start) (ambiguity) '<' typeArguments+=JvmArgumentTypeReference
+	 *     (rule start) (ambiguity) '[' declaredFormalParameters+=JvmFormalParameter
+	 *     (rule start) (ambiguity) '[' explicitSyntax?='|'
+	 *     (rule start) (ambiguity) '[' expression=XExpressionInClosure
+	 *     (rule start) (ambiguity) 'do' body=XExpression
+	 *     (rule start) (ambiguity) 'false' (rule start)
+	 *     (rule start) (ambiguity) 'for' '(' ';' ';' ')' eachExpression=XExpression
+	 *     (rule start) (ambiguity) 'for' '(' ';' ';' updateExpressions+=XExpression
+	 *     (rule start) (ambiguity) 'for' '(' ';' expression=XExpression
+	 *     (rule start) (ambiguity) 'for' '(' declaredParam=JvmFormalParameter
+	 *     (rule start) (ambiguity) 'for' '(' initExpressions+=XExpressionOrVarDeclaration
+	 *     (rule start) (ambiguity) 'if' '(' if=XExpression
+	 *     (rule start) (ambiguity) 'new' constructor=[JvmConstructor|QualifiedName]
+	 *     (rule start) (ambiguity) 'null' (rule start)
+	 *     (rule start) (ambiguity) 'return' (rule start)
+	 *     (rule start) (ambiguity) 'return' expression=XExpression
+	 *     (rule start) (ambiguity) 'switch' '(' declaredParam=JvmFormalParameter
+	 *     (rule start) (ambiguity) 'switch' declaredParam=JvmFormalParameter
+	 *     (rule start) (ambiguity) 'switch' switch=XExpression
+	 *     (rule start) (ambiguity) 'synchronized' '(' param=XExpression
+	 *     (rule start) (ambiguity) 'throw' expression=XExpression
+	 *     (rule start) (ambiguity) 'try' expression=XExpression
+	 *     (rule start) (ambiguity) 'typeof' '(' type=[JvmType|QualifiedName]
+	 *     (rule start) (ambiguity) 'while' '(' predicate=XExpression
+	 *     (rule start) (ambiguity) '{' '}' (rule start)
+	 *     (rule start) (ambiguity) '{' expressions+=XExpressionOrVarDeclaration
+	 *     (rule start) (ambiguity) feature=[JvmIdentifiableElement|FeatureCallID]
+	 *     (rule start) (ambiguity) feature=[JvmIdentifiableElement|IdOrSuper]
+	 *     (rule start) (ambiguity) feature=[JvmIdentifiableElement|OpUnary]
+	 *     (rule start) (ambiguity) isTrue?='true'
+	 *     (rule start) (ambiguity) value=Number
+	 *     (rule start) (ambiguity) value=STRING
+	 *     (rule start) (ambiguity) {XAssignment.assignable=}
+	 *     (rule start) (ambiguity) {XBinaryOperation.leftOperand=}
+	 *     (rule start) (ambiguity) {XCastedExpression.target=}
+	 *     (rule start) (ambiguity) {XInstanceOfExpression.expression=}
+	 *     (rule start) (ambiguity) {XMemberFeatureCall.memberCallTarget=}
+	 *     (rule start) (ambiguity) {XPostfixOperation.operand=}
 	 */
 	protected void emit_XParenthesizedExpression_LeftParenthesisKeyword_0_a(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
 	}
 	
 	/**
-	 * Syntax:
+	 * Ambiguous syntax:
 	 *     '('+
+	 *
+	 * This ambiguous syntax occurs at:
+	 *     (rule start) (ambiguity) '#' '[' ']' ')' (rule start)
+	 *     (rule start) (ambiguity) '#' '[' elements+=XExpression
+	 *     (rule start) (ambiguity) '#' '{' '}' ')' (rule start)
+	 *     (rule start) (ambiguity) '#' '{' elements+=XExpression
+	 *     (rule start) (ambiguity) '<' typeArguments+=JvmArgumentTypeReference
+	 *     (rule start) (ambiguity) '[' declaredFormalParameters+=JvmFormalParameter
+	 *     (rule start) (ambiguity) '[' explicitSyntax?='|'
+	 *     (rule start) (ambiguity) '[' expression=XExpressionInClosure
+	 *     (rule start) (ambiguity) 'do' body=XExpression
+	 *     (rule start) (ambiguity) 'false' ')' (rule start)
+	 *     (rule start) (ambiguity) 'for' '(' ';' ';' ')' eachExpression=XExpression
+	 *     (rule start) (ambiguity) 'for' '(' ';' ';' updateExpressions+=XExpression
+	 *     (rule start) (ambiguity) 'for' '(' ';' expression=XExpression
+	 *     (rule start) (ambiguity) 'for' '(' declaredParam=JvmFormalParameter
+	 *     (rule start) (ambiguity) 'for' '(' initExpressions+=XExpressionOrVarDeclaration
+	 *     (rule start) (ambiguity) 'if' '(' if=XExpression
+	 *     (rule start) (ambiguity) 'new' constructor=[JvmConstructor|QualifiedName]
+	 *     (rule start) (ambiguity) 'null' ')' (rule start)
+	 *     (rule start) (ambiguity) 'return' ')' (rule start)
+	 *     (rule start) (ambiguity) 'return' expression=XExpression
+	 *     (rule start) (ambiguity) 'switch' '(' declaredParam=JvmFormalParameter
+	 *     (rule start) (ambiguity) 'switch' declaredParam=JvmFormalParameter
+	 *     (rule start) (ambiguity) 'switch' switch=XExpression
+	 *     (rule start) (ambiguity) 'synchronized' '(' param=XExpression
+	 *     (rule start) (ambiguity) 'throw' expression=XExpression
+	 *     (rule start) (ambiguity) 'try' expression=XExpression
+	 *     (rule start) (ambiguity) 'typeof' '(' type=[JvmType|QualifiedName]
+	 *     (rule start) (ambiguity) 'while' '(' predicate=XExpression
+	 *     (rule start) (ambiguity) '{' '}' ')' (rule start)
+	 *     (rule start) (ambiguity) '{' expressions+=XExpressionOrVarDeclaration
+	 *     (rule start) (ambiguity) feature=[JvmIdentifiableElement|FeatureCallID]
+	 *     (rule start) (ambiguity) feature=[JvmIdentifiableElement|IdOrSuper]
+	 *     (rule start) (ambiguity) feature=[JvmIdentifiableElement|OpUnary]
+	 *     (rule start) (ambiguity) isTrue?='true'
+	 *     (rule start) (ambiguity) value=Number
+	 *     (rule start) (ambiguity) value=STRING
+	 *     (rule start) (ambiguity) {XAssignment.assignable=}
+	 *     (rule start) (ambiguity) {XBinaryOperation.leftOperand=}
+	 *     (rule start) (ambiguity) {XCastedExpression.target=}
+	 *     (rule start) (ambiguity) {XInstanceOfExpression.expression=}
+	 *     (rule start) (ambiguity) {XMemberFeatureCall.memberCallTarget=}
+	 *     (rule start) (ambiguity) {XPostfixOperation.operand=}
 	 */
 	protected void emit_XParenthesizedExpression_LeftParenthesisKeyword_0_p(EObject semanticObject, ISynNavigable transition, List<INode> nodes) {
 		acceptNodes(transition, nodes);
diff --git a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/services/ChartDSLGrammarAccess.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/services/ChartDSLGrammarAccess.java
index a3f46fe..387b543 100644
--- a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/services/ChartDSLGrammarAccess.java
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/services/ChartDSLGrammarAccess.java
@@ -10,18 +10,33 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.chart.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.UnorderedGroup;
+import org.eclipse.xtext.service.AbstractElementFinder.AbstractEnumRuleElementFinder;
+import org.eclipse.xtext.service.AbstractElementFinder.AbstractGrammarElementFinder;
 import org.eclipse.xtext.service.GrammarProvider;
-import org.eclipse.xtext.service.AbstractElementFinder.*;
-
 import org.eclipse.xtext.xbase.annotations.services.XbaseWithAnnotationsGrammarAccess;
 import org.eclipse.xtext.xbase.services.XbaseGrammarAccess;
 import org.eclipse.xtext.xbase.services.XtypeGrammarAccess;
@@ -29,25 +44,36 @@
 @Singleton
 public class ChartDSLGrammarAccess extends AbstractGrammarElementFinder {
 	
-	
 	public class ChartModelElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartModel");
-		private final Assignment cPackagesAssignment = (Assignment)rule.eContents().get(1);
-		private final RuleCall cPackagesChartPackageParserRuleCall_0 = (RuleCall)cPackagesAssignment.eContents().get(0);
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.ChartModel");
+		private final Group cGroup = (Group)rule.eContents().get(1);
+		private final Assignment cImportSectionAssignment_0 = (Assignment)cGroup.eContents().get(0);
+		private final RuleCall cImportSectionXImportSectionParserRuleCall_0_0 = (RuleCall)cImportSectionAssignment_0.eContents().get(0);
+		private final Assignment cPackagesAssignment_1 = (Assignment)cGroup.eContents().get(1);
+		private final RuleCall cPackagesChartPackageParserRuleCall_1_0 = (RuleCall)cPackagesAssignment_1.eContents().get(0);
 		
 		//ChartModel:
+		//	importSection=XImportSection?
 		//	packages+=ChartPackage*;
-		public ParserRule getRule() { return rule; }
-
+		@Override public ParserRule getRule() { return rule; }
+		
+		//importSection=XImportSection? packages+=ChartPackage*
+		public Group getGroup() { return cGroup; }
+		
+		//importSection=XImportSection?
+		public Assignment getImportSectionAssignment_0() { return cImportSectionAssignment_0; }
+		
+		//XImportSection
+		public RuleCall getImportSectionXImportSectionParserRuleCall_0_0() { return cImportSectionXImportSectionParserRuleCall_0_0; }
+		
 		//packages+=ChartPackage*
-		public Assignment getPackagesAssignment() { return cPackagesAssignment; }
-
+		public Assignment getPackagesAssignment_1() { return cPackagesAssignment_1; }
+		
 		//ChartPackage
-		public RuleCall getPackagesChartPackageParserRuleCall_0() { return cPackagesChartPackageParserRuleCall_0; }
+		public RuleCall getPackagesChartPackageParserRuleCall_1_0() { return cPackagesChartPackageParserRuleCall_1_0; }
 	}
-
 	public class ChartPackageElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartPackage");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.ChartPackage");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cChartPackageAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cPackageKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -55,55 +81,46 @@
 		private final RuleCall cNameQualifiedNameParserRuleCall_2_0 = (RuleCall)cNameAssignment_2.eContents().get(0);
 		private final Group cGroup_3 = (Group)cGroup.eContents().get(3);
 		private final Keyword cLeftCurlyBracketKeyword_3_0 = (Keyword)cGroup_3.eContents().get(0);
-		private final Assignment cImportsAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
-		private final RuleCall cImportsChartImportParserRuleCall_3_1_0 = (RuleCall)cImportsAssignment_3_1.eContents().get(0);
-		private final Assignment cChartsAssignment_3_2 = (Assignment)cGroup_3.eContents().get(2);
-		private final RuleCall cChartsChartParserRuleCall_3_2_0 = (RuleCall)cChartsAssignment_3_2.eContents().get(0);
-		private final Keyword cRightCurlyBracketKeyword_3_3 = (Keyword)cGroup_3.eContents().get(3);
+		private final Assignment cChartsAssignment_3_1 = (Assignment)cGroup_3.eContents().get(1);
+		private final RuleCall cChartsChartParserRuleCall_3_1_0 = (RuleCall)cChartsAssignment_3_1.eContents().get(0);
+		private final Keyword cRightCurlyBracketKeyword_3_2 = (Keyword)cGroup_3.eContents().get(2);
 		
 		//ChartPackage:
-		//	{ChartPackage} "package" name=QualifiedName ("{" imports+=ChartImport* charts+=Chart* "}")?;
-		public ParserRule getRule() { return rule; }
-
-		//{ChartPackage} "package" name=QualifiedName ("{" imports+=ChartImport* charts+=Chart* "}")?
+		//	{ChartPackage} 'package' name=QualifiedName ('{' charts+=Chart* '}')?;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{ChartPackage} 'package' name=QualifiedName ('{' charts+=Chart* '}')?
 		public Group getGroup() { return cGroup; }
-
+		
 		//{ChartPackage}
 		public Action getChartPackageAction_0() { return cChartPackageAction_0; }
-
-		//"package"
+		
+		//'package'
 		public Keyword getPackageKeyword_1() { return cPackageKeyword_1; }
-
+		
 		//name=QualifiedName
 		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
-
+		
 		//QualifiedName
 		public RuleCall getNameQualifiedNameParserRuleCall_2_0() { return cNameQualifiedNameParserRuleCall_2_0; }
-
-		//("{" imports+=ChartImport* charts+=Chart* "}")?
+		
+		//('{' charts+=Chart* '}')?
 		public Group getGroup_3() { return cGroup_3; }
-
-		//"{"
+		
+		//'{'
 		public Keyword getLeftCurlyBracketKeyword_3_0() { return cLeftCurlyBracketKeyword_3_0; }
-
-		//imports+=ChartImport*
-		public Assignment getImportsAssignment_3_1() { return cImportsAssignment_3_1; }
-
-		//ChartImport
-		public RuleCall getImportsChartImportParserRuleCall_3_1_0() { return cImportsChartImportParserRuleCall_3_1_0; }
-
+		
 		//charts+=Chart*
-		public Assignment getChartsAssignment_3_2() { return cChartsAssignment_3_2; }
-
+		public Assignment getChartsAssignment_3_1() { return cChartsAssignment_3_1; }
+		
 		//Chart
-		public RuleCall getChartsChartParserRuleCall_3_2_0() { return cChartsChartParserRuleCall_3_2_0; }
-
-		//"}"
-		public Keyword getRightCurlyBracketKeyword_3_3() { return cRightCurlyBracketKeyword_3_3; }
+		public RuleCall getChartsChartParserRuleCall_3_1_0() { return cChartsChartParserRuleCall_3_1_0; }
+		
+		//'}'
+		public Keyword getRightCurlyBracketKeyword_3_2() { return cRightCurlyBracketKeyword_3_2; }
 	}
-
 	public class ChartElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "Chart");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.Chart");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cChartAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cChartKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -117,91 +134,104 @@
 		private final Keyword cAsKeyword_4 = (Keyword)cGroup.eContents().get(4);
 		private final Assignment cCharttypeAssignment_5 = (Assignment)cGroup.eContents().get(5);
 		private final RuleCall cCharttypeChartOptionParserRuleCall_5_0 = (RuleCall)cCharttypeAssignment_5.eContents().get(0);
-		private final Group cGroup_6 = (Group)cGroup.eContents().get(6);
-		private final Assignment cPollingAssignment_6_0 = (Assignment)cGroup_6.eContents().get(0);
-		private final Keyword cPollingPollingKeyword_6_0_0 = (Keyword)cPollingAssignment_6_0.eContents().get(0);
-		private final Assignment cPollingTimeAssignment_6_1 = (Assignment)cGroup_6.eContents().get(1);
-		private final RuleCall cPollingTimeINTTerminalRuleCall_6_1_0 = (RuleCall)cPollingTimeAssignment_6_1.eContents().get(0);
+		private final UnorderedGroup cUnorderedGroup_6 = (UnorderedGroup)cGroup.eContents().get(6);
+		private final Group cGroup_6_0 = (Group)cUnorderedGroup_6.eContents().get(0);
+		private final Assignment cPollingAssignment_6_0_0 = (Assignment)cGroup_6_0.eContents().get(0);
+		private final Keyword cPollingPollingKeyword_6_0_0_0 = (Keyword)cPollingAssignment_6_0_0.eContents().get(0);
+		private final Assignment cPollingTimeAssignment_6_0_1 = (Assignment)cGroup_6_0.eContents().get(1);
+		private final RuleCall cPollingTimeINTTerminalRuleCall_6_0_1_0 = (RuleCall)cPollingTimeAssignment_6_0_1.eContents().get(0);
+		private final Assignment cSelectByIdAssignment_6_1 = (Assignment)cUnorderedGroup_6.eContents().get(1);
+		private final Keyword cSelectByIdSelectByIdKeyword_6_1_0 = (Keyword)cSelectByIdAssignment_6_1.eContents().get(0);
 		private final Group cGroup_7 = (Group)cGroup.eContents().get(7);
 		private final Keyword cUsingKeyword_7_0 = (Keyword)cGroup_7.eContents().get(0);
 		private final Assignment cSourceAssignment_7_1 = (Assignment)cGroup_7.eContents().get(1);
 		private final RuleCall cSourceChartDatamartParserRuleCall_7_1_0 = (RuleCall)cSourceAssignment_7_1.eContents().get(0);
 		
 		//Chart:
-		//	{Chart} "chart" name=TRANSLATABLEID (description?="described by" descriptionValue=TRANSLATABLESTRING)? "as"
-		//	charttype=ChartOption (polling?="polling" pollingTime=INT)? ("using" source=ChartDatamart)?;
-		public ParserRule getRule() { return rule; }
-
-		//{Chart} "chart" name=TRANSLATABLEID (description?="described by" descriptionValue=TRANSLATABLESTRING)? "as"
-		//charttype=ChartOption (polling?="polling" pollingTime=INT)? ("using" source=ChartDatamart)?
+		//	{Chart} 'chart' name=TRANSLATABLEID (description?='describedBy' descriptionValue=TRANSLATABLESTRING)? 'as'
+		//	charttype=ChartOption ((polling?='polling' pollingTime=INT)? & selectById?='selectById'?) ('using'
+		//	source=ChartDatamart)?;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{Chart} 'chart' name=TRANSLATABLEID (description?='describedBy' descriptionValue=TRANSLATABLESTRING)? 'as'
+		//charttype=ChartOption ((polling?='polling' pollingTime=INT)? & selectById?='selectById'?) ('using'
+		//source=ChartDatamart)?
 		public Group getGroup() { return cGroup; }
-
+		
 		//{Chart}
 		public Action getChartAction_0() { return cChartAction_0; }
-
-		//"chart"
+		
+		//'chart'
 		public Keyword getChartKeyword_1() { return cChartKeyword_1; }
-
+		
 		//name=TRANSLATABLEID
 		public Assignment getNameAssignment_2() { return cNameAssignment_2; }
-
+		
 		//TRANSLATABLEID
 		public RuleCall getNameTRANSLATABLEIDParserRuleCall_2_0() { return cNameTRANSLATABLEIDParserRuleCall_2_0; }
-
-		//(description?="described by" descriptionValue=TRANSLATABLESTRING)?
+		
+		//(description?='describedBy' descriptionValue=TRANSLATABLESTRING)?
 		public Group getGroup_3() { return cGroup_3; }
-
-		//description?="described by"
+		
+		//description?='describedBy'
 		public Assignment getDescriptionAssignment_3_0() { return cDescriptionAssignment_3_0; }
-
-		//"described by"
+		
+		//'describedBy'
 		public Keyword getDescriptionDescribedByKeyword_3_0_0() { return cDescriptionDescribedByKeyword_3_0_0; }
-
+		
 		//descriptionValue=TRANSLATABLESTRING
 		public Assignment getDescriptionValueAssignment_3_1() { return cDescriptionValueAssignment_3_1; }
-
+		
 		//TRANSLATABLESTRING
 		public RuleCall getDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0() { return cDescriptionValueTRANSLATABLESTRINGParserRuleCall_3_1_0; }
-
-		//"as"
+		
+		//'as'
 		public Keyword getAsKeyword_4() { return cAsKeyword_4; }
-
+		
 		//charttype=ChartOption
 		public Assignment getCharttypeAssignment_5() { return cCharttypeAssignment_5; }
-
+		
 		//ChartOption
 		public RuleCall getCharttypeChartOptionParserRuleCall_5_0() { return cCharttypeChartOptionParserRuleCall_5_0; }
-
-		//(polling?="polling" pollingTime=INT)?
-		public Group getGroup_6() { return cGroup_6; }
-
-		//polling?="polling"
-		public Assignment getPollingAssignment_6_0() { return cPollingAssignment_6_0; }
-
-		//"polling"
-		public Keyword getPollingPollingKeyword_6_0_0() { return cPollingPollingKeyword_6_0_0; }
-
+		
+		//(polling?='polling' pollingTime=INT)? & selectById?='selectById'?
+		public UnorderedGroup getUnorderedGroup_6() { return cUnorderedGroup_6; }
+		
+		//(polling?='polling' pollingTime=INT)?
+		public Group getGroup_6_0() { return cGroup_6_0; }
+		
+		//polling?='polling'
+		public Assignment getPollingAssignment_6_0_0() { return cPollingAssignment_6_0_0; }
+		
+		//'polling'
+		public Keyword getPollingPollingKeyword_6_0_0_0() { return cPollingPollingKeyword_6_0_0_0; }
+		
 		//pollingTime=INT
-		public Assignment getPollingTimeAssignment_6_1() { return cPollingTimeAssignment_6_1; }
-
+		public Assignment getPollingTimeAssignment_6_0_1() { return cPollingTimeAssignment_6_0_1; }
+		
 		//INT
-		public RuleCall getPollingTimeINTTerminalRuleCall_6_1_0() { return cPollingTimeINTTerminalRuleCall_6_1_0; }
-
-		//("using" source=ChartDatamart)?
+		public RuleCall getPollingTimeINTTerminalRuleCall_6_0_1_0() { return cPollingTimeINTTerminalRuleCall_6_0_1_0; }
+		
+		//selectById?='selectById'?
+		public Assignment getSelectByIdAssignment_6_1() { return cSelectByIdAssignment_6_1; }
+		
+		//'selectById'
+		public Keyword getSelectByIdSelectByIdKeyword_6_1_0() { return cSelectByIdSelectByIdKeyword_6_1_0; }
+		
+		//('using' source=ChartDatamart)?
 		public Group getGroup_7() { return cGroup_7; }
-
-		//"using"
+		
+		//'using'
 		public Keyword getUsingKeyword_7_0() { return cUsingKeyword_7_0; }
-
+		
 		//source=ChartDatamart
 		public Assignment getSourceAssignment_7_1() { return cSourceAssignment_7_1; }
-
+		
 		//ChartDatamart
 		public RuleCall getSourceChartDatamartParserRuleCall_7_1_0() { return cSourceChartDatamartParserRuleCall_7_1_0; }
 	}
-
 	public class ChartOptionElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartOption");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.ChartOption");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final RuleCall cChartBarParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
 		private final RuleCall cChartLineParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
@@ -213,35 +243,34 @@
 		
 		//ChartOption:
 		//	ChartBar | ChartLine | ChartPie | ChartDonut | ChartBubble | ChartGauge | ChartTree;
-		public ParserRule getRule() { return rule; }
-
+		@Override public ParserRule getRule() { return rule; }
+		
 		//ChartBar | ChartLine | ChartPie | ChartDonut | ChartBubble | ChartGauge | ChartTree
 		public Alternatives getAlternatives() { return cAlternatives; }
-
+		
 		//ChartBar
 		public RuleCall getChartBarParserRuleCall_0() { return cChartBarParserRuleCall_0; }
-
+		
 		//ChartLine
 		public RuleCall getChartLineParserRuleCall_1() { return cChartLineParserRuleCall_1; }
-
+		
 		//ChartPie
 		public RuleCall getChartPieParserRuleCall_2() { return cChartPieParserRuleCall_2; }
-
+		
 		//ChartDonut
 		public RuleCall getChartDonutParserRuleCall_3() { return cChartDonutParserRuleCall_3; }
-
+		
 		//ChartBubble
 		public RuleCall getChartBubbleParserRuleCall_4() { return cChartBubbleParserRuleCall_4; }
-
+		
 		//ChartGauge
 		public RuleCall getChartGaugeParserRuleCall_5() { return cChartGaugeParserRuleCall_5; }
-
+		
 		//ChartTree
 		public RuleCall getChartTreeParserRuleCall_6() { return cChartTreeParserRuleCall_6; }
 	}
-
 	public class ChartBarElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartBar");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.ChartBar");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cChartBarAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cBarKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -256,48 +285,47 @@
 		private final Keyword cStackedStackedKeyword_2_3_0 = (Keyword)cStackedAssignment_2_3.eContents().get(0);
 		
 		//ChartBar:
-		//	{ChartBar} "bar" (shadow?="shaded"? & animated?="animated"? & swapped?="swapped"? & stacked?="stacked"?);
-		public ParserRule getRule() { return rule; }
-
-		//{ChartBar} "bar" (shadow?="shaded"? & animated?="animated"? & swapped?="swapped"? & stacked?="stacked"?)
+		//	{ChartBar} 'bar' (shadow?='shaded'? & animated?='animated'? & swapped?='swapped'? & stacked?='stacked'?);
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{ChartBar} 'bar' (shadow?='shaded'? & animated?='animated'? & swapped?='swapped'? & stacked?='stacked'?)
 		public Group getGroup() { return cGroup; }
-
+		
 		//{ChartBar}
 		public Action getChartBarAction_0() { return cChartBarAction_0; }
-
-		//"bar"
+		
+		//'bar'
 		public Keyword getBarKeyword_1() { return cBarKeyword_1; }
-
-		//shadow?="shaded"? & animated?="animated"? & swapped?="swapped"? & stacked?="stacked"?
+		
+		//shadow?='shaded'? & animated?='animated'? & swapped?='swapped'? & stacked?='stacked'?
 		public UnorderedGroup getUnorderedGroup_2() { return cUnorderedGroup_2; }
-
-		//shadow?="shaded"?
+		
+		//shadow?='shaded'?
 		public Assignment getShadowAssignment_2_0() { return cShadowAssignment_2_0; }
-
-		//"shaded"
+		
+		//'shaded'
 		public Keyword getShadowShadedKeyword_2_0_0() { return cShadowShadedKeyword_2_0_0; }
-
-		//animated?="animated"?
+		
+		//animated?='animated'?
 		public Assignment getAnimatedAssignment_2_1() { return cAnimatedAssignment_2_1; }
-
-		//"animated"
+		
+		//'animated'
 		public Keyword getAnimatedAnimatedKeyword_2_1_0() { return cAnimatedAnimatedKeyword_2_1_0; }
-
-		//swapped?="swapped"?
+		
+		//swapped?='swapped'?
 		public Assignment getSwappedAssignment_2_2() { return cSwappedAssignment_2_2; }
-
-		//"swapped"
+		
+		//'swapped'
 		public Keyword getSwappedSwappedKeyword_2_2_0() { return cSwappedSwappedKeyword_2_2_0; }
-
-		//stacked?="stacked"?
+		
+		//stacked?='stacked'?
 		public Assignment getStackedAssignment_2_3() { return cStackedAssignment_2_3; }
-
-		//"stacked"
+		
+		//'stacked'
 		public Keyword getStackedStackedKeyword_2_3_0() { return cStackedStackedKeyword_2_3_0; }
 	}
-
 	public class ChartLineElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartLine");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.ChartLine");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cChartLineAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cLineKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -321,78 +349,77 @@
 		private final Keyword cFillAreaFilledKeyword_2_5_0 = (Keyword)cFillAreaAssignment_2_5.eContents().get(0);
 		
 		//ChartLine:
-		//	{ChartLine} "line" (animated?="animated"? & showMarker?="showMarker"? & trendLine?="trendLine"? & (cursor?="cursor"
-		//	zoom?="zoom"? tooltip?="tooltip"?)? & fillToZero?="fillZero"? & fillArea?="filled"?);
-		public ParserRule getRule() { return rule; }
-
-		//{ChartLine} "line" (animated?="animated"? & showMarker?="showMarker"? & trendLine?="trendLine"? & (cursor?="cursor"
-		//zoom?="zoom"? tooltip?="tooltip"?)? & fillToZero?="fillZero"? & fillArea?="filled"?)
+		//	{ChartLine} 'line' (animated?='animated'? & showMarker?='showMarker'? & trendLine?='trendLine'? & (cursor?='cursor'
+		//	zoom?='zoom'? tooltip?='tooltip'?)? & fillToZero?='fillZero'? & fillArea?='filled'?);
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{ChartLine} 'line' (animated?='animated'? & showMarker?='showMarker'? & trendLine?='trendLine'? & (cursor?='cursor'
+		//zoom?='zoom'? tooltip?='tooltip'?)? & fillToZero?='fillZero'? & fillArea?='filled'?)
 		public Group getGroup() { return cGroup; }
-
+		
 		//{ChartLine}
 		public Action getChartLineAction_0() { return cChartLineAction_0; }
-
-		//"line"
+		
+		//'line'
 		public Keyword getLineKeyword_1() { return cLineKeyword_1; }
-
-		//animated?="animated"? & showMarker?="showMarker"? & trendLine?="trendLine"? & (cursor?="cursor" zoom?="zoom"?
-		//tooltip?="tooltip"?)? & fillToZero?="fillZero"? & fillArea?="filled"?
+		
+		//animated?='animated'? & showMarker?='showMarker'? & trendLine?='trendLine'? & (cursor?='cursor' zoom?='zoom'?
+		//tooltip?='tooltip'?)? & fillToZero?='fillZero'? & fillArea?='filled'?
 		public UnorderedGroup getUnorderedGroup_2() { return cUnorderedGroup_2; }
-
-		//animated?="animated"?
+		
+		//animated?='animated'?
 		public Assignment getAnimatedAssignment_2_0() { return cAnimatedAssignment_2_0; }
-
-		//"animated"
+		
+		//'animated'
 		public Keyword getAnimatedAnimatedKeyword_2_0_0() { return cAnimatedAnimatedKeyword_2_0_0; }
-
-		//showMarker?="showMarker"?
+		
+		//showMarker?='showMarker'?
 		public Assignment getShowMarkerAssignment_2_1() { return cShowMarkerAssignment_2_1; }
-
-		//"showMarker"
+		
+		//'showMarker'
 		public Keyword getShowMarkerShowMarkerKeyword_2_1_0() { return cShowMarkerShowMarkerKeyword_2_1_0; }
-
-		//trendLine?="trendLine"?
+		
+		//trendLine?='trendLine'?
 		public Assignment getTrendLineAssignment_2_2() { return cTrendLineAssignment_2_2; }
-
-		//"trendLine"
+		
+		//'trendLine'
 		public Keyword getTrendLineTrendLineKeyword_2_2_0() { return cTrendLineTrendLineKeyword_2_2_0; }
-
-		//(cursor?="cursor" zoom?="zoom"? tooltip?="tooltip"?)?
+		
+		//(cursor?='cursor' zoom?='zoom'? tooltip?='tooltip'?)?
 		public Group getGroup_2_3() { return cGroup_2_3; }
-
-		//cursor?="cursor"
+		
+		//cursor?='cursor'
 		public Assignment getCursorAssignment_2_3_0() { return cCursorAssignment_2_3_0; }
-
-		//"cursor"
+		
+		//'cursor'
 		public Keyword getCursorCursorKeyword_2_3_0_0() { return cCursorCursorKeyword_2_3_0_0; }
-
-		//zoom?="zoom"?
+		
+		//zoom?='zoom'?
 		public Assignment getZoomAssignment_2_3_1() { return cZoomAssignment_2_3_1; }
-
-		//"zoom"
+		
+		//'zoom'
 		public Keyword getZoomZoomKeyword_2_3_1_0() { return cZoomZoomKeyword_2_3_1_0; }
-
-		//tooltip?="tooltip"?
+		
+		//tooltip?='tooltip'?
 		public Assignment getTooltipAssignment_2_3_2() { return cTooltipAssignment_2_3_2; }
-
-		//"tooltip"
+		
+		//'tooltip'
 		public Keyword getTooltipTooltipKeyword_2_3_2_0() { return cTooltipTooltipKeyword_2_3_2_0; }
-
-		//fillToZero?="fillZero"?
+		
+		//fillToZero?='fillZero'?
 		public Assignment getFillToZeroAssignment_2_4() { return cFillToZeroAssignment_2_4; }
-
-		//"fillZero"
+		
+		//'fillZero'
 		public Keyword getFillToZeroFillZeroKeyword_2_4_0() { return cFillToZeroFillZeroKeyword_2_4_0; }
-
-		//fillArea?="filled"?
+		
+		//fillArea?='filled'?
 		public Assignment getFillAreaAssignment_2_5() { return cFillAreaAssignment_2_5; }
-
-		//"filled"
+		
+		//'filled'
 		public Keyword getFillAreaFilledKeyword_2_5_0() { return cFillAreaFilledKeyword_2_5_0; }
 	}
-
 	public class ChartPieElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartPie");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.ChartPie");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cChartPieAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cPieKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -400,47 +427,45 @@
 		private final Keyword cEmptyEmptyKeyword_2_0 = (Keyword)cEmptyAssignment_2.eContents().get(0);
 		
 		//ChartPie:
-		//	{ChartPie} "pie" empty?="empty"?;
-		public ParserRule getRule() { return rule; }
-
-		//{ChartPie} "pie" empty?="empty"?
+		//	{ChartPie} 'pie' empty?='empty'?;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{ChartPie} 'pie' empty?='empty'?
 		public Group getGroup() { return cGroup; }
-
+		
 		//{ChartPie}
 		public Action getChartPieAction_0() { return cChartPieAction_0; }
-
-		//"pie"
+		
+		//'pie'
 		public Keyword getPieKeyword_1() { return cPieKeyword_1; }
-
-		//empty?="empty"?
+		
+		//empty?='empty'?
 		public Assignment getEmptyAssignment_2() { return cEmptyAssignment_2; }
-
-		//"empty"
+		
+		//'empty'
 		public Keyword getEmptyEmptyKeyword_2_0() { return cEmptyEmptyKeyword_2_0; }
 	}
-
 	public class ChartDonutElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartDonut");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.ChartDonut");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cChartDonutAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cDonutKeyword_1 = (Keyword)cGroup.eContents().get(1);
 		
 		//ChartDonut:
-		//	{ChartDonut} "donut";
-		public ParserRule getRule() { return rule; }
-
-		//{ChartDonut} "donut"
+		//	{ChartDonut} 'donut';
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{ChartDonut} 'donut'
 		public Group getGroup() { return cGroup; }
-
+		
 		//{ChartDonut}
 		public Action getChartDonutAction_0() { return cChartDonutAction_0; }
-
-		//"donut"
+		
+		//'donut'
 		public Keyword getDonutKeyword_1() { return cDonutKeyword_1; }
 	}
-
 	public class ChartBubbleElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartBubble");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.ChartBubble");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cChartBubbleAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cBubbleKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -457,56 +482,55 @@
 		private final Keyword cTransparentTransparentKeyword_2_1_1_0 = (Keyword)cTransparentAssignment_2_1_1.eContents().get(0);
 		
 		//ChartBubble:
-		//	{ChartBubble} "bubble" ((multiplier?="multiplier" multiplierValue=Number)? & (gradient?="gradient" |
-		//	transparent?="transparent"))?;
-		public ParserRule getRule() { return rule; }
-
-		//{ChartBubble} "bubble" ((multiplier?="multiplier" multiplierValue=Number)? & (gradient?="gradient" |
-		//transparent?="transparent"))?
+		//	{ChartBubble} 'bubble' ((multiplier?='multiplier' multiplierValue=Number)? & (gradient?='gradient' |
+		//	transparent?='transparent'))?;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{ChartBubble} 'bubble' ((multiplier?='multiplier' multiplierValue=Number)? & (gradient?='gradient' |
+		//transparent?='transparent'))?
 		public Group getGroup() { return cGroup; }
-
+		
 		//{ChartBubble}
 		public Action getChartBubbleAction_0() { return cChartBubbleAction_0; }
-
-		//"bubble"
+		
+		//'bubble'
 		public Keyword getBubbleKeyword_1() { return cBubbleKeyword_1; }
-
-		//((multiplier?="multiplier" multiplierValue=Number)? & (gradient?="gradient" | transparent?="transparent"))?
+		
+		//((multiplier?='multiplier' multiplierValue=Number)? & (gradient?='gradient' | transparent?='transparent'))?
 		public UnorderedGroup getUnorderedGroup_2() { return cUnorderedGroup_2; }
-
-		//(multiplier?="multiplier" multiplierValue=Number)?
+		
+		//(multiplier?='multiplier' multiplierValue=Number)?
 		public Group getGroup_2_0() { return cGroup_2_0; }
-
-		//multiplier?="multiplier"
+		
+		//multiplier?='multiplier'
 		public Assignment getMultiplierAssignment_2_0_0() { return cMultiplierAssignment_2_0_0; }
-
-		//"multiplier"
+		
+		//'multiplier'
 		public Keyword getMultiplierMultiplierKeyword_2_0_0_0() { return cMultiplierMultiplierKeyword_2_0_0_0; }
-
+		
 		//multiplierValue=Number
 		public Assignment getMultiplierValueAssignment_2_0_1() { return cMultiplierValueAssignment_2_0_1; }
-
+		
 		//Number
 		public RuleCall getMultiplierValueNumberParserRuleCall_2_0_1_0() { return cMultiplierValueNumberParserRuleCall_2_0_1_0; }
-
-		//gradient?="gradient" | transparent?="transparent"
+		
+		//(gradient?='gradient' | transparent?='transparent')
 		public Alternatives getAlternatives_2_1() { return cAlternatives_2_1; }
-
-		//gradient?="gradient"
+		
+		//gradient?='gradient'
 		public Assignment getGradientAssignment_2_1_0() { return cGradientAssignment_2_1_0; }
-
-		//"gradient"
+		
+		//'gradient'
 		public Keyword getGradientGradientKeyword_2_1_0_0() { return cGradientGradientKeyword_2_1_0_0; }
-
-		//transparent?="transparent"
+		
+		//transparent?='transparent'
 		public Assignment getTransparentAssignment_2_1_1() { return cTransparentAssignment_2_1_1; }
-
-		//"transparent"
+		
+		//'transparent'
 		public Keyword getTransparentTransparentKeyword_2_1_1_0() { return cTransparentTransparentKeyword_2_1_1_0; }
 	}
-
 	public class ChartGaugeElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartGauge");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.ChartGauge");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cChartGaugeAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cGaugeKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -534,90 +558,89 @@
 		private final Keyword cRightCurlyBracketKeyword_2_2_3 = (Keyword)cGroup_2_2.eContents().get(3);
 		
 		//ChartGauge:
-		//	{ChartGauge} "gauge" ((labeled?="label" labelValue=STRING)? & (hasTicks?="hasTicks" "minimum" minValue=INT "maximum"
-		//	maxValue=INT)? & (hasIntervals?="intervals" "{" intervals+=ChartInterval* "}")?);
-		public ParserRule getRule() { return rule; }
-
-		//{ChartGauge} "gauge" ((labeled?="label" labelValue=STRING)? & (hasTicks?="hasTicks" "minimum" minValue=INT "maximum"
-		//maxValue=INT)? & (hasIntervals?="intervals" "{" intervals+=ChartInterval* "}")?)
+		//	{ChartGauge} 'gauge' ((labeled?='label' labelValue=STRING)? & (hasTicks?='hasTicks' 'minimum' minValue=INT 'maximum'
+		//	maxValue=INT)? & (hasIntervals?='intervals' '{' intervals+=ChartInterval* '}')?);
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{ChartGauge} 'gauge' ((labeled?='label' labelValue=STRING)? & (hasTicks?='hasTicks' 'minimum' minValue=INT 'maximum'
+		//maxValue=INT)? & (hasIntervals?='intervals' '{' intervals+=ChartInterval* '}')?)
 		public Group getGroup() { return cGroup; }
-
+		
 		//{ChartGauge}
 		public Action getChartGaugeAction_0() { return cChartGaugeAction_0; }
-
-		//"gauge"
+		
+		//'gauge'
 		public Keyword getGaugeKeyword_1() { return cGaugeKeyword_1; }
-
-		//(labeled?="label" labelValue=STRING)? & (hasTicks?="hasTicks" "minimum" minValue=INT "maximum" maxValue=INT)? &
-		//(hasIntervals?="intervals" "{" intervals+=ChartInterval* "}")?
+		
+		//(labeled?='label' labelValue=STRING)? & (hasTicks?='hasTicks' 'minimum' minValue=INT 'maximum' maxValue=INT)? &
+		//(hasIntervals?='intervals' '{' intervals+=ChartInterval* '}')?
 		public UnorderedGroup getUnorderedGroup_2() { return cUnorderedGroup_2; }
-
-		//(labeled?="label" labelValue=STRING)?
+		
+		//(labeled?='label' labelValue=STRING)?
 		public Group getGroup_2_0() { return cGroup_2_0; }
-
-		//labeled?="label"
+		
+		//labeled?='label'
 		public Assignment getLabeledAssignment_2_0_0() { return cLabeledAssignment_2_0_0; }
-
-		//"label"
+		
+		//'label'
 		public Keyword getLabeledLabelKeyword_2_0_0_0() { return cLabeledLabelKeyword_2_0_0_0; }
-
+		
 		//labelValue=STRING
 		public Assignment getLabelValueAssignment_2_0_1() { return cLabelValueAssignment_2_0_1; }
-
+		
 		//STRING
 		public RuleCall getLabelValueSTRINGTerminalRuleCall_2_0_1_0() { return cLabelValueSTRINGTerminalRuleCall_2_0_1_0; }
-
-		//(hasTicks?="hasTicks" "minimum" minValue=INT "maximum" maxValue=INT)?
+		
+		//(hasTicks?='hasTicks' 'minimum' minValue=INT 'maximum' maxValue=INT)?
 		public Group getGroup_2_1() { return cGroup_2_1; }
-
-		//hasTicks?="hasTicks"
+		
+		//hasTicks?='hasTicks'
 		public Assignment getHasTicksAssignment_2_1_0() { return cHasTicksAssignment_2_1_0; }
-
-		//"hasTicks"
+		
+		//'hasTicks'
 		public Keyword getHasTicksHasTicksKeyword_2_1_0_0() { return cHasTicksHasTicksKeyword_2_1_0_0; }
-
-		//"minimum"
+		
+		//'minimum'
 		public Keyword getMinimumKeyword_2_1_1() { return cMinimumKeyword_2_1_1; }
-
+		
 		//minValue=INT
 		public Assignment getMinValueAssignment_2_1_2() { return cMinValueAssignment_2_1_2; }
-
+		
 		//INT
 		public RuleCall getMinValueINTTerminalRuleCall_2_1_2_0() { return cMinValueINTTerminalRuleCall_2_1_2_0; }
-
-		//"maximum"
+		
+		//'maximum'
 		public Keyword getMaximumKeyword_2_1_3() { return cMaximumKeyword_2_1_3; }
-
+		
 		//maxValue=INT
 		public Assignment getMaxValueAssignment_2_1_4() { return cMaxValueAssignment_2_1_4; }
-
+		
 		//INT
 		public RuleCall getMaxValueINTTerminalRuleCall_2_1_4_0() { return cMaxValueINTTerminalRuleCall_2_1_4_0; }
-
-		//(hasIntervals?="intervals" "{" intervals+=ChartInterval* "}")?
+		
+		//(hasIntervals?='intervals' '{' intervals+=ChartInterval* '}')?
 		public Group getGroup_2_2() { return cGroup_2_2; }
-
-		//hasIntervals?="intervals"
+		
+		//hasIntervals?='intervals'
 		public Assignment getHasIntervalsAssignment_2_2_0() { return cHasIntervalsAssignment_2_2_0; }
-
-		//"intervals"
+		
+		//'intervals'
 		public Keyword getHasIntervalsIntervalsKeyword_2_2_0_0() { return cHasIntervalsIntervalsKeyword_2_2_0_0; }
-
-		//"{"
+		
+		//'{'
 		public Keyword getLeftCurlyBracketKeyword_2_2_1() { return cLeftCurlyBracketKeyword_2_2_1; }
-
+		
 		//intervals+=ChartInterval*
 		public Assignment getIntervalsAssignment_2_2_2() { return cIntervalsAssignment_2_2_2; }
-
+		
 		//ChartInterval
 		public RuleCall getIntervalsChartIntervalParserRuleCall_2_2_2_0() { return cIntervalsChartIntervalParserRuleCall_2_2_2_0; }
-
-		//"}"
+		
+		//'}'
 		public Keyword getRightCurlyBracketKeyword_2_2_3() { return cRightCurlyBracketKeyword_2_2_3; }
 	}
-
 	public class ChartTreeElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartTree");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.ChartTree");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cChartTreeAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cTreeKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -628,48 +651,46 @@
 		private final Keyword cCollapsibleCollapsibleKeyword_2_1_0 = (Keyword)cCollapsibleAssignment_2_1.eContents().get(0);
 		
 		//ChartTree:
-		//	{ChartTree} "tree" (map?="map" | collapsible?="collapsible");
-		public ParserRule getRule() { return rule; }
-
-		//{ChartTree} "tree" (map?="map" | collapsible?="collapsible")
+		//	{ChartTree} 'tree' (map?='map' | collapsible?='collapsible');
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{ChartTree} 'tree' (map?='map' | collapsible?='collapsible')
 		public Group getGroup() { return cGroup; }
-
+		
 		//{ChartTree}
 		public Action getChartTreeAction_0() { return cChartTreeAction_0; }
-
-		//"tree"
+		
+		//'tree'
 		public Keyword getTreeKeyword_1() { return cTreeKeyword_1; }
-
-		//map?="map" | collapsible?="collapsible"
+		
+		//map?='map' | collapsible?='collapsible'
 		public Alternatives getAlternatives_2() { return cAlternatives_2; }
-
-		//map?="map"
+		
+		//map?='map'
 		public Assignment getMapAssignment_2_0() { return cMapAssignment_2_0; }
-
-		//"map"
+		
+		//'map'
 		public Keyword getMapMapKeyword_2_0_0() { return cMapMapKeyword_2_0_0; }
-
-		//collapsible?="collapsible"
+		
+		//collapsible?='collapsible'
 		public Assignment getCollapsibleAssignment_2_1() { return cCollapsibleAssignment_2_1; }
-
-		//"collapsible"
+		
+		//'collapsible'
 		public Keyword getCollapsibleCollapsibleKeyword_2_1_0() { return cCollapsibleCollapsibleKeyword_2_1_0; }
 	}
-
 	public class ChartIntervalElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartInterval");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.ChartInterval");
 		private final RuleCall cChartNumberIntervalParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
 		//ChartInterval:
 		//	ChartNumberInterval;
-		public ParserRule getRule() { return rule; }
-
+		@Override public ParserRule getRule() { return rule; }
+		
 		//ChartNumberInterval
 		public RuleCall getChartNumberIntervalParserRuleCall() { return cChartNumberIntervalParserRuleCall; }
 	}
-
 	public class ChartNumberIntervalElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartNumberInterval");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.ChartNumberInterval");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Action cChartNumberIntervalAction_0 = (Action)cGroup.eContents().get(0);
 		private final Keyword cUpToKeyword_1 = (Keyword)cGroup.eContents().get(1);
@@ -679,33 +700,32 @@
 		private final RuleCall cNumberRangeChartRangeElementParserRuleCall_3_0 = (RuleCall)cNumberRangeAssignment_3.eContents().get(0);
 		
 		//ChartNumberInterval:
-		//	{ChartNumberInterval} "up to" numberIntervalValue=SignedNumber numberRange=ChartRangeElement;
-		public ParserRule getRule() { return rule; }
-
-		//{ChartNumberInterval} "up to" numberIntervalValue=SignedNumber numberRange=ChartRangeElement
+		//	{ChartNumberInterval} 'upTo' numberIntervalValue=SignedNumber numberRange=ChartRangeElement;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//{ChartNumberInterval} 'upTo' numberIntervalValue=SignedNumber numberRange=ChartRangeElement
 		public Group getGroup() { return cGroup; }
-
+		
 		//{ChartNumberInterval}
 		public Action getChartNumberIntervalAction_0() { return cChartNumberIntervalAction_0; }
-
-		//"up to"
+		
+		//'upTo'
 		public Keyword getUpToKeyword_1() { return cUpToKeyword_1; }
-
+		
 		//numberIntervalValue=SignedNumber
 		public Assignment getNumberIntervalValueAssignment_2() { return cNumberIntervalValueAssignment_2; }
-
+		
 		//SignedNumber
 		public RuleCall getNumberIntervalValueSignedNumberParserRuleCall_2_0() { return cNumberIntervalValueSignedNumberParserRuleCall_2_0; }
-
+		
 		//numberRange=ChartRangeElement
 		public Assignment getNumberRangeAssignment_3() { return cNumberRangeAssignment_3; }
-
+		
 		//ChartRangeElement
 		public RuleCall getNumberRangeChartRangeElementParserRuleCall_3_0() { return cNumberRangeChartRangeElementParserRuleCall_3_0; }
 	}
-
 	public class ChartDatamartElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartDatamart");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.ChartDatamart");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cDatamartKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cDatamartRefAssignment_1 = (Assignment)cGroup.eContents().get(1);
@@ -717,39 +737,38 @@
 		private final Keyword cRightCurlyBracketKeyword_4 = (Keyword)cGroup.eContents().get(4);
 		
 		//ChartDatamart:
-		//	"datamart" datamartRef=[datamart::DatamartDefinition] "{" elements+=ChartElement* "}";
-		public ParserRule getRule() { return rule; }
-
-		//"datamart" datamartRef=[datamart::DatamartDefinition] "{" elements+=ChartElement* "}"
+		//	'datamart' datamartRef=[datamart::DatamartDefinition] '{' elements+=ChartElement* '}';
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'datamart' datamartRef=[datamart::DatamartDefinition] '{' elements+=ChartElement* '}'
 		public Group getGroup() { return cGroup; }
-
-		//"datamart"
+		
+		//'datamart'
 		public Keyword getDatamartKeyword_0() { return cDatamartKeyword_0; }
-
+		
 		//datamartRef=[datamart::DatamartDefinition]
 		public Assignment getDatamartRefAssignment_1() { return cDatamartRefAssignment_1; }
-
+		
 		//[datamart::DatamartDefinition]
 		public CrossReference getDatamartRefDatamartDefinitionCrossReference_1_0() { return cDatamartRefDatamartDefinitionCrossReference_1_0; }
-
+		
 		//ID
 		public RuleCall getDatamartRefDatamartDefinitionIDTerminalRuleCall_1_0_1() { return cDatamartRefDatamartDefinitionIDTerminalRuleCall_1_0_1; }
-
-		//"{"
+		
+		//'{'
 		public Keyword getLeftCurlyBracketKeyword_2() { return cLeftCurlyBracketKeyword_2; }
-
+		
 		//elements+=ChartElement*
 		public Assignment getElementsAssignment_3() { return cElementsAssignment_3; }
-
+		
 		//ChartElement
 		public RuleCall getElementsChartElementParserRuleCall_3_0() { return cElementsChartElementParserRuleCall_3_0; }
-
-		//"}"
+		
+		//'}'
 		public Keyword getRightCurlyBracketKeyword_4() { return cRightCurlyBracketKeyword_4; }
 	}
-
 	public class ChartElementElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartElement");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.ChartElement");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final RuleCall cChartAxisParserRuleCall_0 = (RuleCall)cAlternatives.eContents().get(0);
 		private final RuleCall cChartLegendParserRuleCall_1 = (RuleCall)cAlternatives.eContents().get(1);
@@ -757,23 +776,22 @@
 		
 		//ChartElement:
 		//	ChartAxis | ChartLegend | ChartHighlighter;
-		public ParserRule getRule() { return rule; }
-
+		@Override public ParserRule getRule() { return rule; }
+		
 		//ChartAxis | ChartLegend | ChartHighlighter
 		public Alternatives getAlternatives() { return cAlternatives; }
-
+		
 		//ChartAxis
 		public RuleCall getChartAxisParserRuleCall_0() { return cChartAxisParserRuleCall_0; }
-
+		
 		//ChartLegend
 		public RuleCall getChartLegendParserRuleCall_1() { return cChartLegendParserRuleCall_1; }
-
+		
 		//ChartHighlighter
 		public RuleCall getChartHighlighterParserRuleCall_2() { return cChartHighlighterParserRuleCall_2; }
 	}
-
 	public class ChartLegendElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartLegend");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.ChartLegend");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cLegendKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cPlacementAssignment_1 = (Assignment)cGroup.eContents().get(1);
@@ -787,45 +805,44 @@
 		private final RuleCall cToggleTypeToggleTypeEnumEnumRuleCall_2_2_0 = (RuleCall)cToggleTypeAssignment_2_2.eContents().get(0);
 		
 		//ChartLegend:
-		//	"legend" placement=LegendPlacementEnum (toggle?="toggle" replot?="replot" toggleType=ToggleTypeEnum)?;
-		public ParserRule getRule() { return rule; }
-
-		//"legend" placement=LegendPlacementEnum (toggle?="toggle" replot?="replot" toggleType=ToggleTypeEnum)?
+		//	'legend' placement=LegendPlacementEnum (toggle?='toggle' replot?='replot' toggleType=ToggleTypeEnum)?;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'legend' placement=LegendPlacementEnum (toggle?='toggle' replot?='replot' toggleType=ToggleTypeEnum)?
 		public Group getGroup() { return cGroup; }
-
-		//"legend"
+		
+		//'legend'
 		public Keyword getLegendKeyword_0() { return cLegendKeyword_0; }
-
+		
 		//placement=LegendPlacementEnum
 		public Assignment getPlacementAssignment_1() { return cPlacementAssignment_1; }
-
+		
 		//LegendPlacementEnum
 		public RuleCall getPlacementLegendPlacementEnumEnumRuleCall_1_0() { return cPlacementLegendPlacementEnumEnumRuleCall_1_0; }
-
-		//(toggle?="toggle" replot?="replot" toggleType=ToggleTypeEnum)?
+		
+		//(toggle?='toggle' replot?='replot' toggleType=ToggleTypeEnum)?
 		public Group getGroup_2() { return cGroup_2; }
-
-		//toggle?="toggle"
+		
+		//toggle?='toggle'
 		public Assignment getToggleAssignment_2_0() { return cToggleAssignment_2_0; }
-
-		//"toggle"
+		
+		//'toggle'
 		public Keyword getToggleToggleKeyword_2_0_0() { return cToggleToggleKeyword_2_0_0; }
-
-		//replot?="replot"
+		
+		//replot?='replot'
 		public Assignment getReplotAssignment_2_1() { return cReplotAssignment_2_1; }
-
-		//"replot"
+		
+		//'replot'
 		public Keyword getReplotReplotKeyword_2_1_0() { return cReplotReplotKeyword_2_1_0; }
-
+		
 		//toggleType=ToggleTypeEnum
 		public Assignment getToggleTypeAssignment_2_2() { return cToggleTypeAssignment_2_2; }
-
+		
 		//ToggleTypeEnum
 		public RuleCall getToggleTypeToggleTypeEnumEnumRuleCall_2_2_0() { return cToggleTypeToggleTypeEnumEnumRuleCall_2_2_0; }
 	}
-
 	public class ChartHighlighterElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartHighlighter");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.ChartHighlighter");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cTooltipKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cLocationAssignment_1 = (Assignment)cGroup.eContents().get(1);
@@ -837,39 +854,38 @@
 		private final Keyword cInsideChartInsideKeyword_2_1_0 = (Keyword)cInsideChartAssignment_2_1.eContents().get(0);
 		
 		//ChartHighlighter:
-		//	"tooltip" location=TooltipLocationEnum (tooltipAlways?="always"? insideChart?="inside"?);
-		public ParserRule getRule() { return rule; }
-
-		//"tooltip" location=TooltipLocationEnum (tooltipAlways?="always"? insideChart?="inside"?)
+		//	'tooltip' location=TooltipLocationEnum (tooltipAlways?='always'? insideChart?='inside'?);
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'tooltip' location=TooltipLocationEnum (tooltipAlways?='always'? insideChart?='inside'?)
 		public Group getGroup() { return cGroup; }
-
-		//"tooltip"
+		
+		//'tooltip'
 		public Keyword getTooltipKeyword_0() { return cTooltipKeyword_0; }
-
+		
 		//location=TooltipLocationEnum
 		public Assignment getLocationAssignment_1() { return cLocationAssignment_1; }
-
+		
 		//TooltipLocationEnum
 		public RuleCall getLocationTooltipLocationEnumEnumRuleCall_1_0() { return cLocationTooltipLocationEnumEnumRuleCall_1_0; }
-
-		//tooltipAlways?="always"? insideChart?="inside"?
+		
+		//tooltipAlways?='always'? insideChart?='inside'?
 		public Group getGroup_2() { return cGroup_2; }
-
-		//tooltipAlways?="always"?
+		
+		//tooltipAlways?='always'?
 		public Assignment getTooltipAlwaysAssignment_2_0() { return cTooltipAlwaysAssignment_2_0; }
-
-		//"always"
+		
+		//'always'
 		public Keyword getTooltipAlwaysAlwaysKeyword_2_0_0() { return cTooltipAlwaysAlwaysKeyword_2_0_0; }
-
-		//insideChart?="inside"?
+		
+		//insideChart?='inside'?
 		public Assignment getInsideChartAssignment_2_1() { return cInsideChartAssignment_2_1; }
-
-		//"inside"
+		
+		//'inside'
 		public Keyword getInsideChartInsideKeyword_2_1_0() { return cInsideChartInsideKeyword_2_1_0; }
 	}
-
 	public class ChartAxisElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartAxis");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.ChartAxis");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cAxisKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cAxisAssignment_1 = (Assignment)cGroup.eContents().get(1);
@@ -881,196 +897,136 @@
 		private final Assignment cShortLabelAssignment_4 = (Assignment)cGroup.eContents().get(4);
 		private final Keyword cShortLabelShortLabelKeyword_4_0 = (Keyword)cShortLabelAssignment_4.eContents().get(0);
 		private final Group cGroup_5 = (Group)cGroup.eContents().get(5);
-		private final Keyword cTickangleKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
+		private final Keyword cAngleKeyword_5_0 = (Keyword)cGroup_5.eContents().get(0);
 		private final Assignment cAngleAssignment_5_1 = (Assignment)cGroup_5.eContents().get(1);
 		private final RuleCall cAngleSignedNumberParserRuleCall_5_1_0 = (RuleCall)cAngleAssignment_5_1.eContents().get(0);
 		
 		//ChartAxis:
-		//	"axis" axis=[datamart::DatamartAxis] "renders" renderType=RenderTypeEnum shortLabel?="shortLabel"? ("tickangle"
+		//	'axis' axis=[datamart::DatamartAxis] 'renders' renderType=RenderTypeEnum shortLabel?='shortLabel'? ('angle'
 		//	angle=SignedNumber)?;
-		public ParserRule getRule() { return rule; }
-
-		//"axis" axis=[datamart::DatamartAxis] "renders" renderType=RenderTypeEnum shortLabel?="shortLabel"? ("tickangle"
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'axis' axis=[datamart::DatamartAxis] 'renders' renderType=RenderTypeEnum shortLabel?='shortLabel'? ('angle'
 		//angle=SignedNumber)?
 		public Group getGroup() { return cGroup; }
-
-		//"axis"
+		
+		//'axis'
 		public Keyword getAxisKeyword_0() { return cAxisKeyword_0; }
-
+		
 		//axis=[datamart::DatamartAxis]
 		public Assignment getAxisAssignment_1() { return cAxisAssignment_1; }
-
+		
 		//[datamart::DatamartAxis]
 		public CrossReference getAxisDatamartAxisCrossReference_1_0() { return cAxisDatamartAxisCrossReference_1_0; }
-
+		
 		//ID
 		public RuleCall getAxisDatamartAxisIDTerminalRuleCall_1_0_1() { return cAxisDatamartAxisIDTerminalRuleCall_1_0_1; }
-
-		//"renders"
+		
+		//'renders'
 		public Keyword getRendersKeyword_2() { return cRendersKeyword_2; }
-
+		
 		//renderType=RenderTypeEnum
 		public Assignment getRenderTypeAssignment_3() { return cRenderTypeAssignment_3; }
-
+		
 		//RenderTypeEnum
 		public RuleCall getRenderTypeRenderTypeEnumEnumRuleCall_3_0() { return cRenderTypeRenderTypeEnumEnumRuleCall_3_0; }
-
-		//shortLabel?="shortLabel"?
+		
+		//shortLabel?='shortLabel'?
 		public Assignment getShortLabelAssignment_4() { return cShortLabelAssignment_4; }
-
-		//"shortLabel"
+		
+		//'shortLabel'
 		public Keyword getShortLabelShortLabelKeyword_4_0() { return cShortLabelShortLabelKeyword_4_0; }
-
-		//("tickangle" angle=SignedNumber)?
+		
+		//('angle' angle=SignedNumber)?
 		public Group getGroup_5() { return cGroup_5; }
-
-		//"tickangle"
-		public Keyword getTickangleKeyword_5_0() { return cTickangleKeyword_5_0; }
-
+		
+		//'angle'
+		public Keyword getAngleKeyword_5_0() { return cAngleKeyword_5_0; }
+		
 		//angle=SignedNumber
 		public Assignment getAngleAssignment_5_1() { return cAngleAssignment_5_1; }
-
+		
 		//SignedNumber
 		public RuleCall getAngleSignedNumberParserRuleCall_5_1_0() { return cAngleSignedNumberParserRuleCall_5_1_0; }
 	}
-
 	public class ChartRangeElementElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartRangeElement");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.ChartRangeElement");
 		private final RuleCall cChartSegmentColorParserRuleCall = (RuleCall)rule.eContents().get(1);
 		
 		//ChartRangeElement:
 		//	ChartSegmentColor;
-		public ParserRule getRule() { return rule; }
-
+		@Override public ParserRule getRule() { return rule; }
+		
 		//ChartSegmentColor
 		public RuleCall getChartSegmentColorParserRuleCall() { return cChartSegmentColorParserRuleCall; }
 	}
-
 	public class ChartSegmentColorElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartSegmentColor");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.ChartSegmentColor");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cSegmentcolorKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final Assignment cRgbAssignment_1 = (Assignment)cGroup.eContents().get(1);
 		private final RuleCall cRgbSTRINGTerminalRuleCall_1_0 = (RuleCall)cRgbAssignment_1.eContents().get(0);
 		
 		//ChartSegmentColor:
-		//	"segmentcolor" rgb=STRING;
-		public ParserRule getRule() { return rule; }
-
-		//"segmentcolor" rgb=STRING
+		//	'segmentcolor' rgb=STRING;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//'segmentcolor' rgb=STRING
 		public Group getGroup() { return cGroup; }
-
-		//"segmentcolor"
+		
+		//'segmentcolor'
 		public Keyword getSegmentcolorKeyword_0() { return cSegmentcolorKeyword_0; }
-
+		
 		//rgb=STRING
 		public Assignment getRgbAssignment_1() { return cRgbAssignment_1; }
-
+		
 		//STRING
 		public RuleCall getRgbSTRINGTerminalRuleCall_1_0() { return cRgbSTRINGTerminalRuleCall_1_0; }
 	}
-
-	public class ChartImportElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartImport");
-		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 cImportedNamespaceChartQualifiedNameWithWildCardParserRuleCall_1_0 = (RuleCall)cImportedNamespaceAssignment_1.eContents().get(0);
-		
-		//ChartImport returns types::LImport:
-		//	"import" importedNamespace=ChartQualifiedNameWithWildCard;
-		public ParserRule getRule() { return rule; }
-
-		//"import" importedNamespace=ChartQualifiedNameWithWildCard
-		public Group getGroup() { return cGroup; }
-
-		//"import"
-		public Keyword getImportKeyword_0() { return cImportKeyword_0; }
-
-		//importedNamespace=ChartQualifiedNameWithWildCard
-		public Assignment getImportedNamespaceAssignment_1() { return cImportedNamespaceAssignment_1; }
-
-		//ChartQualifiedNameWithWildCard
-		public RuleCall getImportedNamespaceChartQualifiedNameWithWildCardParserRuleCall_1_0() { return cImportedNamespaceChartQualifiedNameWithWildCardParserRuleCall_1_0; }
-	}
-
 	public class SignedNumberElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "SignedNumber");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.SignedNumber");
 		private final Group cGroup = (Group)rule.eContents().get(1);
 		private final Keyword cHyphenMinusKeyword_0 = (Keyword)cGroup.eContents().get(0);
 		private final RuleCall cINTTerminalRuleCall_1 = (RuleCall)cGroup.eContents().get(1);
 		
-		////SignedNumber returns ecore::EDouble:
-		////	'-'? Number;
-		//SignedNumber returns ecore::EInt:
-		//	("-"? INT)?;
-		public ParserRule getRule() { return rule; }
-
-		//("-"? INT)?
+		//SignedNumber ecore::EInt:
+		//	('-'? INT)?;
+		@Override public ParserRule getRule() { return rule; }
+		
+		//('-'? INT)?
 		public Group getGroup() { return cGroup; }
-
-		//"-"?
+		
+		//'-'?
 		public Keyword getHyphenMinusKeyword_0() { return cHyphenMinusKeyword_0; }
-
+		
 		//INT
 		public RuleCall getINTTerminalRuleCall_1() { return cINTTerminalRuleCall_1; }
 	}
-
-	public class ChartQualifiedNameWithWildCardElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "ChartQualifiedNameWithWildCard");
-		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);
-		
-		//ChartQualifiedNameWithWildCard:
-		//	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 TRANSLATABLESTRINGElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TRANSLATABLESTRING");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.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 TRANSLATABLEIDElements extends AbstractParserRuleElementFinder {
-		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "TRANSLATABLEID");
+		private final ParserRule rule = (ParserRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.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 LegendPlacementEnumElements extends AbstractEnumRuleElementFinder {
-		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "LegendPlacementEnum");
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.LegendPlacementEnum");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cINSIDEEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
 		private final Keyword cINSIDEInsideKeyword_0_0 = (Keyword)cINSIDEEnumLiteralDeclaration_0.eContents().get(0);
@@ -1082,39 +1038,38 @@
 		private final Keyword cOUTSIDE_GRIDOutsideGridKeyword_3_0 = (Keyword)cOUTSIDE_GRIDEnumLiteralDeclaration_3.eContents().get(0);
 		
 		//enum LegendPlacementEnum:
-		//	INSIDE="inside" | INSIDE_GRID="inside-grid" | OUTSIDE="outside" | OUTSIDE_GRID="outside-grid";
+		//	INSIDE='inside' | INSIDE_GRID='inside-grid' | OUTSIDE='outside' | OUTSIDE_GRID='outside-grid';
 		public EnumRule getRule() { return rule; }
-
-		//INSIDE="inside" | INSIDE_GRID="inside-grid" | OUTSIDE="outside" | OUTSIDE_GRID="outside-grid"
+		
+		//INSIDE='inside' | INSIDE_GRID='inside-grid' | OUTSIDE='outside' | OUTSIDE_GRID='outside-grid'
 		public Alternatives getAlternatives() { return cAlternatives; }
-
-		//INSIDE="inside"
+		
+		//INSIDE='inside'
 		public EnumLiteralDeclaration getINSIDEEnumLiteralDeclaration_0() { return cINSIDEEnumLiteralDeclaration_0; }
-
-		//"inside"
+		
+		//'inside'
 		public Keyword getINSIDEInsideKeyword_0_0() { return cINSIDEInsideKeyword_0_0; }
-
-		//INSIDE_GRID="inside-grid"
+		
+		//INSIDE_GRID='inside-grid'
 		public EnumLiteralDeclaration getINSIDE_GRIDEnumLiteralDeclaration_1() { return cINSIDE_GRIDEnumLiteralDeclaration_1; }
-
-		//"inside-grid"
+		
+		//'inside-grid'
 		public Keyword getINSIDE_GRIDInsideGridKeyword_1_0() { return cINSIDE_GRIDInsideGridKeyword_1_0; }
-
-		//OUTSIDE="outside"
+		
+		//OUTSIDE='outside'
 		public EnumLiteralDeclaration getOUTSIDEEnumLiteralDeclaration_2() { return cOUTSIDEEnumLiteralDeclaration_2; }
-
-		//"outside"
+		
+		//'outside'
 		public Keyword getOUTSIDEOutsideKeyword_2_0() { return cOUTSIDEOutsideKeyword_2_0; }
-
-		//OUTSIDE_GRID="outside-grid"
+		
+		//OUTSIDE_GRID='outside-grid'
 		public EnumLiteralDeclaration getOUTSIDE_GRIDEnumLiteralDeclaration_3() { return cOUTSIDE_GRIDEnumLiteralDeclaration_3; }
-
-		//"outside-grid"
+		
+		//'outside-grid'
 		public Keyword getOUTSIDE_GRIDOutsideGridKeyword_3_0() { return cOUTSIDE_GRIDOutsideGridKeyword_3_0; }
 	}
-
 	public class ToggleTypeEnumElements extends AbstractEnumRuleElementFinder {
-		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "ToggleTypeEnum");
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.ToggleTypeEnum");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cNORMALEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
 		private final Keyword cNORMALNormalKeyword_0_0 = (Keyword)cNORMALEnumLiteralDeclaration_0.eContents().get(0);
@@ -1124,33 +1079,32 @@
 		private final Keyword cFASTFastKeyword_2_0 = (Keyword)cFASTEnumLiteralDeclaration_2.eContents().get(0);
 		
 		//enum ToggleTypeEnum:
-		//	NORMAL="normal" | SLOW="slow" | FAST="fast";
+		//	NORMAL='normal' | SLOW='slow' | FAST='fast';
 		public EnumRule getRule() { return rule; }
-
-		//NORMAL="normal" | SLOW="slow" | FAST="fast"
+		
+		//NORMAL='normal' | SLOW='slow' | FAST='fast'
 		public Alternatives getAlternatives() { return cAlternatives; }
-
-		//NORMAL="normal"
+		
+		//NORMAL='normal'
 		public EnumLiteralDeclaration getNORMALEnumLiteralDeclaration_0() { return cNORMALEnumLiteralDeclaration_0; }
-
-		//"normal"
+		
+		//'normal'
 		public Keyword getNORMALNormalKeyword_0_0() { return cNORMALNormalKeyword_0_0; }
-
-		//SLOW="slow"
+		
+		//SLOW='slow'
 		public EnumLiteralDeclaration getSLOWEnumLiteralDeclaration_1() { return cSLOWEnumLiteralDeclaration_1; }
-
-		//"slow"
+		
+		//'slow'
 		public Keyword getSLOWSlowKeyword_1_0() { return cSLOWSlowKeyword_1_0; }
-
-		//FAST="fast"
+		
+		//FAST='fast'
 		public EnumLiteralDeclaration getFASTEnumLiteralDeclaration_2() { return cFASTEnumLiteralDeclaration_2; }
-
-		//"fast"
+		
+		//'fast'
 		public Keyword getFASTFastKeyword_2_0() { return cFASTFastKeyword_2_0; }
 	}
-
 	public class TooltipLocationEnumElements extends AbstractEnumRuleElementFinder {
-		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "TooltipLocationEnum");
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.TooltipLocationEnum");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cNORTHEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
 		private final Keyword cNORTHNorthKeyword_0_0 = (Keyword)cNORTHEnumLiteralDeclaration_0.eContents().get(0);
@@ -1170,65 +1124,64 @@
 		private final Keyword cNORTH_WESTNorthWestKeyword_7_0 = (Keyword)cNORTH_WESTEnumLiteralDeclaration_7.eContents().get(0);
 		
 		//enum TooltipLocationEnum:
-		//	NORTH="north" | NORTH_EAST="north-east" | EAST="east" | SOUTH_EAST="south-east" | SOUTH="south" |
-		//	SOUTH_WEST="south-west" | WEST="west" | NORTH_WEST="north-west";
+		//	NORTH='north' | NORTH_EAST='north-east' | EAST='east' | SOUTH_EAST='south-east' | SOUTH='south' |
+		//	SOUTH_WEST='south-west' | WEST='west' | NORTH_WEST='north-west';
 		public EnumRule getRule() { return rule; }
-
-		//NORTH="north" | NORTH_EAST="north-east" | EAST="east" | SOUTH_EAST="south-east" | SOUTH="south" |
-		//SOUTH_WEST="south-west" | WEST="west" | NORTH_WEST="north-west"
+		
+		//NORTH='north' | NORTH_EAST='north-east' | EAST='east' | SOUTH_EAST='south-east' | SOUTH='south' |
+		//SOUTH_WEST='south-west' | WEST='west' | NORTH_WEST='north-west'
 		public Alternatives getAlternatives() { return cAlternatives; }
-
-		//NORTH="north"
+		
+		//NORTH='north'
 		public EnumLiteralDeclaration getNORTHEnumLiteralDeclaration_0() { return cNORTHEnumLiteralDeclaration_0; }
-
-		//"north"
+		
+		//'north'
 		public Keyword getNORTHNorthKeyword_0_0() { return cNORTHNorthKeyword_0_0; }
-
-		//NORTH_EAST="north-east"
+		
+		//NORTH_EAST='north-east'
 		public EnumLiteralDeclaration getNORTH_EASTEnumLiteralDeclaration_1() { return cNORTH_EASTEnumLiteralDeclaration_1; }
-
-		//"north-east"
+		
+		//'north-east'
 		public Keyword getNORTH_EASTNorthEastKeyword_1_0() { return cNORTH_EASTNorthEastKeyword_1_0; }
-
-		//EAST="east"
+		
+		//EAST='east'
 		public EnumLiteralDeclaration getEASTEnumLiteralDeclaration_2() { return cEASTEnumLiteralDeclaration_2; }
-
-		//"east"
+		
+		//'east'
 		public Keyword getEASTEastKeyword_2_0() { return cEASTEastKeyword_2_0; }
-
-		//SOUTH_EAST="south-east"
+		
+		//SOUTH_EAST='south-east'
 		public EnumLiteralDeclaration getSOUTH_EASTEnumLiteralDeclaration_3() { return cSOUTH_EASTEnumLiteralDeclaration_3; }
-
-		//"south-east"
+		
+		//'south-east'
 		public Keyword getSOUTH_EASTSouthEastKeyword_3_0() { return cSOUTH_EASTSouthEastKeyword_3_0; }
-
-		//SOUTH="south"
+		
+		//SOUTH='south'
 		public EnumLiteralDeclaration getSOUTHEnumLiteralDeclaration_4() { return cSOUTHEnumLiteralDeclaration_4; }
-
-		//"south"
+		
+		//'south'
 		public Keyword getSOUTHSouthKeyword_4_0() { return cSOUTHSouthKeyword_4_0; }
-
-		//SOUTH_WEST="south-west"
+		
+		//SOUTH_WEST='south-west'
 		public EnumLiteralDeclaration getSOUTH_WESTEnumLiteralDeclaration_5() { return cSOUTH_WESTEnumLiteralDeclaration_5; }
-
-		//"south-west"
+		
+		//'south-west'
 		public Keyword getSOUTH_WESTSouthWestKeyword_5_0() { return cSOUTH_WESTSouthWestKeyword_5_0; }
-
-		//WEST="west"
+		
+		//WEST='west'
 		public EnumLiteralDeclaration getWESTEnumLiteralDeclaration_6() { return cWESTEnumLiteralDeclaration_6; }
-
-		//"west"
+		
+		//'west'
 		public Keyword getWESTWestKeyword_6_0() { return cWESTWestKeyword_6_0; }
-
-		//NORTH_WEST="north-west"
+		
+		//NORTH_WEST='north-west'
 		public EnumLiteralDeclaration getNORTH_WESTEnumLiteralDeclaration_7() { return cNORTH_WESTEnumLiteralDeclaration_7; }
-
-		//"north-west"
+		
+		//'north-west'
 		public Keyword getNORTH_WESTNorthWestKeyword_7_0() { return cNORTH_WESTNorthWestKeyword_7_0; }
 	}
-
 	public class RenderTypeEnumElements extends AbstractEnumRuleElementFinder {
-		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "RenderTypeEnum");
+		private final EnumRule rule = (EnumRule) GrammarUtil.findRuleForName(getGrammar(), "org.eclipse.osbp.xtext.chart.ChartDSL.RenderTypeEnum");
 		private final Alternatives cAlternatives = (Alternatives)rule.eContents().get(1);
 		private final EnumLiteralDeclaration cCATEGORYEnumLiteralDeclaration_0 = (EnumLiteralDeclaration)cAlternatives.eContents().get(0);
 		private final Keyword cCATEGORYCategoryKeyword_0_0 = (Keyword)cCATEGORYEnumLiteralDeclaration_0.eContents().get(0);
@@ -1242,40 +1195,40 @@
 		private final Keyword cPYRAMIDPyramidKeyword_4_0 = (Keyword)cPYRAMIDEnumLiteralDeclaration_4.eContents().get(0);
 		
 		//enum RenderTypeEnum:
-		//	CATEGORY="category" | LINEAR="linear" | DATE="date" | LOG="logarithmic" | PYRAMID="pyramid";
+		//	CATEGORY='category' | LINEAR='linear' | DATE='date' | LOG='logarithmic' | PYRAMID='pyramid';
 		public EnumRule getRule() { return rule; }
-
-		//CATEGORY="category" | LINEAR="linear" | DATE="date" | LOG="logarithmic" | PYRAMID="pyramid"
+		
+		//CATEGORY='category' | LINEAR='linear' | DATE='date' | LOG='logarithmic' | PYRAMID='pyramid'
 		public Alternatives getAlternatives() { return cAlternatives; }
-
-		//CATEGORY="category"
+		
+		//CATEGORY='category'
 		public EnumLiteralDeclaration getCATEGORYEnumLiteralDeclaration_0() { return cCATEGORYEnumLiteralDeclaration_0; }
-
-		//"category"
+		
+		//'category'
 		public Keyword getCATEGORYCategoryKeyword_0_0() { return cCATEGORYCategoryKeyword_0_0; }
-
-		//LINEAR="linear"
+		
+		//LINEAR='linear'
 		public EnumLiteralDeclaration getLINEAREnumLiteralDeclaration_1() { return cLINEAREnumLiteralDeclaration_1; }
-
-		//"linear"
+		
+		//'linear'
 		public Keyword getLINEARLinearKeyword_1_0() { return cLINEARLinearKeyword_1_0; }
-
-		//DATE="date"
+		
+		//DATE='date'
 		public EnumLiteralDeclaration getDATEEnumLiteralDeclaration_2() { return cDATEEnumLiteralDeclaration_2; }
-
-		//"date"
+		
+		//'date'
 		public Keyword getDATEDateKeyword_2_0() { return cDATEDateKeyword_2_0; }
-
-		//LOG="logarithmic"
+		
+		//LOG='logarithmic'
 		public EnumLiteralDeclaration getLOGEnumLiteralDeclaration_3() { return cLOGEnumLiteralDeclaration_3; }
-
-		//"logarithmic"
+		
+		//'logarithmic'
 		public Keyword getLOGLogarithmicKeyword_3_0() { return cLOGLogarithmicKeyword_3_0; }
-
-		//PYRAMID="pyramid"
+		
+		//PYRAMID='pyramid'
 		public EnumLiteralDeclaration getPYRAMIDEnumLiteralDeclaration_4() { return cPYRAMIDEnumLiteralDeclaration_4; }
-
-		//"pyramid"
+		
+		//'pyramid'
 		public Keyword getPYRAMIDPyramidKeyword_4_0() { return cPYRAMIDPyramidKeyword_4_0; }
 	}
 	
@@ -1299,25 +1252,35 @@
 	private final ChartAxisElements pChartAxis;
 	private final ChartRangeElementElements pChartRangeElement;
 	private final ChartSegmentColorElements pChartSegmentColor;
-	private final ChartImportElements pChartImport;
 	private final SignedNumberElements pSignedNumber;
-	private final ChartQualifiedNameWithWildCardElements pChartQualifiedNameWithWildCard;
 	private final TRANSLATABLESTRINGElements pTRANSLATABLESTRING;
 	private final TRANSLATABLEIDElements pTRANSLATABLEID;
-	private final LegendPlacementEnumElements unknownRuleLegendPlacementEnum;
-	private final ToggleTypeEnumElements unknownRuleToggleTypeEnum;
-	private final TooltipLocationEnumElements unknownRuleTooltipLocationEnum;
-	private final RenderTypeEnumElements unknownRuleRenderTypeEnum;
+	private final LegendPlacementEnumElements eLegendPlacementEnum;
+	private final ToggleTypeEnumElements eToggleTypeEnum;
+	private final TooltipLocationEnumElements eTooltipLocationEnum;
+	private final RenderTypeEnumElements eRenderTypeEnum;
 	
 	private final Grammar grammar;
-
+	
+	private final OXtypeGrammarAccess gaOXtype;
+	
 	private final XbaseWithAnnotationsGrammarAccess gaXbaseWithAnnotations;
+	
+	private final XbaseGrammarAccess gaXbase;
+	
+	private final XtypeGrammarAccess gaXtype;
 
 	@Inject
 	public ChartDSLGrammarAccess(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.pChartModel = new ChartModelElements();
 		this.pChartPackage = new ChartPackageElements();
 		this.pChart = new ChartElements();
@@ -1338,15 +1301,13 @@
 		this.pChartAxis = new ChartAxisElements();
 		this.pChartRangeElement = new ChartRangeElementElements();
 		this.pChartSegmentColor = new ChartSegmentColorElements();
-		this.pChartImport = new ChartImportElements();
 		this.pSignedNumber = new SignedNumberElements();
-		this.pChartQualifiedNameWithWildCard = new ChartQualifiedNameWithWildCardElements();
 		this.pTRANSLATABLESTRING = new TRANSLATABLESTRINGElements();
 		this.pTRANSLATABLEID = new TRANSLATABLEIDElements();
-		this.unknownRuleLegendPlacementEnum = new LegendPlacementEnumElements();
-		this.unknownRuleToggleTypeEnum = new ToggleTypeEnumElements();
-		this.unknownRuleTooltipLocationEnum = new TooltipLocationEnumElements();
-		this.unknownRuleRenderTypeEnum = new RenderTypeEnumElements();
+		this.eLegendPlacementEnum = new LegendPlacementEnumElements();
+		this.eToggleTypeEnum = new ToggleTypeEnumElements();
+		this.eTooltipLocationEnum = new TooltipLocationEnumElements();
+		this.eRenderTypeEnum = new RenderTypeEnumElements();
 	}
 	
 	protected Grammar internalFindGrammar(GrammarProvider grammarProvider) {
@@ -1365,18 +1326,31 @@
 		return grammar;
 	}
 	
-	
+	@Override
 	public Grammar getGrammar() {
 		return grammar;
 	}
 	
-
+	
+	public OXtypeGrammarAccess getOXtypeGrammarAccess() {
+		return gaOXtype;
+	}
+	
 	public XbaseWithAnnotationsGrammarAccess getXbaseWithAnnotationsGrammarAccess() {
 		return gaXbaseWithAnnotations;
 	}
+	
+	public XbaseGrammarAccess getXbaseGrammarAccess() {
+		return gaXbase;
+	}
+	
+	public XtypeGrammarAccess getXtypeGrammarAccess() {
+		return gaXtype;
+	}
 
 	
 	//ChartModel:
+	//	importSection=XImportSection?
 	//	packages+=ChartPackage*;
 	public ChartModelElements getChartModelAccess() {
 		return pChartModel;
@@ -1385,9 +1359,9 @@
 	public ParserRule getChartModelRule() {
 		return getChartModelAccess().getRule();
 	}
-
+	
 	//ChartPackage:
-	//	{ChartPackage} "package" name=QualifiedName ("{" imports+=ChartImport* charts+=Chart* "}")?;
+	//	{ChartPackage} 'package' name=QualifiedName ('{' charts+=Chart* '}')?;
 	public ChartPackageElements getChartPackageAccess() {
 		return pChartPackage;
 	}
@@ -1395,10 +1369,11 @@
 	public ParserRule getChartPackageRule() {
 		return getChartPackageAccess().getRule();
 	}
-
+	
 	//Chart:
-	//	{Chart} "chart" name=TRANSLATABLEID (description?="described by" descriptionValue=TRANSLATABLESTRING)? "as"
-	//	charttype=ChartOption (polling?="polling" pollingTime=INT)? ("using" source=ChartDatamart)?;
+	//	{Chart} 'chart' name=TRANSLATABLEID (description?='describedBy' descriptionValue=TRANSLATABLESTRING)? 'as'
+	//	charttype=ChartOption ((polling?='polling' pollingTime=INT)? & selectById?='selectById'?) ('using'
+	//	source=ChartDatamart)?;
 	public ChartElements getChartAccess() {
 		return pChart;
 	}
@@ -1406,7 +1381,7 @@
 	public ParserRule getChartRule() {
 		return getChartAccess().getRule();
 	}
-
+	
 	//ChartOption:
 	//	ChartBar | ChartLine | ChartPie | ChartDonut | ChartBubble | ChartGauge | ChartTree;
 	public ChartOptionElements getChartOptionAccess() {
@@ -1416,9 +1391,9 @@
 	public ParserRule getChartOptionRule() {
 		return getChartOptionAccess().getRule();
 	}
-
+	
 	//ChartBar:
-	//	{ChartBar} "bar" (shadow?="shaded"? & animated?="animated"? & swapped?="swapped"? & stacked?="stacked"?);
+	//	{ChartBar} 'bar' (shadow?='shaded'? & animated?='animated'? & swapped?='swapped'? & stacked?='stacked'?);
 	public ChartBarElements getChartBarAccess() {
 		return pChartBar;
 	}
@@ -1426,10 +1401,10 @@
 	public ParserRule getChartBarRule() {
 		return getChartBarAccess().getRule();
 	}
-
+	
 	//ChartLine:
-	//	{ChartLine} "line" (animated?="animated"? & showMarker?="showMarker"? & trendLine?="trendLine"? & (cursor?="cursor"
-	//	zoom?="zoom"? tooltip?="tooltip"?)? & fillToZero?="fillZero"? & fillArea?="filled"?);
+	//	{ChartLine} 'line' (animated?='animated'? & showMarker?='showMarker'? & trendLine?='trendLine'? & (cursor?='cursor'
+	//	zoom?='zoom'? tooltip?='tooltip'?)? & fillToZero?='fillZero'? & fillArea?='filled'?);
 	public ChartLineElements getChartLineAccess() {
 		return pChartLine;
 	}
@@ -1437,9 +1412,9 @@
 	public ParserRule getChartLineRule() {
 		return getChartLineAccess().getRule();
 	}
-
+	
 	//ChartPie:
-	//	{ChartPie} "pie" empty?="empty"?;
+	//	{ChartPie} 'pie' empty?='empty'?;
 	public ChartPieElements getChartPieAccess() {
 		return pChartPie;
 	}
@@ -1447,9 +1422,9 @@
 	public ParserRule getChartPieRule() {
 		return getChartPieAccess().getRule();
 	}
-
+	
 	//ChartDonut:
-	//	{ChartDonut} "donut";
+	//	{ChartDonut} 'donut';
 	public ChartDonutElements getChartDonutAccess() {
 		return pChartDonut;
 	}
@@ -1457,10 +1432,10 @@
 	public ParserRule getChartDonutRule() {
 		return getChartDonutAccess().getRule();
 	}
-
+	
 	//ChartBubble:
-	//	{ChartBubble} "bubble" ((multiplier?="multiplier" multiplierValue=Number)? & (gradient?="gradient" |
-	//	transparent?="transparent"))?;
+	//	{ChartBubble} 'bubble' ((multiplier?='multiplier' multiplierValue=Number)? & (gradient?='gradient' |
+	//	transparent?='transparent'))?;
 	public ChartBubbleElements getChartBubbleAccess() {
 		return pChartBubble;
 	}
@@ -1468,10 +1443,10 @@
 	public ParserRule getChartBubbleRule() {
 		return getChartBubbleAccess().getRule();
 	}
-
+	
 	//ChartGauge:
-	//	{ChartGauge} "gauge" ((labeled?="label" labelValue=STRING)? & (hasTicks?="hasTicks" "minimum" minValue=INT "maximum"
-	//	maxValue=INT)? & (hasIntervals?="intervals" "{" intervals+=ChartInterval* "}")?);
+	//	{ChartGauge} 'gauge' ((labeled?='label' labelValue=STRING)? & (hasTicks?='hasTicks' 'minimum' minValue=INT 'maximum'
+	//	maxValue=INT)? & (hasIntervals?='intervals' '{' intervals+=ChartInterval* '}')?);
 	public ChartGaugeElements getChartGaugeAccess() {
 		return pChartGauge;
 	}
@@ -1479,9 +1454,9 @@
 	public ParserRule getChartGaugeRule() {
 		return getChartGaugeAccess().getRule();
 	}
-
+	
 	//ChartTree:
-	//	{ChartTree} "tree" (map?="map" | collapsible?="collapsible");
+	//	{ChartTree} 'tree' (map?='map' | collapsible?='collapsible');
 	public ChartTreeElements getChartTreeAccess() {
 		return pChartTree;
 	}
@@ -1489,7 +1464,7 @@
 	public ParserRule getChartTreeRule() {
 		return getChartTreeAccess().getRule();
 	}
-
+	
 	//ChartInterval:
 	//	ChartNumberInterval;
 	public ChartIntervalElements getChartIntervalAccess() {
@@ -1499,9 +1474,9 @@
 	public ParserRule getChartIntervalRule() {
 		return getChartIntervalAccess().getRule();
 	}
-
+	
 	//ChartNumberInterval:
-	//	{ChartNumberInterval} "up to" numberIntervalValue=SignedNumber numberRange=ChartRangeElement;
+	//	{ChartNumberInterval} 'upTo' numberIntervalValue=SignedNumber numberRange=ChartRangeElement;
 	public ChartNumberIntervalElements getChartNumberIntervalAccess() {
 		return pChartNumberInterval;
 	}
@@ -1509,9 +1484,9 @@
 	public ParserRule getChartNumberIntervalRule() {
 		return getChartNumberIntervalAccess().getRule();
 	}
-
+	
 	//ChartDatamart:
-	//	"datamart" datamartRef=[datamart::DatamartDefinition] "{" elements+=ChartElement* "}";
+	//	'datamart' datamartRef=[datamart::DatamartDefinition] '{' elements+=ChartElement* '}';
 	public ChartDatamartElements getChartDatamartAccess() {
 		return pChartDatamart;
 	}
@@ -1519,7 +1494,7 @@
 	public ParserRule getChartDatamartRule() {
 		return getChartDatamartAccess().getRule();
 	}
-
+	
 	//ChartElement:
 	//	ChartAxis | ChartLegend | ChartHighlighter;
 	public ChartElementElements getChartElementAccess() {
@@ -1529,9 +1504,9 @@
 	public ParserRule getChartElementRule() {
 		return getChartElementAccess().getRule();
 	}
-
+	
 	//ChartLegend:
-	//	"legend" placement=LegendPlacementEnum (toggle?="toggle" replot?="replot" toggleType=ToggleTypeEnum)?;
+	//	'legend' placement=LegendPlacementEnum (toggle?='toggle' replot?='replot' toggleType=ToggleTypeEnum)?;
 	public ChartLegendElements getChartLegendAccess() {
 		return pChartLegend;
 	}
@@ -1539,9 +1514,9 @@
 	public ParserRule getChartLegendRule() {
 		return getChartLegendAccess().getRule();
 	}
-
+	
 	//ChartHighlighter:
-	//	"tooltip" location=TooltipLocationEnum (tooltipAlways?="always"? insideChart?="inside"?);
+	//	'tooltip' location=TooltipLocationEnum (tooltipAlways?='always'? insideChart?='inside'?);
 	public ChartHighlighterElements getChartHighlighterAccess() {
 		return pChartHighlighter;
 	}
@@ -1549,9 +1524,9 @@
 	public ParserRule getChartHighlighterRule() {
 		return getChartHighlighterAccess().getRule();
 	}
-
+	
 	//ChartAxis:
-	//	"axis" axis=[datamart::DatamartAxis] "renders" renderType=RenderTypeEnum shortLabel?="shortLabel"? ("tickangle"
+	//	'axis' axis=[datamart::DatamartAxis] 'renders' renderType=RenderTypeEnum shortLabel?='shortLabel'? ('angle'
 	//	angle=SignedNumber)?;
 	public ChartAxisElements getChartAxisAccess() {
 		return pChartAxis;
@@ -1560,7 +1535,7 @@
 	public ParserRule getChartAxisRule() {
 		return getChartAxisAccess().getRule();
 	}
-
+	
 	//ChartRangeElement:
 	//	ChartSegmentColor;
 	public ChartRangeElementElements getChartRangeElementAccess() {
@@ -1570,9 +1545,9 @@
 	public ParserRule getChartRangeElementRule() {
 		return getChartRangeElementAccess().getRule();
 	}
-
+	
 	//ChartSegmentColor:
-	//	"segmentcolor" rgb=STRING;
+	//	'segmentcolor' rgb=STRING;
 	public ChartSegmentColorElements getChartSegmentColorAccess() {
 		return pChartSegmentColor;
 	}
@@ -1580,21 +1555,9 @@
 	public ParserRule getChartSegmentColorRule() {
 		return getChartSegmentColorAccess().getRule();
 	}
-
-	//ChartImport returns types::LImport:
-	//	"import" importedNamespace=ChartQualifiedNameWithWildCard;
-	public ChartImportElements getChartImportAccess() {
-		return pChartImport;
-	}
 	
-	public ParserRule getChartImportRule() {
-		return getChartImportAccess().getRule();
-	}
-
-	////SignedNumber returns ecore::EDouble:
-	////	'-'? Number;
-	//SignedNumber returns ecore::EInt:
-	//	("-"? INT)?;
+	//SignedNumber ecore::EInt:
+	//	('-'? INT)?;
 	public SignedNumberElements getSignedNumberAccess() {
 		return pSignedNumber;
 	}
@@ -1602,17 +1565,7 @@
 	public ParserRule getSignedNumberRule() {
 		return getSignedNumberAccess().getRule();
 	}
-
-	//ChartQualifiedNameWithWildCard:
-	//	QualifiedName ("." "*")?;
-	public ChartQualifiedNameWithWildCardElements getChartQualifiedNameWithWildCardAccess() {
-		return pChartQualifiedNameWithWildCard;
-	}
 	
-	public ParserRule getChartQualifiedNameWithWildCardRule() {
-		return getChartQualifiedNameWithWildCardAccess().getRule();
-	}
-
 	//TRANSLATABLESTRING:
 	//	STRING;
 	public TRANSLATABLESTRINGElements getTRANSLATABLESTRINGAccess() {
@@ -1622,7 +1575,7 @@
 	public ParserRule getTRANSLATABLESTRINGRule() {
 		return getTRANSLATABLESTRINGAccess().getRule();
 	}
-
+	
 	//TRANSLATABLEID:
 	//	ID;
 	public TRANSLATABLEIDElements getTRANSLATABLEIDAccess() {
@@ -1632,52 +1585,68 @@
 	public ParserRule getTRANSLATABLEIDRule() {
 		return getTRANSLATABLEIDAccess().getRule();
 	}
-
+	
 	//enum LegendPlacementEnum:
-	//	INSIDE="inside" | INSIDE_GRID="inside-grid" | OUTSIDE="outside" | OUTSIDE_GRID="outside-grid";
+	//	INSIDE='inside' | INSIDE_GRID='inside-grid' | OUTSIDE='outside' | OUTSIDE_GRID='outside-grid';
 	public LegendPlacementEnumElements getLegendPlacementEnumAccess() {
-		return unknownRuleLegendPlacementEnum;
+		return eLegendPlacementEnum;
 	}
 	
 	public EnumRule getLegendPlacementEnumRule() {
 		return getLegendPlacementEnumAccess().getRule();
 	}
-
+	
 	//enum ToggleTypeEnum:
-	//	NORMAL="normal" | SLOW="slow" | FAST="fast";
+	//	NORMAL='normal' | SLOW='slow' | FAST='fast';
 	public ToggleTypeEnumElements getToggleTypeEnumAccess() {
-		return unknownRuleToggleTypeEnum;
+		return eToggleTypeEnum;
 	}
 	
 	public EnumRule getToggleTypeEnumRule() {
 		return getToggleTypeEnumAccess().getRule();
 	}
-
+	
 	//enum TooltipLocationEnum:
-	//	NORTH="north" | NORTH_EAST="north-east" | EAST="east" | SOUTH_EAST="south-east" | SOUTH="south" |
-	//	SOUTH_WEST="south-west" | WEST="west" | NORTH_WEST="north-west";
+	//	NORTH='north' | NORTH_EAST='north-east' | EAST='east' | SOUTH_EAST='south-east' | SOUTH='south' |
+	//	SOUTH_WEST='south-west' | WEST='west' | NORTH_WEST='north-west';
 	public TooltipLocationEnumElements getTooltipLocationEnumAccess() {
-		return unknownRuleTooltipLocationEnum;
+		return eTooltipLocationEnum;
 	}
 	
 	public EnumRule getTooltipLocationEnumRule() {
 		return getTooltipLocationEnumAccess().getRule();
 	}
-
+	
 	//enum RenderTypeEnum:
-	//	CATEGORY="category" | LINEAR="linear" | DATE="date" | LOG="logarithmic" | PYRAMID="pyramid";
+	//	CATEGORY='category' | LINEAR='linear' | DATE='date' | LOG='logarithmic' | PYRAMID='pyramid';
 	public RenderTypeEnumElements getRenderTypeEnumAccess() {
-		return unknownRuleRenderTypeEnum;
+		return eRenderTypeEnum;
 	}
 	
 	public EnumRule getRenderTypeEnumRule() {
 		return getRenderTypeEnumAccess().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();
 	}
@@ -1685,9 +1654,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();
 	}
@@ -1695,10 +1664,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();
 	}
@@ -1706,9 +1675,9 @@
 	public ParserRule getXAnnotationElementValueOrCommaListRule() {
 		return getXAnnotationElementValueOrCommaListAccess().getRule();
 	}
-
-	//XAnnotationElementValue returns xbase::XExpression:
-	//	=> ({xbase::XListLiteral} "#" "[") (elements+=XAnnotationOrExpression ("," elements+=XAnnotationOrExpression)*)? "]"
+	
+	//XAnnotationElementValue xbase::XExpression:
+	//	=> ({xbase::XListLiteral} '#' '[') (elements+=XAnnotationOrExpression (',' elements+=XAnnotationOrExpression)*)? ']'
 	//	| XAnnotationOrExpression;
 	public XbaseWithAnnotationsGrammarAccess.XAnnotationElementValueElements getXAnnotationElementValueAccess() {
 		return gaXbaseWithAnnotations.getXAnnotationElementValueAccess();
@@ -1717,8 +1686,8 @@
 	public ParserRule getXAnnotationElementValueRule() {
 		return getXAnnotationElementValueAccess().getRule();
 	}
-
-	//XAnnotationOrExpression returns xbase::XExpression:
+	
+	//XAnnotationOrExpression xbase::XExpression:
 	//	XAnnotation | XExpression;
 	public XbaseWithAnnotationsGrammarAccess.XAnnotationOrExpressionElements getXAnnotationOrExpressionAccess() {
 		return gaXbaseWithAnnotations.getXAnnotationOrExpressionAccess();
@@ -1727,880 +1696,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)*;
+	//	ValidID (=> '.' ValidID)*;
 	public XbaseGrammarAccess.QualifiedNameElements getQualifiedNameAccess() {
-		return gaXbaseWithAnnotations.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 gaXbaseWithAnnotations.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.chart/src-gen/org/eclipse/osbp/xtext/chart/validation/AbstractChartDSLValidator.java b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/validation/AbstractChartDSLValidator.java
index 392358e..45c0fa9 100644
--- a/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/validation/AbstractChartDSLValidator.java
+++ b/org.eclipse.osbp.xtext.chart/src-gen/org/eclipse/osbp/xtext/chart/validation/AbstractChartDSLValidator.java
@@ -10,24 +10,29 @@
  *  Contributors:                                                      
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
+ * generated by Xtext 2.11.0
+ *
  */
+
 package org.eclipse.osbp.xtext.chart.validation;
 
 import java.util.ArrayList;
 import java.util.List;
 import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.osbp.xtext.oxtype.validation.OXtypeValidator;
 
-public class AbstractChartDSLValidator extends org.eclipse.xtext.xbase.annotations.validation.XbaseWithAnnotationsValidator {
-
+public abstract class AbstractChartDSLValidator 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/chart/ChartDSL"));
-	    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/chart/ChartDSL"));
+		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.chart/src/org/eclipse/osbp/xtext/chart/ChartDSL.xtext b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSL.xtext
index b1de8c8..550afbf 100644
--- a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSL.xtext
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSL.xtext
@@ -11,7 +11,7 @@
  *     Loetz GmbH & Co. KG
  * 
  */
-grammar org.eclipse.osbp.xtext.chart.ChartDSL with org.eclipse.xtext.xbase.annotations.XbaseWithAnnotations
+grammar org.eclipse.osbp.xtext.chart.ChartDSL with org.eclipse.osbp.xtext.oxtype.OXtype
 
 import "http://osbp.eclipse.org/xtext/chart/ChartDSL" 
 
@@ -22,13 +22,14 @@
 import "http://www.eclipse.org/emf/2002/Ecore" as ecore
 
 ChartModel:
+	importSection=XImportSection?
 	packages+=ChartPackage*;
 
 ChartPackage:
-	{ChartPackage} 'package' name=QualifiedName ('{' (imports+=ChartImport)* (charts+=Chart)* '}' )?;
+	{ChartPackage} 'package' name=QualifiedName ('{'  (charts+=Chart)* '}' )?;
 
 Chart:
-	{Chart} 'chart' name=TRANSLATABLEID (description?='described by' descriptionValue=TRANSLATABLESTRING)? 'as' charttype=ChartOption (polling?='polling' pollingTime=INT)? ('using' source=ChartDatamart)?;
+	{Chart} 'chart' name=TRANSLATABLEID (description?='describedBy' descriptionValue=TRANSLATABLESTRING)? 'as' charttype=ChartOption ((polling?='polling' pollingTime=INT)? & (selectById?='selectById')?) ('using' source=ChartDatamart)?;
 
 ChartOption:
 	ChartBar | ChartLine | ChartPie | ChartDonut | ChartBubble | ChartGauge | ChartTree;
@@ -58,7 +59,7 @@
 	ChartNumberInterval;
 	
 ChartNumberInterval:
-	{ChartNumberInterval} 'up to' numberIntervalValue=SignedNumber numberRange=ChartRangeElement;
+	{ChartNumberInterval} 'upTo' numberIntervalValue=SignedNumber numberRange=ChartRangeElement;
 	
 ChartDatamart:
 	'datamart' datamartRef=[datamart::DatamartDefinition] '{' elements+=ChartElement* '}';
@@ -73,7 +74,7 @@
 	'tooltip' location=TooltipLocationEnum ((tooltipAlways?='always')? (insideChart?='inside')?);
 	
 ChartAxis:
-	'axis' axis=[datamart::DatamartAxis] 'renders' renderType=RenderTypeEnum (shortLabel?='shortLabel')? ('tickangle' angle=SignedNumber)?;
+	'axis' axis=[datamart::DatamartAxis] 'renders' renderType=RenderTypeEnum (shortLabel?='shortLabel')? ('angle' angle=SignedNumber)?;
 	
 ChartRangeElement:
 	ChartSegmentColor;
@@ -81,18 +82,9 @@
 ChartSegmentColor: 
 	'segmentcolor' rgb=STRING;
 
-ChartImport returns types::LImport:
-	'import' importedNamespace=ChartQualifiedNameWithWildCard;
-	
-//SignedNumber returns ecore::EDouble:
-//	'-'? Number;
 SignedNumber returns ecore::EInt:
 	('-'? INT)?;
 
-	
-ChartQualifiedNameWithWildCard:
-	QualifiedName ('.' '*')?;
-
 TRANSLATABLESTRING: STRING;	
 
 TRANSLATABLEID:
@@ -109,4 +101,4 @@
 	
 enum RenderTypeEnum:
 	CATEGORY='category' | LINEAR='linear' | DATE='date' | LOG='logarithmic' |PYRAMID='pyramid';
-	
\ No newline at end of file
+	
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSLRuntimeModule.java b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSLRuntimeModule.java
index aba5f20..d1c5ce2 100644
--- a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSLRuntimeModule.java
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/ChartDSLRuntimeModule.java
@@ -11,94 +11,166 @@
  * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
  * 
  */
- package org.eclipse.osbp.xtext.chart;
+package org.eclipse.osbp.xtext.chart;
 
 import javax.inject.Singleton;
 
-import org.eclipse.xtext.conversion.IValueConverterService;
-import org.eclipse.xtext.generator.IGenerator;
-import org.eclipse.xtext.generator.IOutputConfigurationProvider;
-import org.eclipse.xtext.scoping.IScopeProvider;
-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 com.google.inject.Binder;
-
+import org.eclipse.osbp.dsl.common.xtext.scoping.ScopingInfoProvider;
+import org.eclipse.osbp.xtext.chart.formatting.ChartDSLFormatter;
+import org.eclipse.osbp.xtext.chart.imports.ShouldImportProvider;
 import org.eclipse.osbp.xtext.chart.jvmmodel.ChartModelGenerator;
-import org.eclipse.osbp.xtext.chart.scoping.ChartScopeProvider;
+import org.eclipse.osbp.xtext.chart.scoping.ChartDSLScopeProvider;
 import org.eclipse.osbp.xtext.chart.valueconverter.ChartQualifiedNameProvider;
 import org.eclipse.osbp.xtext.chart.valueconverter.ChartValueConverterService;
 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.SemanticLoadingResource;
+import org.eclipse.osbp.xtext.oxtype.scoping.IScopingInfoProvider;
+import org.eclipse.osbp.xtext.oxtype.scoping.OXDelegatingNamespaceScopeProvider;
+import org.eclipse.osbp.xtext.oxtype.serializer.JvmTypeAwareTransientValueService;
+import org.eclipse.xtext.conversion.IValueConverterService;
+import org.eclipse.xtext.findReferences.TargetURICollector;
+import org.eclipse.xtext.generator.IGenerator;
+import org.eclipse.xtext.generator.IOutputConfigurationProvider;
+import org.eclipse.xtext.linking.ILinkingService;
+import org.eclipse.xtext.resource.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.JvmModelTargetURICollector;
+import org.eclipse.xtext.xbase.resource.BatchLinkableResourceStorageFacade;
+
+import com.google.inject.Binder;
+import com.google.inject.name.Names;
 
 // TODO: Auto-generated Javadoc
 /**
- * Use this class to register components to be used at runtime / without the Equinox extension registry.
+ * Use this class to register components to be used at runtime / without the
+ * Equinox extension registry.
  */
-public class ChartDSLRuntimeModule extends org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule {
+public class ChartDSLRuntimeModule extends
+		org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule {
+
+	public Class<? extends IResourceStorageFacade> bindResourceStorageFacade() {
+		return BatchLinkableResourceStorageFacade.class;
+	}
 	
-	/* (non-Javadoc)
-	 * @see org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule#bindIGenerator()
+	public Class<? extends TargetURICollector> bindTargetURICollector() {
+		return JvmModelTargetURICollector.class;
+	}
+	
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule#bindIGenerator
+	 * ()
 	 */
 	@Override
 	public Class<? extends IGenerator> bindIGenerator() {
-	    return ChartModelGenerator.class;
-	}
-
-	/* (non-Javadoc)
-	 * @see org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule#bindIScopeProvider()
-	 */
-	public Class<? extends IScopeProvider> bindIScopeProvider() {
-		return ChartScopeProvider.class;
+		return ChartModelGenerator.class;
 	}
 	
+	public Class<? extends org.eclipse.xtext.formatting.IFormatter> bindIFormatter() {
+		return ChartDSLFormatter.class;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule#bindIScopeProvider
+	 * ()
+	 */
+	public Class<? extends IScopeProvider> bindIScopeProvider() {
+		return ChartDSLScopeProvider.class;
+	}
+	
+	@SuppressWarnings("restriction")
+	public Class<? extends org.eclipse.xtext.xbase.scoping.batch.XbaseBatchScopeProvider> bindXbaseBatchScopeProvider() {
+		return ChartDSLScopeProvider.class;
+	}
+
 	/**
 	 * Only required, if fqn can not be created by appending the names of the
 	 * semantic elements up the hierarchy.
 	 *
-	 * @return the class<? extends org.eclipse.xtext.naming. I qualified name provider>
+	 * @return the class<? extends org.eclipse.xtext.naming. I qualified name
+	 *         provider>
 	 */
 	public Class<? extends org.eclipse.xtext.naming.IQualifiedNameProvider> bindIQualifiedNameProvider() {
 		return ChartQualifiedNameProvider.class;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule#bindIValueConverterService()
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule#
+	 * bindIValueConverterService()
 	 */
 	@Override
 	public Class<? extends IValueConverterService> bindIValueConverterService() {
 		return ChartValueConverterService.class;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule#configure(com.google.inject.Binder)
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule#configure(
+	 * com.google.inject.Binder)
 	 */
 	@Override
 	public void configure(Binder binder) {
 		super.configure(binder);
-		binder.bind(IOutputConfigurationProvider.class).to(DSLOutputConfigurationProvider.class).in(Singleton.class);
+		binder.bind(IOutputConfigurationProvider.class)
+				.to(DSLOutputConfigurationProvider.class).in(Singleton.class);
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule#bindXtextResource()
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see
+	 * org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule#bindXtextResource
+	 * ()
 	 */
 	public Class<? extends org.eclipse.xtext.resource.XtextResource> bindXtextResource() {
 		return SemanticLoadingResource.class;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.osbp.xtext.chart.AbstractChartDSLRuntimeModule#bindILinker()
-	 */
 	public Class<? extends org.eclipse.xtext.linking.ILinker> bindILinker() {
-		return LazyJvmTypeLinker.class;
+		return JvmTypeAwareLinker.class;
 	}
 
-	/**
-	 * Bind serializer I transient value service.
-	 *
-	 * @return the class<? extends org.eclipse.xtext.serializer.sequencer. I transient value service>
-	 */
-	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 ILinkingService> bindILinkingService() {
+		return OXTypeLinkingService.class;
+	}
+
+	public Class<? extends RewritableImportSection.Factory> bindRewritableImportSection$Factory() {
+		return OXTypeRewritableImportSection.Factory.class;
+	}
+
+	public Class<? extends IScopingInfoProvider> bindIScopingInfoProvider() {
+		return ScopingInfoProvider.class;
+	}
+
+	@Override
+	public void configureIScopeProviderDelegate(Binder binder) {
+		binder.bind(IScopeProvider.class)
+				.annotatedWith(
+						Names.named("org.eclipse.xtext.scoping.impl.AbstractDeclarativeScopeProvider.delegate"))
+				.to(OXDelegatingNamespaceScopeProvider.class);
+	}
+
+	public Class<? extends IShouldImportProvider> bindIShouldImportProvider() {
+		return ShouldImportProvider.class;
+	}
+
 }
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/GenerateChartDSL.mwe2 b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/GenerateChartDSL.mwe2
index a7129bc..87f2307 100644
--- a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/GenerateChartDSL.mwe2
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/GenerateChartDSL.mwe2
@@ -14,158 +14,87 @@
 module org.eclipse.osbp.xtext.chart.GenerateChartDSL
 
 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 projectName = "org.eclipse.osbp.xtext.chart"
-var grammarURI = "platform:/resource/${projectName}/src/org/eclipse/osbp/xtext/chart/ChartDSL.xtext"
-var fileExtensions = "chart"
-var runtimeProject = "../${projectName}"
-var generateXtendStub = true
-var encoding = "UTF-8"
+var rootPath = ".."
+
+var fileHeaderText = "/**
+ *                                                                            
+ *  Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany) 
+ *                                                                            
+ *  All rights reserved. This program and the accompanying materials           
+ *  are made available under the terms of the Eclipse Public License v1.0       
+ *  which accompanies this distribution, and is available at                  
+ *  http://www.eclipse.org/legal/epl-v10.html                                 
+ *                                                                            
+ *  Contributors:                                                      
+ * 	   Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
+ * 
+ * generated by Xtext \${version}
+ *
+ */
+
+"
 
 Workflow {
-	bean = org.eclipse.emf.ecore.xcore.XcoreStandaloneSetup : xcore {}
-	bean = org.eclipse.xtext.mwe.Reader {
-		register = xcore
+
+	component = XtextGenerator {
+		configuration = {
+			project = StandardProjectConfig {
+				baseName = "org.eclipse.osbp.xtext.chart"
+				rootPath = rootPath
+				genericIde = {
+					enabled = true
+					name = "org.eclipse.osbp.xtext.chart.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.chart.ChartDSL"
+			fileExtensions = "chart"
+			
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.chart/model/ChartDSL.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"
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.datamartdsl/model/DatamartDSL.xcore"
+			referencedResource = "platform:/resource/org.eclipse.osbp.xtext.cubedsl/model/CubeDSL.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.chart/model/ChartDSL.xcore"
-//		registerEcoreFile = "platform:/resource/org.eclipse.osbp.xtext.chart/model/ChartDSL.xcore"
-		registerGeneratedEPackage = "org.eclipse.osbp.xtext.chart.ChartDSLPackage"
-		registerGenModelFile = "platform:/resource/org.eclipse.osbp.xtext.datamartdsl/model/DatamartDSL.xcore"
-//		registerEcoreFile = "platform:/resource/org.eclipse.osbp.xtext.datamartdsl/model/DatamartDSL.xcore"
-		registerGeneratedEPackage = "org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage"
-		registerGenModelFile = "platform:/resource/org.eclipse.osbp.xtext.cubedsl/model/CubeDSL.xcore"
-//		registerEcoreFile = "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 {}
-    
-    		// project wizard (optional)
-    		// fragment = projectWizard.SimpleProjectWizardFragment auto-inject {
-    		//      generatorProjectName = "${projectName}"
-    		// }
-    
-    		// 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.chart/src/org/eclipse/osbp/xtext/chart/formatting/ChartDSLFormatter.xtend b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/formatting/ChartDSLFormatter.xtend
index 6065f1d..f540866 100644
--- a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/formatting/ChartDSLFormatter.xtend
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/formatting/ChartDSLFormatter.xtend
@@ -14,18 +14,15 @@
  *  This copyright notice shows up in the generated Java code
  *
  */
- 
 package org.eclipse.osbp.xtext.chart.formatting
 
-import com.google.inject.Inject;
-import org.eclipse.osbp.utils.xtext.GenericFormatter
+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.xtext.xbase.services.XtypeGrammarAccess
-import org.eclipse.xtext.Grammar
 
 //import org.eclipse.osbp.xtext.chart.services.ChartDSLGrammarAccess
-
 /**
  * This class contains custom formatting description.
  * 
@@ -36,14 +33,13 @@
  */
 class ChartDSLFormatter extends AbstractDeclarativeFormatter {
 
-//	@Inject extension ChartDSLGrammarAccess
-	@Inject XtypeGrammarAccess grammarAccess
+	//	@Inject extension ChartDSLGrammarAccess
+	@Inject OXtypeGrammarAccess grammarAccess
 
 	override protected void configureFormatting(FormattingConfig c) {
 		val genericFormatter = new GenericFormatter()
- 
-		genericFormatter.formatFirstLevelBlocks( c, grammar.grammar, "Chart", "ChartImport" )
-		genericFormatter.genericFormatting( c, grammar, grammarAccess )
+
+		genericFormatter.formatFirstLevelBlocks(c, grammar.grammar, "Chart")
+		genericFormatter.genericFormatting(c, grammar, grammarAccess)
 	}
 }
- 
\ No newline at end of file
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/imports/ShouldImportProvider.java b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/imports/ShouldImportProvider.java
new file mode 100644
index 0000000..c888455
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/imports/ShouldImportProvider.java
@@ -0,0 +1,21 @@
+package org.eclipse.osbp.xtext.chart.imports;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDSLPackage;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
+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 DatamartDefinition;
+	}
+	
+	protected boolean doShouldProposeAllElements(EObject object, EReference reference) {
+		EClass type = reference.getEReferenceType();
+		return DatamartDSLPackage.Literals.DATAMART_DEFINITION.isSuperTypeOf(type);
+	}
+}
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLD3JavaComponentsCreator.xtend b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLD3JavaComponentsCreator.xtend
index f024e14..5a13cb4 100644
--- a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLD3JavaComponentsCreator.xtend
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLD3JavaComponentsCreator.xtend
@@ -33,7 +33,6 @@
 import org.eclipse.xtext.common.types.TypesFactory
 import org.eclipse.xtext.xbase.jvmmodel.IJvmDeclaredTypeAcceptor
 import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
-import org.eclipse.osbp.utils.constants.GeneratorConstants
 
 class ChartDSLD3JavaComponentsCreator {
 		
@@ -46,10 +45,8 @@
 		def void createJsJavaComponent(Chart chart, IJvmDeclaredTypeAcceptor acceptor){
 			val stateClassName = chart.createStateFilename
 			var chart_cls = chart.toClass(chart.createfullyQualifiedChartFilename)
-			chart_cls.documentation = GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION
 			// JavaScript-Java-State-Component creation
 			var state_cls = chart.toClass(chart.createfullyQualifiedStateFilename)
-			state_cls.documentation = GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION
 			if (chart.charttype instanceof ChartTree){
 				val ChartTree chartTree = chart.charttype as ChartTree
 				// JavaScript-Java-Component creation
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLJvmModelInferrer.xtend b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLJvmModelInferrer.xtend
index 9ed0c34..58d885a 100644
--- a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLJvmModelInferrer.xtend
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLJvmModelInferrer.xtend
@@ -18,28 +18,35 @@
 package org.eclipse.osbp.xtext.chart.jvmmodel
 
 import com.github.wolfie.refresher.Refresher
-import com.vaadin.data.Property.ValueChangeListener
+import com.vaadin.server.ClientConnector.AttachEvent
+import com.vaadin.server.ClientConnector.AttachListener
+import com.vaadin.server.ClientConnector.DetachEvent
+import com.vaadin.server.ClientConnector.DetachListener
 import com.vaadin.ui.Component
 import com.vaadin.ui.VerticalLayout
 import elemental.json.JsonException
 import java.util.ArrayList
 import java.util.HashMap
+import java.util.HashSet
 import java.util.Locale
-import javax.annotation.PostConstruct
-import javax.annotation.PreDestroy
+import java.util.Set
 import javax.inject.Inject
-import org.dussan.vaadin.dcharts.DCharts
 import org.eclipse.e4.core.contexts.IEclipseContext
 import org.eclipse.e4.core.services.events.IEventBroker
+import org.eclipse.e4.ui.di.Focus
 import org.eclipse.e4.ui.model.application.MApplication
 import org.eclipse.osbp.dsl.semantic.common.types.LAttribute
+import org.eclipse.osbp.dsl.semantic.entity.LEntity
 import org.eclipse.osbp.osgi.hybrid.api.AbstractHybridVaaclipseView
-import org.eclipse.osbp.ui.api.datamart.DerivedOlapException
+import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent
+import org.eclipse.osbp.runtime.common.event.IEventDispatcher
+import org.eclipse.osbp.ui.api.datamart.DatamartFilter
 import org.eclipse.osbp.ui.api.datamart.IDatamartFilterGenerator
+import org.eclipse.osbp.ui.api.e4.IE4Focusable
+import org.eclipse.osbp.ui.api.layout.IViewLayoutManager
 import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService
+import org.eclipse.osbp.ui.api.themes.EnumCssClass
 import org.eclipse.osbp.ui.api.user.IUser
-import org.eclipse.osbp.utils.constants.GeneratorConstants
-import org.eclipse.osbp.utils.theme.EnumCssClass
 import org.eclipse.osbp.utils.vaadin.PropertyLookup
 import org.eclipse.osbp.xtext.chart.Chart
 import org.eclipse.osbp.xtext.chart.ChartAxis
@@ -58,15 +65,15 @@
 import org.eclipse.osbp.xtext.chart.ChartTree
 import org.eclipse.osbp.xtext.cubedsl.CubeLevel
 import org.eclipse.osbp.xtext.datamart.common.olap.DerivedCellSet
-import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAttribute
 import org.eclipse.osbp.xtext.datamartdsl.DatamartCube
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCubeAxis
 import org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure
 import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity
 import org.eclipse.osbp.xtext.datamartdsl.DatamartMeasure
 import org.eclipse.osbp.xtext.datamartdsl.DatamartMember
 import org.eclipse.osbp.xtext.datamartdsl.DatamartOwner
 import org.eclipse.osbp.xtext.datamartdsl.DatamartPackage
-import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty
 import org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum
 import org.eclipse.osbp.xtext.datamartdsl.jvmmodel.DatamartDSLJvmModelInferrer
 import org.eclipse.xtext.common.types.JvmDeclaredType
@@ -79,7 +86,7 @@
 import org.eclipse.xtext.xbase.jvmmodel.JvmTypesBuilder
 import org.osgi.service.event.EventHandler
 import org.slf4j.Logger
-import org.eclipse.osbp.ui.api.layout.IViewLayoutManager
+import org.dussan.vaadin.dcharts.DCharts
 
 /**
  * <p>
@@ -112,9 +119,14 @@
 			var cls = chart.toClass(pckg.fullyQualifiedName+"."+chart.name+"Chart")
 	        cls.superTypes.add(_typeReferenceBuilder.typeRef(AbstractHybridVaaclipseView))
 			cls.superTypes.add(_typeReferenceBuilder.typeRef(IUser.UserLocaleListener))
+			cls.superTypes.add(_typeReferenceBuilder.typeRef(IDatamartFilterGenerator.FilterChangeListener))
+			cls.superTypes.add(_typeReferenceBuilder.typeRef(IEventDispatcher.Receiver))
+			cls.superTypes.add(_typeReferenceBuilder.typeRef(DetachListener))
+			cls.superTypes.add(_typeReferenceBuilder.typeRef(AttachListener))
+			cls.superTypes.add(_typeReferenceBuilder.typeRef(IE4Focusable))
 	   		acceptor.accept(cls,
 	   			[
-				 	documentation = GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION
+	   				it.fileHeader = pckg.documentation
 	   				it.toFields(chart)
 	   				it.toConstructor(chart)
 					it.toGetterSetter(chart)
@@ -136,7 +148,11 @@
    			parameters += chart.toParameter("parent", _typeReferenceBuilder.typeRef(VerticalLayout))
    			parameters += chart.toParameter("context", _typeReferenceBuilder.typeRef(IEclipseContext))
    			parameters += chart.toParameter("app", _typeReferenceBuilder.typeRef(MApplication))
-			body = [ append('''super(parent,context,app);''')]
+			body = [ append(
+				'''
+				super(parent,context,app);
+				parent.addAttachListener(this);
+				parent.addDetachListener(this);''')]
 		])
 	}
 	
@@ -164,11 +180,9 @@
 		// the package name of the referenced datamart
 		if (getSourceDataMartRefName(chart) != null) {
 			var packageName = (chart.source.datamartRef.eContainer as DatamartPackage).fullyQualifiedName.toString
-			field = chart.toField("datamartClass", _typeReferenceBuilder.typeRef('''«packageName».«chart.source.datamartRef.name.toString»Datamart'''))
+			field = chart.toField("datamartInstance", _typeReferenceBuilder.typeRef('''«packageName».«chart.source.datamartRef.name.toString»Datamart'''))
 			type.members += field
 		}
-		field = chart.toField("filterChangeListener", _typeReferenceBuilder.typeRef(ValueChangeListener))
-		type.members += field
 		field = chart.toField("chartRefresher", _typeReferenceBuilder.typeRef(Refresher))
 		type.members += field
 		field = chart.toField("chartRefresherDone", _typeReferenceBuilder.typeRef(boolean))
@@ -177,7 +191,7 @@
 		type.members += field
 		field = chart.toField("dataComponent", _typeReferenceBuilder.typeRef(Component))
 		type.members += field
-		field = chart.toField("propertyLookupMap", _typeReferenceBuilder.typeRef(HashMap, _typeReferenceBuilder.typeRef(String), _typeReferenceBuilder.typeRef(PropertyLookup)))
+		field = chart.toField("attributeLookupMap", _typeReferenceBuilder.typeRef(HashMap, _typeReferenceBuilder.typeRef(String), _typeReferenceBuilder.typeRef(PropertyLookup)))
 		type.members += field
 		field = chart.toField("charts", _typeReferenceBuilder.typeRef(ArrayList, _typeReferenceBuilder.typeRef(DCharts)))
 		type.members += field
@@ -187,7 +201,7 @@
 		type.members += field
 		field = chart.toField("dslMetadataService", _typeReferenceBuilder.typeRef(IDSLMetadataService)) [annotations += _annotationTypesBuilder.annotationRef(Inject)]
 		type.members += field
-		field = chart.toField("locale", _typeReferenceBuilder.typeRef(Locale))
+		field = chart.toField("eventDispatcher", _typeReferenceBuilder.typeRef(IEventDispatcher))[annotations += _annotationTypesBuilder.annotationRef(Inject)]
 		type.members += field
 	}
 
@@ -207,6 +221,29 @@
 	 *
 	 */
 	def void toOperations(JvmDeclaredType type, Chart chart) {
+		// attach
+		type.members += chart.toMethod("attach", _typeReferenceBuilder.typeRef(Void::TYPE),
+			[
+				parameters += chart.toParameter("event", _typeReferenceBuilder.typeRef(AttachEvent))
+				annotations += _annotationTypesBuilder.annotationRef(Override)
+				body = [append(
+				'''
+				user.addUserLocaleListener(this);
+				filterGenerator.addFilterChangeListener(this);
+				eventDispatcher.addEventReceiver(this);''')]
+			])
+
+		// detach
+		type.members += chart.toMethod("detach", _typeReferenceBuilder.typeRef(Void::TYPE),
+			[
+				parameters += chart.toParameter("event", _typeReferenceBuilder.typeRef(DetachEvent))
+				annotations += _annotationTypesBuilder.annotationRef(Override)
+				body = [append(
+				'''
+				user.removeUserLocaleListener(this);
+				filterGenerator.removeFilterChangeListener(this);
+				eventDispatcher.removeEventReceiver(this);''')]
+			])
    		// create view
    		type.members += chart.toMethod("createView", _typeReferenceBuilder.typeRef(Void::TYPE), [
    			parameters += chart.toParameter("parent", _typeReferenceBuilder.typeRef(VerticalLayout))
@@ -218,7 +255,6 @@
    		])
    		// create tab
    		type.members += chart.toMethod("createTabSheet", _typeReferenceBuilder.typeRef(Component), [
-   			exceptions += _typeReferenceBuilder.typeRef(DerivedOlapException)
    			parameters += chart.toParameter("cellSet", _typeReferenceBuilder.typeRef(DerivedCellSet))
    			parameters += chart.toParameter("axisNo", _typeReferenceBuilder.typeRef(Integer))
    			body = [ append('''«chart.createTabSheet»''')]
@@ -226,7 +262,6 @@
    		// create chart
    		if (!((chart.charttype instanceof ChartTree))) {
 	   		type.members += chart.toMethod("createChart", _typeReferenceBuilder.typeRef(Component), [
-	   			exceptions += _typeReferenceBuilder.typeRef(DerivedOlapException)
 	   			parameters += chart.toParameter("cellSet", _typeReferenceBuilder.typeRef(DerivedCellSet))
 	   			body = [ append('''«chart.createChart»''')]
 	   		])
@@ -234,30 +269,26 @@
    		// create D3 chart
 		if ((chart.charttype instanceof ChartTree)) {
 		   		type.members += chart.toMethod("createD3Chart", _typeReferenceBuilder.typeRef(Component), [
-	   			exceptions += _typeReferenceBuilder.typeRef(DerivedOlapException)
 	   			exceptions += _typeReferenceBuilder.typeRef(JsonException)
 	   			parameters += chart.toParameter("cxCellSet", _typeReferenceBuilder.typeRef(DerivedCellSet))
 	   			body = [ append('''«chart.createD3Chart»''')]
 	   		])
    		}
-		// setup-Method
-		type.members += chart.toMethod("setup", _typeReferenceBuilder.typeRef(Void::TYPE),
+		// focus
+		type.members += chart.toMethod("setFocus", _typeReferenceBuilder.typeRef(Void::TYPE),
 			[
-				visibility = JvmVisibility.PROTECTED
-				annotations += _annotationTypesBuilder.annotationRef(PostConstruct)
-				body = [append('''«chart.setup»''')]
+				annotations += _annotationTypesBuilder.annotationRef(Focus)
+				body = [append(
+				'''
+				Component parent = getParent();
+				while(!(parent instanceof Panel) && parent != null) {
+					parent = parent.getParent();
+				}
+				if(parent != null) {
+					((Panel)parent).focus();
+				}''')]
+				
 			])
-		// subscribe to eventBroker
-		type.members += chart.toMethod("subscribe", _typeReferenceBuilder.typeRef(Void::TYPE), [
-			visibility = JvmVisibility.PROTECTED
-			body = [append('''«chart.subscribe»''')]
-		])
-		// unsubscribe from eventBroker
-		type.members += chart.toMethod("unsubscribe", _typeReferenceBuilder.typeRef(Void::TYPE), [
-			visibility = JvmVisibility.PROTECTED
-			annotations += _annotationTypesBuilder.annotationRef(PreDestroy)
-			body = [append('''«chart.unsubscribe»''')]
-		])
 		// locale notification
 		type.members += chart.toMethod("localeChanged", _typeReferenceBuilder.typeRef(Void::TYPE), [
 			visibility = JvmVisibility.PUBLIC
@@ -265,17 +296,24 @@
 			parameters += chart.toParameter("locale", _typeReferenceBuilder.typeRef(Locale))
 			body = [append('''«chart.localeChanged»''')]
 		])
+		// filter notification
+		type.members += chart.toMethod("filterChanged", _typeReferenceBuilder.typeRef(Void::TYPE),
+			[
+				parameters += chart.toParameter("changedFilter", _typeReferenceBuilder.typeRef(DatamartFilter))
+				visibility = JvmVisibility.PUBLIC
+				annotations += _annotationTypesBuilder.annotationRef(Override)
+				body = [append('''renderData();''')]
+			])
+		// event notification
+		type.members += chart.toMethod("receiveEvent", _typeReferenceBuilder.typeRef(Void::TYPE),
+			[
+				visibility = JvmVisibility.PUBLIC
+				annotations += _annotationTypesBuilder.annotationRef(Override)
+				parameters += chart.toParameter("event", _typeReferenceBuilder.typeRef(EventDispatcherEvent))
+				body = [append('''«chart.receiveEvent»''')]
+			])
 	}
 	
-	// subscribe to view refresh	
-	def subscribe(Chart chart)
-		'''
-		eventBroker.subscribe(EventBrokerMsg.REFRESH_VIEW+"«chart.name»Chart", refreshView);'''
-
-	def unsubscribe(Chart chart)
-		'''
-		eventBroker.unsubscribe(refreshView);'''
-
 	def String getSourceDataMartRefName(Chart chart) {
 		if (chart.source != null && chart.source.datamartRef != null && chart.source.datamartRef.name != null) {
 			return chart.source.datamartRef.name.toString
@@ -292,29 +330,26 @@
 	def String createView(Chart chart) {
 		var body = 
 		'''
+		eclipseContext.set(IE4Focusable.class, this);
 		chartRefresherDone = false;
 		charts = new ArrayList<DCharts>();
 		coordinateSystem = new ArrayList<Integer>();
-		filterGenerator = new DatamartFilterGenerator();
-		filterGenerator.setDslMetadataService(dslMetadataService);
-		layoutManager = new ViewLayoutManager();
-		chartRefresher = new Refresher();
-		chartRenderDelay = new Refresher();
-		propertyLookupMap = new HashMap<String,PropertyLookup>();
-		'''
-		// the package name of the referenced datamart
-		if (getSourceDataMartRefName(chart) != null) {
-			body = '''
-			«body»
-			datamartClass = new «getSourceDataMartRefName(chart)»Datamart();'''
-		}
-		body = '''
-		«body»
 		parent.setPrimaryStyleName("osbp"); // <== is THIS necessary any more???
 		parent.addStyleName("«EnumCssClass.VIEW.styleName»");
 		parent.addStyleName("«EnumCssClass.CHART_VIEW.styleName»");
 		parent.setSizeFull();
+		layoutManager = new ViewLayoutManager();
 		layoutManager.init(parent);
+		datamartInstance = new «getSourceDataMartRefName(chart)»Datamart();
+		datamartInstance.setUser(user);
+		filterGenerator = new DatamartFilterGenerator(datamartInstance, dslMetadataService);
+		filterGenerator.createUIFilters(layoutManager);
+		chartRefresher = new Refresher();
+		chartRenderDelay = new Refresher();
+		attributeLookupMap = new HashMap<String,PropertyLookup>();
+		'''
+		body = '''
+		«body»
 		refreshView = «chart.refreshView»
 		'''
 		// initial refresh due to a bug in DChart
@@ -334,9 +369,7 @@
 			}
 		});
 		layoutManager.addExtension(chartRenderDelay);
-		user.addUserLocaleListener(this);
 		'''
-		//var isTask = chart.source instanceof ChartDatamart && (chart.source as ChartDatamart).datamartRef.source instanceof DatamartTask
 		if (chart.polling) {
 			body = '''
 			«body»
@@ -350,18 +383,6 @@
 			layoutManager.addExtension(chartRefresher);
 			'''			
 		}
-		if (chart.source != null) {
-			body = '''
-			«body»
-			filterChangeListener = new ValueChangeListener() {
-				@Override
-				public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) {
-					renderData();
-				}
-			};
-			filterGenerator.createFilter(datamartClass, user, filterChangeListener, layoutManager);
-			'''
-		}
 		body = '''
 		«body»// to resize the chart according to browser
 		Page.getCurrent().addBrowserWindowResizeListener(new BrowserWindowResizeListener() {
@@ -417,41 +438,40 @@
 		if (chart.source != null) {
 			body = '''
 			«body»// get the results
-			try {
-				final DerivedCellSet cellSet = datamartClass.getResults(user, filterGenerator.getFilter(«(chart.source.datamartRef.source instanceof DatamartCube).booleanValue.toString»), getTaskOperativeDtoClass(), getTaskInitialOperativeDtos());
-				getCoordinateSystem().clear();
-				if (cellSet == null) {
-					promptSecurityMessage(dslMetadataService.translate(locale.toLanguageTag(), "securityMessage"), layoutManager.getDataArea());
-					return;
+			final DerivedCellSet cellSet = datamartInstance.getResults(getTaskOperativeDtoClass(), getTaskInitialOperativeDtos());
+			getCoordinateSystem().clear();
+			if (cellSet == null) {
+				promptSecurityMessage(dslMetadataService.translate(user.getLocale().toLanguageTag(), "securityMessage"), layoutManager.getDataArea());
+				return;
+			} else {
+				layoutManager.getDataArea().removeAllComponents();
+			}
+			// generate a new result component
+			if (cellSet != null) {
+				// create a multidimensional coordinate system against the cellSet
+				for	(int axis = 0; axis < cellSet.getAxes().size(); axis++) {
+					getCoordinateSystem().add(0);
+				}
+				// remove any previous component
+				if	(dataComponent != null) {
+					layoutManager.getDataArea().removeComponent(dataComponent);
+					dataComponent = null;
+				}
+				if (cellSet.getAxes().size() < 2) {
+					log.error("at least 2 axes from referenced datamart «chart.source.datamartRef.name» are needed to render «chart.name»");
 				} else {
-					layoutManager.getDataArea().removeAllComponents();
-				}
-				// generate a new result component
-				if (cellSet != null) {
-					// create a multidimensional coordinate system against the cellSet
-					for	(int axis = 0; axis < cellSet.getAxes().size(); axis++) {
-						getCoordinateSystem().add(0);
-					}
-					// remove any previous component
-					if	(dataComponent != null) {
-						layoutManager.getDataArea().removeComponent(dataComponent);
-						dataComponent = null;
-					}
-					if (cellSet.getAxes().size() < 2) {
-						log.error("at least 2 axes from referenced datamart «chart.source.datamartRef.name» are needed to render «chart.name»");
-					}
 					dataComponent = createTabSheet(cellSet, cellSet.getAxes().size());
-					dataComponent.setSizeFull();
-					dataComponent.setId("dataComponent");
-					dataComponent.addStyleName("«EnumCssClass.DATA_COMPONENT.styleName»");
-					layoutManager.getDataArea().addComponent(dataComponent);
-					layoutManager.getDataArea().setExpandRatio(dataComponent, 1);
+					if(dataComponent != null) {
+						dataComponent.setSizeFull();
+						dataComponent.setId("dataComponent");
+						dataComponent.addStyleName("«EnumCssClass.DATA_COMPONENT.styleName»");
+						layoutManager.getDataArea().addComponent(dataComponent);
+						layoutManager.getDataArea().setExpandRatio(dataComponent, 1);
+					}
 				}
-				else {
-					log.error("referenced datamart «chart.source.datamartRef.name» generates no results");
-				}
-			} catch (DerivedOlapException e) {
-				log.error(e.getLocalizedMessage());
+			}
+			else {
+				log.error("referenced datamart «chart.source.datamartRef.name» generates no results");
 			}
 			'''
 		} else {
@@ -628,16 +648,19 @@
 		body = '''
 		«body»
 			String title = null;
-			Boolean valueUsed = false;
 			for (DerivedMember member : pos.getMembers()) {
-				if	(title == null) {
-					title = dslMetadataService.translate(user.getLocale().toLanguageTag(), member.getCaption());
-				}
-				else {
-					title += " "+dslMetadataService.translate(user.getLocale().toLanguageTag(), member.getCaption());
+				if(member.getType() == MemberType.MEASURE) {
+					if	(title == null) {
+						title = dslMetadataService.translate(user.getLocale().toLanguageTag(), member.getCaption());
+					}
+					else {
+						title += " "+dslMetadataService.translate(user.getLocale().toLanguageTag(), member.getCaption());
+					}
 				}
 			}
-			«data_axis.axis.name.literal»TitlesArray.add(title);
+			if(title != null) {
+				«data_axis.axis.name.literal»TitlesArray.add(title);
+			}
 		}
 		'''
 		if (hasAxis) {
@@ -665,24 +688,28 @@
 		for	(DerivedPosition pos : cellSet.getAxes().get(«category_axis.axis.name.value»).getPositions()) {
 			String title = "";
 			for (DerivedMember member : pos.getMembers()) {
-		    	String[] tokens = member.getUniqueName().split("\\]\\.\\[");
-		    	if (!«category_axis.axis.name.literal»AxisLabelSet) {
-		    		if («category_axis.axis.name.literal»AxisLabel.length() > 0) {
-		    			«category_axis.axis.name.literal»AxisLabel += " / ";
-		    		}
-		    		«category_axis.axis.name.literal»AxisLabel += dslMetadataService.translate(user.getLocale().toLanguageTag(), member.getLevel().getName());
-		    	}
-		    	int start = 1;
-		    	// if shortlabel is configured, use only last level name
-		    	if («category_axis.shortLabel.booleanValue») {
-		    		start = tokens.length-1;
-		    	}
-		    	for	(int token = start; token < tokens.length; token++) {
-		    		title += dslMetadataService.translate(user.getLocale().toLanguageTag(), tokens[token])+" ";
-		    	}
+				if(member.getType() == MemberType.REGULAR) {
+			    	String[] tokens = member.getUniqueName().split("\\]\\.\\[");
+			    	if (!«category_axis.axis.name.literal»AxisLabelSet) {
+			    		if («category_axis.axis.name.literal»AxisLabel.length() > 0) {
+			    			«category_axis.axis.name.literal»AxisLabel += " / ";
+			    		}
+			    		«category_axis.axis.name.literal»AxisLabel += dslMetadataService.translate(user.getLocale().toLanguageTag(), member.getLevel().getName());
+			    	}
+			    	int start = 1;
+			    	// if shortlabel is configured, use only last level name
+			    	if («category_axis.shortLabel.booleanValue») {
+			    		start = tokens.length-1;
+			    	}
+			    	for	(int token = start; token < tokens.length; token++) {
+			    		title += dslMetadataService.translate(user.getLocale().toLanguageTag(), tokens[token])+" ";
+			    	}
+			    }
 			}
-			«category_axis.axis.name.literal»AxisLabelSet = true;
-			«category_axis.axis.name.literal»TitlesArray.add(title.trim().replace("[", "").replace("]", ""));
+			if(title != null) {
+				«category_axis.axis.name.literal»AxisLabelSet = true;
+				«category_axis.axis.name.literal»TitlesArray.add(title.trim().replace("[", "").replace("]", ""));
+			}
 		}
 		'''
 		if (hasAxis) {
@@ -691,9 +718,13 @@
 			«category_axis.axis.name.literal»Ticks.add(«category_axis.axis.name.literal»TitlesArray.toArray());
 			'''
 		}
-
+		
 		body = '''
-		«body»// copy cellset data to data series
+		«body»
+		if(«category_axis.axis.name.literal»TitlesArray.isEmpty()) {
+			return null;
+		}
+		// copy cellset data to data series
 		DataSeries dataSeries = new DataSeries();
 		'''
 		if (chart.charttype instanceof ChartBubble) {
@@ -721,53 +752,61 @@
 			'''				 	
 		}
 		body = '''
-		«body»	int «inner_axis.axis.name.literal»No = 0;
+		«body»	if(«outer_axis.axis.name.literal»Pos.getMembers().get(0).getType() == MemberType.«IF outer_axis==data_axis»MEASURE«ELSE»REGULAR«ENDIF») {
 		'''
 		body = '''
-		«body»	for	(DerivedPosition «inner_axis.axis.name.literal»Pos : cellSet.getAxes().get(«inner_axis.axis.name.value»).getPositions()) {
+		«body»		int «inner_axis.axis.name.literal»No = 0;
+		'''
+		body = '''
+		«body»		for	(DerivedPosition «inner_axis.axis.name.literal»Pos : cellSet.getAxes().get(«inner_axis.axis.name.value»).getPositions()) {
+		'''
+		body = '''
+		«body»			if(«inner_axis.axis.name.literal»Pos.getMembers().get(0).getType() == MemberType.«IF inner_axis==data_axis»MEASURE«ELSE»REGULAR«ENDIF») {
 		'''
 		if (chart.charttype instanceof ChartPie) {
 			body = '''
-			«body»		dataSeries.newSeries();
+			«body»				dataSeries.newSeries();
 			'''
 		}
 		body = '''
-		«body»		coordinate.set(«inner_axis.axis.name.value», «inner_axis.axis.name.literal»No);
+		«body»				coordinate.set(«inner_axis.axis.name.value», «inner_axis.axis.name.literal»No);
 		'''
 		body = '''
 		«body»
-				Object value = null;
-				DerivedCell cell = cellSet.getCell(coordinate);
-				if (cell != null) {
-					value = cell.getValue();
-				}
+						Object value = null;
+						DerivedCell cell = cellSet.getCell(coordinate);
+						if (cell != null) {
+							value = cell.getValue();
+						}
 		'''
 		if (chart.charttype instanceof ChartPie || chart.charttype instanceof ChartDonut) {
 			body = '''
-			«body»		dataSeries.add(«outer_axis.axis.name.literal»TitlesArray.get(«outer_axis.axis.name.literal»No)+" "+«inner_axis.axis.name.literal»TitlesArray.get(«inner_axis.axis.name.literal»No),(value == null ? 0.0 : value));
+			«body»				dataSeries.add(«outer_axis.axis.name.literal»TitlesArray.get(«outer_axis.axis.name.literal»No)+" "+«inner_axis.axis.name.literal»TitlesArray.get(«inner_axis.axis.name.literal»No),(value == null ? 0.0 : value));
 			'''
 		}
 		else {
 			body = '''
-			«body»		«inner_axis.axis.name.literal»DataSeries.add(value == null ? 0.0 : value);
+			«body»				«inner_axis.axis.name.literal»DataSeries.add(value == null ? 0.0 : value);
 			'''
 		}
 		body = '''
-		«body»		«inner_axis.axis.name.literal»No ++;
-			}
+		«body»				«inner_axis.axis.name.literal»No ++;
+					}
+				}
 		'''
 		if (!(chart.charttype instanceof ChartPie) && !(chart.charttype instanceof ChartDonut)) {
 			if (chart.charttype instanceof ChartBubble) {
 				body = '''
-				«body»	«inner_axis.axis.name.literal»DataSeries.add(«outer_axis.axis.name.literal»TitlesArray.get(«outer_axis.axis.name.literal»No));
+				«body»			«inner_axis.axis.name.literal»DataSeries.add(«outer_axis.axis.name.literal»TitlesArray.get(«outer_axis.axis.name.literal»No));
 				'''
 			}
 			body = '''
-			«body»	dataSeries.add(«inner_axis.axis.name.literal»DataSeries.toArray());
+			«body»		dataSeries.add(«inner_axis.axis.name.literal»DataSeries.toArray());
 			'''
 		}
 		body = '''
-		«body»	«outer_axis.axis.name.literal»No ++;
+		«body»	}
+			«outer_axis.axis.name.literal»No ++;
 		}
 		'''
 		body = '''
@@ -995,13 +1034,13 @@
 			'''
 		}
 		body = '''
-		«body»DCharts chart = new DCharts()
-			.setDataSeries(dataSeries)
-			.setOptions(options)
-			.setEnableDownload(true)
-			.setDownloadButtonCaption(dslMetadataService.translate(locale.toLanguageTag(), "download"))
-			.setDownloadFilename("«chart.name»")
-			.setDownloadButtonLocation(DownloadButtonLocation.TOP_RIGHT);
+		«body»DCharts chart = new DCharts();
+		chart.setDataSeries(dataSeries);
+		chart.setOptions(options);
+		chart.setEnableDownload(true);
+		chart.setDownloadButtonCaption(dslMetadataService.translate(user.getLocale().toLanguageTag(), "download"));
+		chart.setDownloadFilename("«chart.name»");
+		chart.setDownloadButtonLocation(DownloadButtonLocation.TOP_RIGHT);
 		'''
 		body = '''
 		«body»chart.setId("chart");
@@ -1038,8 +1077,8 @@
 		// find multiple axes defined in datamart
 		if ((chart.source as ChartDatamart).datamartRef.source instanceof DatamartCube) {
 			for (axisOrSlicer : ((chart.source as ChartDatamart).datamartRef.source as DatamartCube).axisslicer) {
-				if (axisOrSlicer instanceof DatamartAxis) {
-					for (element : (axisOrSlicer as DatamartAxis).elements) {
+				if (axisOrSlicer instanceof DatamartCubeAxis) {
+					for (element : (axisOrSlicer as DatamartCubeAxis).elements) {
 						if (element instanceof DatamartDerivedMeasure) {
 							if ((element as DatamartDerivedMeasure).scaled) {
 								body = '''«body»«(element as DatamartDerivedMeasure).scale.createScale(data_axis, multipleAxes, msrCnt, axisPrefix, showMarker)»'''
@@ -1078,10 +1117,10 @@
 	def String entityScale(DatamartEntity entity, ChartAxis data_axis, HashMap<String,String> multipleAxes, int msrCnt, String axisPrefix, boolean showMarker) {
 		var counter = msrCnt
 		var body = ""
-		for (property : entity.properties) {
-			if (property instanceof DatamartProperty) {
-				if (property.scaled) {
-					body = '''«body»«property.scale.createScale(data_axis, multipleAxes, counter, axisPrefix, showMarker)»'''
+		for (attribute : entity.attributes) {
+			if (attribute instanceof DatamartAttribute) {
+				if (attribute.scaled) {
+					body = '''«body»«attribute.scale.createScale(data_axis, multipleAxes, counter, axisPrefix, showMarker)»'''
 					counter = counter + 1
 				}
 			}
@@ -1121,11 +1160,11 @@
 	}
 	
 	/**
-	 * <p>helper method to get a property name or its alias if present of a entity's property object.</p> 
+	 * <p>helper method to get a attribute name or its alias if present of a entity's attribute object.</p> 
 	 *
 	 */
-	def String getPropertyName(DatamartProperty property) {
-		return (property.propertyRef as LAttribute).name.toUpperCase 
+	def String getAttributeName(DatamartAttribute attribute) {
+		return (attribute.attributeRef as LAttribute).name.toUpperCase 
 	}
  
 	/**
@@ -1136,37 +1175,56 @@
 		return level.name
 	}
 	
-	def String setup(Chart chart) {
+	def String filterChanged(Chart chart) {
 		var body = ""
 		body = '''
 		«body»
-		subscribe();'''
-		var filterIdMap = <String,String>newHashMap
-		if (chart.source != null && chart.source.datamartRef != null && chart.source.datamartRef.name != null) {
-			datamartInferrer.createFilterMap(chart.source.datamartRef, filterIdMap)
+		if(changedFilter != null) {
+			EventDispatcherEvent evnt = new EventDispatcherEvent(EventDispatcherCommand.SELECT, changedFilter.getName(), "«chart.name»");
+			evnt.addData(changedFilter.getSelectedData());
+			eventDispatcher.sendEvent(evnt);
 		}
-		for (filter : filterIdMap.keySet) {
-			body = '''«body»«filterIdMap.get(filter).setupEvent(filter)»'''
-		}
+		renderData();
+		'''
 		return body
 	}
 	
-	def setupEvent(String eventId, String filter) {
-		'''
-		eventBroker.subscribe("«eventId»",
-		new org.osgi.service.event.EventHandler() {
-			@Override
-			public void handleEvent(org.osgi.service.event.Event event) {
-				final EventBrokerMsg msg = (EventBrokerMsg)event.getProperty(org.eclipse.e4.core.di.extensions.EventUtils.DATA);
-				filterGenerator.selectItem("«filter»", msg.getName());
-			}
-		});
-		'''
+	def Set<LEntity> findRequestedEntities(Chart chart) {
+		var entities = new HashSet<LEntity>()
+		entities.addAll((chart.source as ChartDatamart).datamartRef.findAllEntities())
+		return entities
 	}
 
+	def String receiveEvent(Chart chart) {
+		var body = ""
+		body = '''
+		«body»
+		switch(event.getCommand()) {
+			case SELECT:
+				if(!event.getSender().equals("«chart.fullyQualifiedName»")) {
+					if(filterGenerator.selectItem(event, «chart.selectById.booleanValue»)) {
+						renderData();
+					}
+				}
+				break;
+			case SAVE:
+			case DELETE:
+				if(!event.getSender().equals("«chart.fullyQualifiedName»")) {
+					«FOR e:findRequestedEntities(chart)»
+					if(event.getTopic().equals("«e.fullyQualifiedName»")){
+						datamartInstance.clearCache();
+						renderData();
+					}
+					«ENDFOR»
+				}
+				break;
+		}
+		'''
+		return body
+	}
+	
 	def localeChanged(Chart chart)
 		'''
-		this.locale = locale;
 		if(charts != null) {
 			for(DCharts chart:charts) {
 				chart.setLocale(locale);
@@ -1177,9 +1235,6 @@
 				«ENDIF»
 			}
 		}
-		if(filterGenerator != null) {
-			filterGenerator.setLocale(locale);
-		}
 		if(layoutManager != null) {
 			layoutManager.setLabelValue(dslMetadataService.translate(locale.toLanguageTag(), "«chart.name»"));
 		}
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartModelGenerator.xtend b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartModelGenerator.xtend
index 932eb66..d9b8dab 100644
--- a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartModelGenerator.xtend
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/jvmmodel/ChartModelGenerator.xtend
@@ -23,6 +23,7 @@
 import com.vaadin.ui.HorizontalLayout
 import com.vaadin.ui.JavaScriptFunction
 import com.vaadin.ui.Label
+import com.vaadin.ui.Panel
 import com.vaadin.ui.TabSheet
 import com.vaadin.ui.UI
 import elemental.json.JsonArray
@@ -38,6 +39,7 @@
 import java.util.ResourceBundle
 import java.util.concurrent.Executors
 import javax.inject.Inject
+import mondrian.olap.Member.MemberType
 import org.dussan.vaadin.dcharts.DCharts
 import org.dussan.vaadin.dcharts.DownloadButtonLocation
 import org.dussan.vaadin.dcharts.base.elements.Trendline
@@ -87,8 +89,9 @@
 import org.eclipse.emf.ecore.EObject
 import org.eclipse.emf.ecore.resource.Resource
 import org.eclipse.osbp.eventbroker.EventBrokerMsg
-import org.eclipse.osbp.ui.api.datamart.DerivedOlapException
-import org.eclipse.osbp.utils.constants.ExtendedDate
+import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent
+import org.eclipse.osbp.ui.api.datamart.DatamartFilter
+import org.eclipse.osbp.ui.api.datamart.IDatamartFilterGenerator
 import org.eclipse.osbp.utils.vaadin.ViewLayoutManager
 import org.eclipse.osbp.xtext.basic.generator.BasicDslGeneratorUtils
 import org.eclipse.osbp.xtext.chart.Chart
@@ -174,11 +177,9 @@
 			, Options
 			, DerivedHierarchy
 			, DerivedLevel
-			, DerivedOlapException
 			, IEventBroker
 			, CellSetToD3JsonConverter
 			, Date
-			, ExtendedDate
 			, JavaScriptFunction
 			, JsonArray
 			, JsonObject
@@ -203,6 +204,13 @@
 			, Locale
 			, DatamartFilterGenerator
 			, ViewLayoutManager
+			, IDatamartFilterGenerator.FilterChangeListener
+			, EventDispatcherEvent
+			, EventDispatcherEvent.EventDispatcherDataTag
+			, EventDispatcherEvent.EventDispatcherCommand
+			, DatamartFilter
+			, MemberType
+			, Panel
 			
 		)
 		super.createAppendable(context, importManager, config)
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/scoping/ChartDSLScopeProvider.xtend b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/scoping/ChartDSLScopeProvider.xtend
new file mode 100644
index 0000000..7f9128b
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/scoping/ChartDSLScopeProvider.xtend
@@ -0,0 +1,97 @@
+/**
+ *                                                                            
+ *  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.chart.scoping
+
+import java.util.ArrayList
+import org.eclipse.emf.ecore.EObject
+import org.eclipse.emf.ecore.EReference
+import org.eclipse.osbp.xtext.chart.ChartDSLPackage
+import org.eclipse.osbp.xtext.chart.ChartDatamart
+import org.eclipse.osbp.xtext.datamartdsl.AxisEnum
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCube
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCubeAxis
+import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity
+import org.eclipse.osbp.xtext.datamartdsl.DatamartMember
+import org.eclipse.osbp.xtext.datamartdsl.DatamartOwner
+import org.eclipse.osbp.xtext.datamartdsl.DatamartTask
+import org.eclipse.xtext.resource.EObjectDescription
+import org.eclipse.xtext.resource.IEObjectDescription
+import org.eclipse.xtext.scoping.IScope
+import org.eclipse.xtext.scoping.impl.MapBasedScope
+
+class ChartDSLScopeProvider extends AbstractChartDSLScopeProvider {
+	@Override
+	override IScope getScope(EObject context, EReference reference) {
+		if (reference == ChartDSLPackage.Literals.CHART_AXIS__AXIS) {
+			return getScope_Chart_Axis_axis(context)
+		}
+		return super.getScope(context, reference)
+	}
+
+	def IScope getScope_Chart_Axis_axis(EObject object) {
+		var result = <IEObjectDescription>newArrayList
+		var eObj = object
+		while (!(eObj instanceof ChartDatamart)) {
+			eObj = eObj.eContainer
+		}
+		if (eObj !== null) {
+			var datamart = (eObj as ChartDatamart).datamartRef
+			if (datamart !== null && datamart.source !== null) {
+				if (datamart.source instanceof DatamartCube) {
+					for (axis : (datamart.source as DatamartCube).axisslicer) {
+						if (axis instanceof DatamartCubeAxis) {
+							var literal = (axis as DatamartCubeAxis).axis.name.literal
+							result.add(EObjectDescription.create(literal, (axis as DatamartCubeAxis).axis))
+						}
+					}
+				} else if (datamart.source instanceof DatamartEntity) {
+					getEntityAxes(datamart.source as DatamartEntity, result)
+				} else if (datamart.source instanceof DatamartTask) {
+					result.add(EObjectDescription.create(AxisEnum.COLUMNS.literal, (datamart.source as DatamartTask)))
+					result.add(EObjectDescription.create(AxisEnum.ROWS.literal, (datamart.source as DatamartTask)))
+				}
+			}
+		}
+		return MapBasedScope.createScope(IScope.NULLSCOPE, result)
+	}
+
+	def void getEntityAxes(DatamartEntity entity, ArrayList<IEObjectDescription> result) {
+		for (navigation : entity.navigations) {
+			if (navigation instanceof DatamartMember) {
+				(navigation as DatamartMember).datamartEntity.getEntityAxes(result)
+				for (attribute : (navigation as DatamartMember).datamartEntity.attributes) {
+					result.add(EObjectDescription.create(attribute.axis.name.literal, attribute.axis))
+				}
+			}
+			if (navigation instanceof DatamartOwner) {
+				(navigation as DatamartOwner).datamartEntity.getEntityAxes(result)
+				for (attribute : (navigation as DatamartOwner).datamartEntity.attributes) {
+					result.add(EObjectDescription.create(attribute.axis.name.literal, attribute.axis))
+				}
+			}
+		}
+		for (attribute : entity.attributes) {
+			if (attribute.axis !== null) {
+				result.add(EObjectDescription.create(attribute.axis.name.literal, attribute.axis))
+			} else {
+				result.add(EObjectDescription.create(attribute.axis.name.literal, attribute.axis))
+			}
+		}
+	}
+
+}
diff --git a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/valueconverter/ChartQualifiedNameProvider.java b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/valueconverter/ChartQualifiedNameProvider.java
index 446c206..c40a209 100644
--- a/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/valueconverter/ChartQualifiedNameProvider.java
+++ b/org.eclipse.osbp.xtext.chart/src/org/eclipse/osbp/xtext/chart/valueconverter/ChartQualifiedNameProvider.java
@@ -38,22 +38,7 @@
 		if (obj == null) {
 			return QualifiedName.create("");
 		}
-		if (obj instanceof Chart) {
-			Chart chart = (Chart) obj;
-            if (chart.getName() == null) {
-            	return null;
-            }
-            return qualifiedNameConverter.toQualifiedName(chart.getName());
-		}
 		return super.getFullyQualifiedName(obj);
 	}
 
-	// this method evaluates the cross referenced name of an object without causing cyclic lazy linking errors
-	private String getCrossReferenceName(EObject obj, EStructuralFeature feature) {
-		List<INode> nodes = NodeModelUtils.findNodesForFeature(obj, feature);
-		if (nodes.size() == 0) {
-			return null;
-		}
-		return NodeModelUtils.getTokenText(nodes.get(0));
-	}
 }
diff --git a/org.eclipse.osbp.xtext.chart/xtend-gen/.gitignore b/org.eclipse.osbp.xtext.chart/xtend-gen/.gitignore
new file mode 100644
index 0000000..6cee46e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/xtend-gen/.gitignore
@@ -0,0 +1,8 @@
+/.ChartDSLD3JavaComponentsCreator.xtendbin
+/.ChartDSLFormatter.xtendbin
+/.ChartDSLJvmModelInferrer.xtendbin
+/.ChartDSLScopeProvider.xtendbin
+/.ChartDSLValidator.xtendbin
+/.ChartModelGenerator.xtendbin
+/.ChartScopeProvider.xtendbin
+/.D3JsJavaUtil.xtendbin
diff --git a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/formatting/.gitignore b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/formatting/.gitignore
new file mode 100644
index 0000000..788e28e
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/formatting/.gitignore
@@ -0,0 +1 @@
+/ChartDSLFormatter.java
diff --git a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/formatting/ChartDSLFormatter.java b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/formatting/ChartDSLFormatter.java
index 4effda1..340019e 100644
--- a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/formatting/ChartDSLFormatter.java
+++ b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/formatting/ChartDSLFormatter.java
@@ -15,11 +15,10 @@
 package org.eclipse.osbp.xtext.chart.formatting;
 
 import com.google.inject.Inject;
-import org.eclipse.osbp.utils.xtext.GenericFormatter;
-import org.eclipse.xtext.Grammar;
+import org.eclipse.osbp.xtext.oxtype.formatting.GenericFormatter;
+import org.eclipse.osbp.xtext.oxtype.services.OXtypeGrammarAccess;
 import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter;
 import org.eclipse.xtext.formatting.impl.FormattingConfig;
-import org.eclipse.xtext.xbase.services.XtypeGrammarAccess;
 
 /**
  * This class contains custom formatting description.
@@ -32,12 +31,12 @@
 @SuppressWarnings("all")
 public class ChartDSLFormatter 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, "Chart", "ChartImport");
+    genericFormatter.formatFirstLevelBlocks(c, this.grammar.getGrammar(), "Chart");
     genericFormatter.genericFormatting(c, this.grammar, this.grammarAccess);
   }
 }
diff --git a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/.gitignore b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/.gitignore
new file mode 100644
index 0000000..4f1eab4
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/.gitignore
@@ -0,0 +1,4 @@
+/ChartDSLD3JavaComponentsCreator.java
+/ChartDSLJvmModelInferrer.java
+/ChartModelGenerator.java
+/D3JsJavaUtil.java
diff --git a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLD3JavaComponentsCreator.java b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLD3JavaComponentsCreator.java
index 964142c..a9c09bf 100644
--- a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLD3JavaComponentsCreator.java
+++ b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLD3JavaComponentsCreator.java
@@ -21,7 +21,6 @@
 import java.util.List;
 import javax.inject.Inject;
 import org.eclipse.emf.common.util.EList;
-import org.eclipse.osbp.utils.constants.GeneratorConstants;
 import org.eclipse.osbp.xtext.chart.Chart;
 import org.eclipse.osbp.xtext.chart.ChartOption;
 import org.eclipse.osbp.xtext.chart.ChartTree;
@@ -62,80 +61,64 @@
   
   public void createJsJavaComponent(final Chart chart, final IJvmDeclaredTypeAcceptor acceptor) {
     final String stateClassName = this._d3JsJavaUtil.createStateFilename(chart);
-    String _createfullyQualifiedChartFilename = this._d3JsJavaUtil.createfullyQualifiedChartFilename(chart);
-    JvmGenericType chart_cls = this._jvmTypesBuilder.toClass(chart, _createfullyQualifiedChartFilename);
-    this._jvmTypesBuilder.setDocumentation(chart_cls, GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION);
-    String _createfullyQualifiedStateFilename = this._d3JsJavaUtil.createfullyQualifiedStateFilename(chart);
-    JvmGenericType state_cls = this._jvmTypesBuilder.toClass(chart, _createfullyQualifiedStateFilename);
-    this._jvmTypesBuilder.setDocumentation(state_cls, GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION);
+    JvmGenericType chart_cls = this._jvmTypesBuilder.toClass(chart, this._d3JsJavaUtil.createfullyQualifiedChartFilename(chart));
+    JvmGenericType state_cls = this._jvmTypesBuilder.toClass(chart, this._d3JsJavaUtil.createfullyQualifiedStateFilename(chart));
     ChartOption _charttype = chart.getCharttype();
     if ((_charttype instanceof ChartTree)) {
       ChartOption _charttype_1 = chart.getCharttype();
       final ChartTree chartTree = ((ChartTree) _charttype_1);
-      IJvmDeclaredTypeAcceptor.IPostIndexingInitializing<JvmGenericType> _accept = acceptor.<JvmGenericType>accept(chart_cls);
-      final Procedure1<JvmGenericType> _function = new Procedure1<JvmGenericType>() {
-        public void apply(final JvmGenericType it) {
-          EList<JvmTypeReference> _superTypes = it.getSuperTypes();
-          JvmTypeReference _newTypeRef = ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.newTypeRef(chart, AbstractJavaScriptComponent.class);
-          ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _newTypeRef);
-          JvmAnnotationReference jsAnnotationRef = ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.toAnnotation(chartTree, JavaScript.class);
-          String _createChartJsFilename = ChartDSLD3JavaComponentsCreator.this._d3JsJavaUtil.createChartJsFilename(chart);
-          ArrayList<String> jsAnnotationList = CollectionLiterals.<String>newArrayList("d3.min.js", _createChartJsFilename);
-          ChartDSLD3JavaComponentsCreator.this.addStringValuesToAnnotation(jsAnnotationRef, jsAnnotationList);
-          EList<JvmAnnotationReference> _annotations = it.getAnnotations();
-          ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, jsAnnotationRef);
-          boolean _isMap = chartTree.isMap();
-          if (_isMap) {
-            ChartDSLD3JavaComponentsCreator.this.toTreeMapConstructor(it, chart);
-          } else {
-            boolean _isCollapsible = chartTree.isCollapsible();
-            if (_isCollapsible) {
-              ChartDSLD3JavaComponentsCreator.this.toChartConstructor(it, chart);
-            }
+      final Procedure1<JvmGenericType> _function = (JvmGenericType it) -> {
+        EList<JvmTypeReference> _superTypes = it.getSuperTypes();
+        JvmTypeReference _newTypeRef = this._jvmTypesBuilder.newTypeRef(chart, AbstractJavaScriptComponent.class);
+        this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _newTypeRef);
+        JvmAnnotationReference jsAnnotationRef = this._jvmTypesBuilder.toAnnotation(chartTree, JavaScript.class);
+        ArrayList<String> jsAnnotationList = CollectionLiterals.<String>newArrayList("d3.min.js", this._d3JsJavaUtil.createChartJsFilename(chart));
+        this.addStringValuesToAnnotation(jsAnnotationRef, jsAnnotationList);
+        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+        this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, jsAnnotationRef);
+        boolean _isMap = chartTree.isMap();
+        if (_isMap) {
+          this.toTreeMapConstructor(it, chart);
+        } else {
+          boolean _isCollapsible = chartTree.isCollapsible();
+          if (_isCollapsible) {
+            this.toChartConstructor(it, chart);
           }
-          ChartDSLD3JavaComponentsCreator.this.toChartOperations(it, chart, stateClassName);
         }
+        this.toChartOperations(it, chart, stateClassName);
       };
-      _accept.initializeLater(_function);
-      IJvmDeclaredTypeAcceptor.IPostIndexingInitializing<JvmGenericType> _accept_1 = acceptor.<JvmGenericType>accept(state_cls);
-      final Procedure1<JvmGenericType> _function_1 = new Procedure1<JvmGenericType>() {
-        public void apply(final JvmGenericType it) {
-          EList<JvmTypeReference> _superTypes = it.getSuperTypes();
-          JvmTypeReference _newTypeRef = ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.newTypeRef(chart, JavaScriptComponentState.class);
-          ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _newTypeRef);
-          boolean _isMap = chartTree.isMap();
-          if (_isMap) {
-            ChartDSLD3JavaComponentsCreator.this.toTreeMapStateFields(it, chart);
-          } else {
-            boolean _isCollapsible = chartTree.isCollapsible();
-            if (_isCollapsible) {
-              ChartDSLD3JavaComponentsCreator.this.toChartStateFields(it, chart);
-            }
+      acceptor.<JvmGenericType>accept(chart_cls).initializeLater(_function);
+      final Procedure1<JvmGenericType> _function_1 = (JvmGenericType it) -> {
+        EList<JvmTypeReference> _superTypes = it.getSuperTypes();
+        JvmTypeReference _newTypeRef = this._jvmTypesBuilder.newTypeRef(chart, JavaScriptComponentState.class);
+        this._jvmTypesBuilder.<JvmTypeReference>operator_add(_superTypes, _newTypeRef);
+        boolean _isMap = chartTree.isMap();
+        if (_isMap) {
+          this.toTreeMapStateFields(it, chart);
+        } else {
+          boolean _isCollapsible = chartTree.isCollapsible();
+          if (_isCollapsible) {
+            this.toChartStateFields(it, chart);
           }
         }
       };
-      _accept_1.initializeLater(_function_1);
+      acceptor.<JvmGenericType>accept(state_cls).initializeLater(_function_1);
     }
   }
   
   public void toChartOperations(final JvmDeclaredType type, final Chart chart, final String stateClassName) {
     EList<JvmMember> _members = type.getMembers();
-    JvmTypeReference _newTypeRef = this._jvmTypesBuilder.newTypeRef(chart, stateClassName);
-    final Procedure1<JvmOperation> _function = new Procedure1<JvmOperation>() {
-      public void apply(final JvmOperation it) {
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            _builder.append("return (");
-            _builder.append(stateClassName, "");
-            _builder.append(") super.getState();");
-            it.append(_builder);
-          }
-        };
-        ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.setBody(it, _function);
-      }
+    final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
+      final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("return (");
+        _builder.append(stateClassName);
+        _builder.append(") super.getState();");
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_1);
     };
-    JvmOperation _method = this._jvmTypesBuilder.toMethod(chart, "getState", _newTypeRef, _function);
+    JvmOperation _method = this._jvmTypesBuilder.toMethod(chart, "getState", this._jvmTypesBuilder.newTypeRef(chart, stateClassName), _function);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
   }
   
@@ -148,24 +131,17 @@
   }
   
   public JvmConstructor getChartConstructor(final JvmDeclaredType type, final Chart chart) {
-    final Procedure1<JvmConstructor> _function = new Procedure1<JvmConstructor>() {
-      public void apply(final JvmConstructor it) {
-        EList<JvmFormalParameter> _parameters = it.getParameters();
-        JvmTypeReference _newTypeRef = ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.newTypeRef(chart, String.class);
-        JvmFormalParameter _parameter = ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.toParameter(chart, "_htmlTagId", _newTypeRef);
-        ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
-        EList<JvmFormalParameter> _parameters_1 = it.getParameters();
-        JvmTypeReference _newTypeRef_1 = ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.newTypeRef(chart, String.class);
-        JvmFormalParameter _parameter_1 = ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.toParameter(chart, "_jsonData", _newTypeRef_1);
-        ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            CharSequence _d3StateVars = ChartDSLD3JavaComponentsCreator.this.getD3StateVars();
-            it.append(_d3StateVars);
-          }
-        };
-        ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.setBody(it, _function);
-      }
+    final Procedure1<JvmConstructor> _function = (JvmConstructor it) -> {
+      EList<JvmFormalParameter> _parameters = it.getParameters();
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(chart, "_htmlTagId", this._jvmTypesBuilder.newTypeRef(chart, String.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+      JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(chart, "_jsonData", this._jvmTypesBuilder.newTypeRef(chart, String.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+      final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
+        it_1.append(this.getD3StateVars());
+      };
+      this._jvmTypesBuilder.setBody(it, _function_1);
     };
     return this._jvmTypesBuilder.toConstructor(chart, _function);
   }
@@ -173,19 +149,15 @@
   public void toTreeMapConstructor(final JvmDeclaredType type, final Chart chart) {
     JvmConstructor constructor = this.getChartConstructor(type, chart);
     EList<JvmFormalParameter> _parameters = constructor.getParameters();
-    JvmTypeReference _newTypeRef = this._jvmTypesBuilder.newTypeRef(chart, String.class);
-    JvmTypeReference _newTypeRef_1 = this._jvmTypesBuilder.newTypeRef(chart, List.class, _newTypeRef);
-    JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(chart, "dataColumns", _newTypeRef_1);
+    JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(chart, "dataColumns", this._jvmTypesBuilder.newTypeRef(chart, List.class, this._jvmTypesBuilder.newTypeRef(chart, String.class)));
     this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
-    final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-      public void apply(final ITreeAppendable it) {
-        StringConcatenation _builder = new StringConcatenation();
-        CharSequence _d3StateVars = ChartDSLD3JavaComponentsCreator.this.getD3StateVars();
-        _builder.append(_d3StateVars, "");
-        _builder.newLineIfNotEmpty();
-        _builder.append("getState().dataColumnList = dataColumns;");
-        it.append(_builder);
-      }
+    final Procedure1<ITreeAppendable> _function = (ITreeAppendable it) -> {
+      StringConcatenation _builder = new StringConcatenation();
+      CharSequence _d3StateVars = this.getD3StateVars();
+      _builder.append(_d3StateVars);
+      _builder.newLineIfNotEmpty();
+      _builder.append("getState().dataColumnList = dataColumns;");
+      it.append(_builder);
     };
     this._jvmTypesBuilder.setBody(constructor, _function);
     EList<JvmMember> _members = type.getMembers();
@@ -211,76 +183,55 @@
   public void toTreeMapStateFields(final JvmDeclaredType type, final Chart chart) {
     this.toChartStateFields(type, chart);
     EList<JvmMember> _members = type.getMembers();
-    JvmTypeReference _newTypeRef = this._jvmTypesBuilder.newTypeRef(chart, String.class);
-    JvmTypeReference _newTypeRef_1 = this._jvmTypesBuilder.newTypeRef(chart, List.class, _newTypeRef);
-    final Procedure1<JvmField> _function = new Procedure1<JvmField>() {
-      public void apply(final JvmField it) {
-        it.setVisibility(JvmVisibility.PUBLIC);
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            _builder.append("new ArrayList<String>()");
-            it.append(_builder);
-          }
-        };
-        ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.setInitializer(it, _function);
-      }
+    final Procedure1<JvmField> _function = (JvmField it) -> {
+      it.setVisibility(JvmVisibility.PUBLIC);
+      final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("new ArrayList<String>()");
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setInitializer(it, _function_1);
     };
-    JvmField _field = this._jvmTypesBuilder.toField(chart, "dataColumnList", _newTypeRef_1, _function);
+    JvmField _field = this._jvmTypesBuilder.toField(chart, "dataColumnList", this._jvmTypesBuilder.newTypeRef(chart, List.class, this._jvmTypesBuilder.newTypeRef(chart, String.class)), _function);
     this._jvmTypesBuilder.<JvmField>operator_add(_members, _field);
   }
   
   public void toChartStateFields(final JvmDeclaredType type, final Chart chart) {
     EList<JvmMember> _members = type.getMembers();
-    JvmTypeReference _newTypeRef = this._jvmTypesBuilder.newTypeRef(chart, String.class);
-    final Procedure1<JvmField> _function = new Procedure1<JvmField>() {
-      public void apply(final JvmField it) {
-        it.setVisibility(JvmVisibility.PUBLIC);
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            _builder.append("\"\"");
-            it.append(_builder);
-          }
-        };
-        ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.setInitializer(it, _function);
-      }
+    final Procedure1<JvmField> _function = (JvmField it) -> {
+      it.setVisibility(JvmVisibility.PUBLIC);
+      final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("\"\"");
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setInitializer(it, _function_1);
     };
-    JvmField _field = this._jvmTypesBuilder.toField(chart, "jsonData", _newTypeRef, _function);
+    JvmField _field = this._jvmTypesBuilder.toField(chart, "jsonData", this._jvmTypesBuilder.newTypeRef(chart, String.class), _function);
     this._jvmTypesBuilder.<JvmField>operator_add(_members, _field);
     EList<JvmMember> _members_1 = type.getMembers();
-    JvmTypeReference _newTypeRef_1 = this._jvmTypesBuilder.newTypeRef(chart, String.class);
-    final Procedure1<JvmField> _function_1 = new Procedure1<JvmField>() {
-      public void apply(final JvmField it) {
-        it.setVisibility(JvmVisibility.PUBLIC);
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            _builder.append("\"\"");
-            it.append(_builder);
-          }
-        };
-        ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.setInitializer(it, _function);
-      }
+    final Procedure1<JvmField> _function_1 = (JvmField it) -> {
+      it.setVisibility(JvmVisibility.PUBLIC);
+      final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("\"\"");
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setInitializer(it, _function_2);
     };
-    JvmField _field_1 = this._jvmTypesBuilder.toField(chart, "htmlTagId", _newTypeRef_1, _function_1);
+    JvmField _field_1 = this._jvmTypesBuilder.toField(chart, "htmlTagId", this._jvmTypesBuilder.newTypeRef(chart, String.class), _function_1);
     this._jvmTypesBuilder.<JvmField>operator_add(_members_1, _field_1);
     EList<JvmMember> _members_2 = type.getMembers();
-    JvmTypeReference _newTypeRef_2 = this._jvmTypesBuilder.newTypeRef(chart, String.class);
-    final Procedure1<JvmField> _function_2 = new Procedure1<JvmField>() {
-      public void apply(final JvmField it) {
-        it.setVisibility(JvmVisibility.PUBLIC);
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            _builder.append("\"\"");
-            it.append(_builder);
-          }
-        };
-        ChartDSLD3JavaComponentsCreator.this._jvmTypesBuilder.setInitializer(it, _function);
-      }
+    final Procedure1<JvmField> _function_2 = (JvmField it) -> {
+      it.setVisibility(JvmVisibility.PUBLIC);
+      final Procedure1<ITreeAppendable> _function_3 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("\"\"");
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setInitializer(it, _function_3);
     };
-    JvmField _field_2 = this._jvmTypesBuilder.toField(chart, "inputValue", _newTypeRef_2, _function_2);
+    JvmField _field_2 = this._jvmTypesBuilder.toField(chart, "inputValue", this._jvmTypesBuilder.newTypeRef(chart, String.class), _function_2);
     this._jvmTypesBuilder.<JvmField>operator_add(_members_2, _field_2);
   }
   
@@ -290,9 +241,9 @@
     _builder.newLine();
     _builder.append("return new ");
     final String d3ChartFileName = this._d3JsJavaUtil.createChartFilename(chart);
-    _builder.append(d3ChartFileName, "");
+    _builder.append(d3ChartFileName);
     _builder.append("(\"");
-    _builder.append(d3ChartFileName, "");
+    _builder.append(d3ChartFileName);
     _builder.append("\", jsonConverter.getD3JsonString(cxCellSet)");
     {
       boolean _isTreeMap = this._d3JsJavaUtil.isTreeMap(chart);
diff --git a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLJvmModelInferrer.java b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLJvmModelInferrer.java
index b918ae4..52b57f7 100644
--- a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLJvmModelInferrer.java
+++ b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartDSLJvmModelInferrer.java
@@ -16,34 +16,37 @@
 
 import com.github.wolfie.refresher.Refresher;
 import com.google.common.base.Objects;
-import com.vaadin.data.Property;
+import com.vaadin.server.ClientConnector;
 import com.vaadin.ui.Component;
 import com.vaadin.ui.VerticalLayout;
 import elemental.json.JsonException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Locale;
 import java.util.Set;
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
 import javax.inject.Inject;
 import org.dussan.vaadin.dcharts.DCharts;
 import org.eclipse.e4.core.contexts.IEclipseContext;
 import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.e4.ui.di.Focus;
 import org.eclipse.e4.ui.model.application.MApplication;
 import org.eclipse.emf.common.util.EList;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.osbp.dsl.semantic.common.types.LAttribute;
+import org.eclipse.osbp.dsl.semantic.entity.LEntity;
 import org.eclipse.osbp.dsl.semantic.entity.LEntityAttribute;
 import org.eclipse.osbp.osgi.hybrid.api.AbstractHybridVaaclipseView;
-import org.eclipse.osbp.ui.api.datamart.DerivedOlapException;
+import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent;
+import org.eclipse.osbp.runtime.common.event.IEventDispatcher;
+import org.eclipse.osbp.ui.api.datamart.DatamartFilter;
 import org.eclipse.osbp.ui.api.datamart.IDatamartFilterGenerator;
+import org.eclipse.osbp.ui.api.e4.IE4Focusable;
 import org.eclipse.osbp.ui.api.layout.IViewLayoutManager;
 import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
+import org.eclipse.osbp.ui.api.themes.EnumCssClass;
 import org.eclipse.osbp.ui.api.user.IUser;
-import org.eclipse.osbp.utils.constants.GeneratorConstants;
-import org.eclipse.osbp.utils.theme.EnumCssClass;
 import org.eclipse.osbp.utils.vaadin.PropertyLookup;
 import org.eclipse.osbp.xtext.chart.Chart;
 import org.eclipse.osbp.xtext.chart.ChartAxis;
@@ -64,18 +67,13 @@
 import org.eclipse.osbp.xtext.chart.ChartRangeElement;
 import org.eclipse.osbp.xtext.chart.ChartSegmentColor;
 import org.eclipse.osbp.xtext.chart.ChartTree;
-import org.eclipse.osbp.xtext.chart.LegendPlacementEnum;
-import org.eclipse.osbp.xtext.chart.RenderTypeEnum;
-import org.eclipse.osbp.xtext.chart.ToggleTypeEnum;
-import org.eclipse.osbp.xtext.chart.TooltipLocationEnum;
 import org.eclipse.osbp.xtext.chart.jvmmodel.ChartDSLD3JavaComponentsCreator;
 import org.eclipse.osbp.xtext.cubedsl.CubeLevel;
 import org.eclipse.osbp.xtext.datamart.common.olap.DerivedCellSet;
-import org.eclipse.osbp.xtext.datamartdsl.AxisEnum;
-import org.eclipse.osbp.xtext.datamartdsl.DatamartAxis;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartAttribute;
 import org.eclipse.osbp.xtext.datamartdsl.DatamartCube;
+import org.eclipse.osbp.xtext.datamartdsl.DatamartCubeAxis;
 import org.eclipse.osbp.xtext.datamartdsl.DatamartCubeElement;
-import org.eclipse.osbp.xtext.datamartdsl.DatamartDefinition;
 import org.eclipse.osbp.xtext.datamartdsl.DatamartDerivedMeasure;
 import org.eclipse.osbp.xtext.datamartdsl.DatamartElement;
 import org.eclipse.osbp.xtext.datamartdsl.DatamartEntity;
@@ -84,7 +82,6 @@
 import org.eclipse.osbp.xtext.datamartdsl.DatamartNavigation;
 import org.eclipse.osbp.xtext.datamartdsl.DatamartOwner;
 import org.eclipse.osbp.xtext.datamartdsl.DatamartPackage;
-import org.eclipse.osbp.xtext.datamartdsl.DatamartProperty;
 import org.eclipse.osbp.xtext.datamartdsl.DatamartSource;
 import org.eclipse.osbp.xtext.datamartdsl.ValueScaleEnum;
 import org.eclipse.osbp.xtext.datamartdsl.jvmmodel.DatamartDSLJvmModelInferrer;
@@ -148,20 +145,19 @@
         String _plus_1 = (_plus + _name);
         String _plus_2 = (_plus_1 + "Chart");
         JvmGenericType cls = this._jvmTypesBuilder.toClass(chart, _plus_2);
-        EList<JvmTypeReference> _superTypes = cls.getSuperTypes();
-        JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(AbstractHybridVaaclipseView.class);
-        _superTypes.add(_typeRef);
-        EList<JvmTypeReference> _superTypes_1 = cls.getSuperTypes();
-        JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(IUser.UserLocaleListener.class);
-        _superTypes_1.add(_typeRef_1);
-        final Procedure1<JvmGenericType> _function = new Procedure1<JvmGenericType>() {
-          public void apply(final JvmGenericType it) {
-            ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setDocumentation(it, GeneratorConstants.GENERATED_CLASSES_DOCUMENTATION);
-            ChartDSLJvmModelInferrer.this.toFields(it, chart);
-            ChartDSLJvmModelInferrer.this.toConstructor(it, chart);
-            ChartDSLJvmModelInferrer.this.toGetterSetter(it, chart);
-            ChartDSLJvmModelInferrer.this.toOperations(it, chart);
-          }
+        cls.getSuperTypes().add(this._typeReferenceBuilder.typeRef(AbstractHybridVaaclipseView.class));
+        cls.getSuperTypes().add(this._typeReferenceBuilder.typeRef(IUser.UserLocaleListener.class));
+        cls.getSuperTypes().add(this._typeReferenceBuilder.typeRef(IDatamartFilterGenerator.FilterChangeListener.class));
+        cls.getSuperTypes().add(this._typeReferenceBuilder.typeRef(IEventDispatcher.Receiver.class));
+        cls.getSuperTypes().add(this._typeReferenceBuilder.typeRef(ClientConnector.DetachListener.class));
+        cls.getSuperTypes().add(this._typeReferenceBuilder.typeRef(ClientConnector.AttachListener.class));
+        cls.getSuperTypes().add(this._typeReferenceBuilder.typeRef(IE4Focusable.class));
+        final Procedure1<JvmGenericType> _function = (JvmGenericType it) -> {
+          this._jvmTypesBuilder.setFileHeader(it, this._jvmTypesBuilder.getDocumentation(pckg));
+          this.toFields(it, chart);
+          this.toConstructor(it, chart);
+          this.toGetterSetter(it, chart);
+          this.toOperations(it, chart);
         };
         acceptor.<JvmGenericType>accept(cls, _function);
         ChartOption _charttype = chart.getCharttype();
@@ -177,32 +173,29 @@
    */
   public void toConstructor(final JvmDeclaredType type, final Chart chart) {
     EList<JvmMember> _members = type.getMembers();
-    final Procedure1<JvmConstructor> _function = new Procedure1<JvmConstructor>() {
-      public void apply(final JvmConstructor it) {
-        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
-        JvmAnnotationReference _annotationRef = ChartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Inject.class);
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
-        EList<JvmFormalParameter> _parameters = it.getParameters();
-        JvmTypeReference _typeRef = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(VerticalLayout.class);
-        JvmFormalParameter _parameter = ChartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(chart, "parent", _typeRef);
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
-        EList<JvmFormalParameter> _parameters_1 = it.getParameters();
-        JvmTypeReference _typeRef_1 = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(IEclipseContext.class);
-        JvmFormalParameter _parameter_1 = ChartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(chart, "context", _typeRef_1);
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
-        EList<JvmFormalParameter> _parameters_2 = it.getParameters();
-        JvmTypeReference _typeRef_2 = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(MApplication.class);
-        JvmFormalParameter _parameter_2 = ChartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(chart, "app", _typeRef_2);
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_2, _parameter_2);
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            _builder.append("super(parent,context,app);");
-            it.append(_builder);
-          }
-        };
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
-      }
+    final Procedure1<JvmConstructor> _function = (JvmConstructor it) -> {
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Inject.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+      EList<JvmFormalParameter> _parameters = it.getParameters();
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(chart, "parent", this._typeReferenceBuilder.typeRef(VerticalLayout.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+      JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(chart, "context", this._typeReferenceBuilder.typeRef(IEclipseContext.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+      EList<JvmFormalParameter> _parameters_2 = it.getParameters();
+      JvmFormalParameter _parameter_2 = this._jvmTypesBuilder.toParameter(chart, "app", this._typeReferenceBuilder.typeRef(MApplication.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_2, _parameter_2);
+      final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("super(parent,context,app);");
+        _builder.newLine();
+        _builder.append("parent.addAttachListener(this);");
+        _builder.newLine();
+        _builder.append("parent.addDetachListener(this);");
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_1);
     };
     JvmConstructor _constructor = this._jvmTypesBuilder.toConstructor(chart, _function);
     this._jvmTypesBuilder.<JvmConstructor>operator_add(_members, _constructor);
@@ -213,160 +206,104 @@
    */
   public void toFields(final JvmDeclaredType type, final Chart chart) {
     JvmField field = null;
-    JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Logger.class);
-    final Procedure1<JvmField> _function = new Procedure1<JvmField>() {
-      public void apply(final JvmField it) {
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            _builder.append("org.slf4j.LoggerFactory.getLogger(\"charts\")");
-            it.append(_builder);
-          }
-        };
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setInitializer(it, _function);
-      }
+    final Procedure1<JvmField> _function = (JvmField it) -> {
+      final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("org.slf4j.LoggerFactory.getLogger(\"charts\")");
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setInitializer(it, _function_1);
     };
-    JvmField _field = this._jvmTypesBuilder.toField(chart, "log", _typeRef, _function);
-    field = _field;
+    field = this._jvmTypesBuilder.toField(chart, "log", this._typeReferenceBuilder.typeRef(Logger.class), _function);
     field.setStatic(true);
     field.setVisibility(JvmVisibility.PRIVATE);
     EList<JvmMember> _members = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members, field);
-    JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(IUser.class);
-    final Procedure1<JvmField> _function_1 = new Procedure1<JvmField>() {
-      public void apply(final JvmField it) {
-        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
-        JvmAnnotationReference _annotationRef = ChartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Inject.class);
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
-      }
+    final Procedure1<JvmField> _function_1 = (JvmField it) -> {
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Inject.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
     };
-    JvmField _field_1 = this._jvmTypesBuilder.toField(chart, "user", _typeRef_1, _function_1);
-    field = _field_1;
+    field = this._jvmTypesBuilder.toField(chart, "user", this._typeReferenceBuilder.typeRef(IUser.class), _function_1);
     EList<JvmMember> _members_1 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_1, field);
-    JvmTypeReference _typeRef_2 = this._typeReferenceBuilder.typeRef(IEclipseContext.class);
-    final Procedure1<JvmField> _function_2 = new Procedure1<JvmField>() {
-      public void apply(final JvmField it) {
-        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
-        JvmAnnotationReference _annotationRef = ChartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Inject.class);
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
-      }
+    final Procedure1<JvmField> _function_2 = (JvmField it) -> {
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Inject.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
     };
-    JvmField _field_2 = this._jvmTypesBuilder.toField(chart, "eclipseContext", _typeRef_2, _function_2);
-    field = _field_2;
+    field = this._jvmTypesBuilder.toField(chart, "eclipseContext", this._typeReferenceBuilder.typeRef(IEclipseContext.class), _function_2);
     EList<JvmMember> _members_2 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_2, field);
-    JvmTypeReference _typeRef_3 = this._typeReferenceBuilder.typeRef(Integer.class);
-    JvmTypeReference _typeRef_4 = this._typeReferenceBuilder.typeRef(ArrayList.class, _typeRef_3);
-    JvmField _field_3 = this._jvmTypesBuilder.toField(chart, "coordinateSystem", _typeRef_4);
-    field = _field_3;
+    field = this._jvmTypesBuilder.toField(chart, "coordinateSystem", this._typeReferenceBuilder.typeRef(ArrayList.class, this._typeReferenceBuilder.typeRef(Integer.class)));
     EList<JvmMember> _members_3 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_3, field);
-    JvmTypeReference _typeRef_5 = this._typeReferenceBuilder.typeRef(IDatamartFilterGenerator.class);
-    JvmField _field_4 = this._jvmTypesBuilder.toField(chart, "filterGenerator", _typeRef_5);
-    field = _field_4;
+    field = this._jvmTypesBuilder.toField(chart, "filterGenerator", this._typeReferenceBuilder.typeRef(IDatamartFilterGenerator.class));
     EList<JvmMember> _members_4 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_4, field);
-    JvmTypeReference _typeRef_6 = this._typeReferenceBuilder.typeRef(IViewLayoutManager.class);
-    JvmField _field_5 = this._jvmTypesBuilder.toField(chart, "layoutManager", _typeRef_6);
-    field = _field_5;
+    field = this._jvmTypesBuilder.toField(chart, "layoutManager", this._typeReferenceBuilder.typeRef(IViewLayoutManager.class));
     EList<JvmMember> _members_5 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_5, field);
     String _sourceDataMartRefName = this.getSourceDataMartRefName(chart);
     boolean _notEquals = (!Objects.equal(_sourceDataMartRefName, null));
     if (_notEquals) {
-      ChartDatamart _source = chart.getSource();
-      DatamartDefinition _datamartRef = _source.getDatamartRef();
-      EObject _eContainer = _datamartRef.eContainer();
-      QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(((DatamartPackage) _eContainer));
-      String packageName = _fullyQualifiedName.toString();
+      EObject _eContainer = chart.getSource().getDatamartRef().eContainer();
+      String packageName = this._iQualifiedNameProvider.getFullyQualifiedName(((DatamartPackage) _eContainer)).toString();
       StringConcatenation _builder = new StringConcatenation();
-      _builder.append(packageName, "");
+      _builder.append(packageName);
       _builder.append(".");
-      ChartDatamart _source_1 = chart.getSource();
-      DatamartDefinition _datamartRef_1 = _source_1.getDatamartRef();
-      String _name = _datamartRef_1.getName();
-      String _string = _name.toString();
-      _builder.append(_string, "");
+      String _string = chart.getSource().getDatamartRef().getName().toString();
+      _builder.append(_string);
       _builder.append("Datamart");
-      JvmTypeReference _typeRef_7 = this._typeReferenceBuilder.typeRef(_builder.toString());
-      JvmField _field_6 = this._jvmTypesBuilder.toField(chart, "datamartClass", _typeRef_7);
-      field = _field_6;
+      field = this._jvmTypesBuilder.toField(chart, "datamartInstance", this._typeReferenceBuilder.typeRef(_builder.toString()));
       EList<JvmMember> _members_6 = type.getMembers();
       this._jvmTypesBuilder.<JvmField>operator_add(_members_6, field);
     }
-    JvmTypeReference _typeRef_8 = this._typeReferenceBuilder.typeRef(Property.ValueChangeListener.class);
-    JvmField _field_7 = this._jvmTypesBuilder.toField(chart, "filterChangeListener", _typeRef_8);
-    field = _field_7;
+    field = this._jvmTypesBuilder.toField(chart, "chartRefresher", this._typeReferenceBuilder.typeRef(Refresher.class));
     EList<JvmMember> _members_7 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_7, field);
-    JvmTypeReference _typeRef_9 = this._typeReferenceBuilder.typeRef(Refresher.class);
-    JvmField _field_8 = this._jvmTypesBuilder.toField(chart, "chartRefresher", _typeRef_9);
-    field = _field_8;
+    field = this._jvmTypesBuilder.toField(chart, "chartRefresherDone", this._typeReferenceBuilder.typeRef(boolean.class));
     EList<JvmMember> _members_8 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_8, field);
-    JvmTypeReference _typeRef_10 = this._typeReferenceBuilder.typeRef(boolean.class);
-    JvmField _field_9 = this._jvmTypesBuilder.toField(chart, "chartRefresherDone", _typeRef_10);
-    field = _field_9;
+    field = this._jvmTypesBuilder.toField(chart, "chartRenderDelay", this._typeReferenceBuilder.typeRef(Refresher.class));
     EList<JvmMember> _members_9 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_9, field);
-    JvmTypeReference _typeRef_11 = this._typeReferenceBuilder.typeRef(Refresher.class);
-    JvmField _field_10 = this._jvmTypesBuilder.toField(chart, "chartRenderDelay", _typeRef_11);
-    field = _field_10;
+    field = this._jvmTypesBuilder.toField(chart, "dataComponent", this._typeReferenceBuilder.typeRef(Component.class));
     EList<JvmMember> _members_10 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_10, field);
-    JvmTypeReference _typeRef_12 = this._typeReferenceBuilder.typeRef(Component.class);
-    JvmField _field_11 = this._jvmTypesBuilder.toField(chart, "dataComponent", _typeRef_12);
-    field = _field_11;
+    field = this._jvmTypesBuilder.toField(chart, "attributeLookupMap", this._typeReferenceBuilder.typeRef(HashMap.class, this._typeReferenceBuilder.typeRef(String.class), this._typeReferenceBuilder.typeRef(PropertyLookup.class)));
     EList<JvmMember> _members_11 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_11, field);
-    JvmTypeReference _typeRef_13 = this._typeReferenceBuilder.typeRef(String.class);
-    JvmTypeReference _typeRef_14 = this._typeReferenceBuilder.typeRef(PropertyLookup.class);
-    JvmTypeReference _typeRef_15 = this._typeReferenceBuilder.typeRef(HashMap.class, _typeRef_13, _typeRef_14);
-    JvmField _field_12 = this._jvmTypesBuilder.toField(chart, "propertyLookupMap", _typeRef_15);
-    field = _field_12;
+    field = this._jvmTypesBuilder.toField(chart, "charts", this._typeReferenceBuilder.typeRef(ArrayList.class, this._typeReferenceBuilder.typeRef(DCharts.class)));
     EList<JvmMember> _members_12 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_12, field);
-    JvmTypeReference _typeRef_16 = this._typeReferenceBuilder.typeRef(DCharts.class);
-    JvmTypeReference _typeRef_17 = this._typeReferenceBuilder.typeRef(ArrayList.class, _typeRef_16);
-    JvmField _field_13 = this._jvmTypesBuilder.toField(chart, "charts", _typeRef_17);
-    field = _field_13;
+    final Procedure1<JvmField> _function_3 = (JvmField it) -> {
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Inject.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+    };
+    field = this._jvmTypesBuilder.toField(chart, "eventBroker", this._typeReferenceBuilder.typeRef(IEventBroker.class), _function_3);
     EList<JvmMember> _members_13 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_13, field);
-    JvmTypeReference _typeRef_18 = this._typeReferenceBuilder.typeRef(IEventBroker.class);
-    final Procedure1<JvmField> _function_3 = new Procedure1<JvmField>() {
-      public void apply(final JvmField it) {
-        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
-        JvmAnnotationReference _annotationRef = ChartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Inject.class);
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
-      }
-    };
-    JvmField _field_14 = this._jvmTypesBuilder.toField(chart, "eventBroker", _typeRef_18, _function_3);
-    field = _field_14;
+    field = this._jvmTypesBuilder.toField(chart, "refreshView", this._typeReferenceBuilder.typeRef(EventHandler.class));
     EList<JvmMember> _members_14 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_14, field);
-    JvmTypeReference _typeRef_19 = this._typeReferenceBuilder.typeRef(EventHandler.class);
-    JvmField _field_15 = this._jvmTypesBuilder.toField(chart, "refreshView", _typeRef_19);
-    field = _field_15;
+    final Procedure1<JvmField> _function_4 = (JvmField it) -> {
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Inject.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+    };
+    field = this._jvmTypesBuilder.toField(chart, "dslMetadataService", this._typeReferenceBuilder.typeRef(IDSLMetadataService.class), _function_4);
     EList<JvmMember> _members_15 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_15, field);
-    JvmTypeReference _typeRef_20 = this._typeReferenceBuilder.typeRef(IDSLMetadataService.class);
-    final Procedure1<JvmField> _function_4 = new Procedure1<JvmField>() {
-      public void apply(final JvmField it) {
-        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
-        JvmAnnotationReference _annotationRef = ChartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Inject.class);
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
-      }
+    final Procedure1<JvmField> _function_5 = (JvmField it) -> {
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Inject.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
     };
-    JvmField _field_16 = this._jvmTypesBuilder.toField(chart, "dslMetadataService", _typeRef_20, _function_4);
-    field = _field_16;
+    field = this._jvmTypesBuilder.toField(chart, "eventDispatcher", this._typeReferenceBuilder.typeRef(IEventDispatcher.class), _function_5);
     EList<JvmMember> _members_16 = type.getMembers();
     this._jvmTypesBuilder.<JvmField>operator_add(_members_16, field);
-    JvmTypeReference _typeRef_21 = this._typeReferenceBuilder.typeRef(Locale.class);
-    JvmField _field_17 = this._jvmTypesBuilder.toField(chart, "locale", _typeRef_21);
-    field = _field_17;
-    EList<JvmMember> _members_17 = type.getMembers();
-    this._jvmTypesBuilder.<JvmField>operator_add(_members_17, field);
   }
   
   /**
@@ -374,10 +311,7 @@
    */
   public void toGetterSetter(final JvmDeclaredType type, final Chart chart) {
     JvmOperation operation = null;
-    JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Integer.class);
-    JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(ArrayList.class, _typeRef);
-    JvmOperation _getter = this._jvmTypesBuilder.toGetter(chart, "coordinateSystem", _typeRef_1);
-    operation = _getter;
+    operation = this._jvmTypesBuilder.toGetter(chart, "coordinateSystem", this._typeReferenceBuilder.typeRef(ArrayList.class, this._typeReferenceBuilder.typeRef(Integer.class)));
     operation.setVisibility(JvmVisibility.PUBLIC);
     EList<JvmMember> _members = type.getMembers();
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members, operation);
@@ -388,257 +322,221 @@
    */
   public void toOperations(final JvmDeclaredType type, final Chart chart) {
     EList<JvmMember> _members = type.getMembers();
-    JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(Void.TYPE);
-    final Procedure1<JvmOperation> _function = new Procedure1<JvmOperation>() {
-      public void apply(final JvmOperation it) {
-        EList<JvmFormalParameter> _parameters = it.getParameters();
-        JvmTypeReference _typeRef = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(VerticalLayout.class);
-        JvmFormalParameter _parameter = ChartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(chart, "parent", _typeRef);
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            String _createView = ChartDSLJvmModelInferrer.this.createView(chart);
-            _builder.append(_createView, "");
-            it.append(_builder);
-          }
-        };
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
-      }
+    final Procedure1<JvmOperation> _function = (JvmOperation it) -> {
+      EList<JvmFormalParameter> _parameters = it.getParameters();
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(chart, "event", this._typeReferenceBuilder.typeRef(ClientConnector.AttachEvent.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Override.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+      final Procedure1<ITreeAppendable> _function_1 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("user.addUserLocaleListener(this);");
+        _builder.newLine();
+        _builder.append("filterGenerator.addFilterChangeListener(this);");
+        _builder.newLine();
+        _builder.append("eventDispatcher.addEventReceiver(this);");
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_1);
     };
-    JvmOperation _method = this._jvmTypesBuilder.toMethod(chart, "createView", _typeRef, _function);
+    JvmOperation _method = this._jvmTypesBuilder.toMethod(chart, "attach", this._typeReferenceBuilder.typeRef(Void.TYPE), _function);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members, _method);
     EList<JvmMember> _members_1 = type.getMembers();
-    JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(Void.TYPE);
-    final Procedure1<JvmOperation> _function_1 = new Procedure1<JvmOperation>() {
-      public void apply(final JvmOperation it) {
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            String _createComponents = ChartDSLJvmModelInferrer.this.createComponents(chart);
-            _builder.append(_createComponents, "");
-            it.append(_builder);
-          }
-        };
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
-      }
+    final Procedure1<JvmOperation> _function_1 = (JvmOperation it) -> {
+      EList<JvmFormalParameter> _parameters = it.getParameters();
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(chart, "event", this._typeReferenceBuilder.typeRef(ClientConnector.DetachEvent.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Override.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+      final Procedure1<ITreeAppendable> _function_2 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("user.removeUserLocaleListener(this);");
+        _builder.newLine();
+        _builder.append("filterGenerator.removeFilterChangeListener(this);");
+        _builder.newLine();
+        _builder.append("eventDispatcher.removeEventReceiver(this);");
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_2);
     };
-    JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(chart, "createComponents", _typeRef_1, _function_1);
+    JvmOperation _method_1 = this._jvmTypesBuilder.toMethod(chart, "detach", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_1);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_1, _method_1);
     EList<JvmMember> _members_2 = type.getMembers();
-    JvmTypeReference _typeRef_2 = this._typeReferenceBuilder.typeRef(Component.class);
-    final Procedure1<JvmOperation> _function_2 = new Procedure1<JvmOperation>() {
-      public void apply(final JvmOperation it) {
-        EList<JvmTypeReference> _exceptions = it.getExceptions();
-        JvmTypeReference _typeRef = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(DerivedOlapException.class);
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
-        EList<JvmFormalParameter> _parameters = it.getParameters();
-        JvmTypeReference _typeRef_1 = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(DerivedCellSet.class);
-        JvmFormalParameter _parameter = ChartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(chart, "cellSet", _typeRef_1);
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
-        EList<JvmFormalParameter> _parameters_1 = it.getParameters();
-        JvmTypeReference _typeRef_2 = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Integer.class);
-        JvmFormalParameter _parameter_1 = ChartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(chart, "axisNo", _typeRef_2);
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            String _createTabSheet = ChartDSLJvmModelInferrer.this.createTabSheet(chart);
-            _builder.append(_createTabSheet, "");
-            it.append(_builder);
-          }
-        };
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
-      }
-    };
-    JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(chart, "createTabSheet", _typeRef_2, _function_2);
-    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _method_2);
-    ChartOption _charttype = chart.getCharttype();
-    if ((!(_charttype instanceof ChartTree))) {
-      EList<JvmMember> _members_3 = type.getMembers();
-      JvmTypeReference _typeRef_3 = this._typeReferenceBuilder.typeRef(Component.class);
-      final Procedure1<JvmOperation> _function_3 = new Procedure1<JvmOperation>() {
-        public void apply(final JvmOperation it) {
-          EList<JvmTypeReference> _exceptions = it.getExceptions();
-          JvmTypeReference _typeRef = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(DerivedOlapException.class);
-          ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
-          EList<JvmFormalParameter> _parameters = it.getParameters();
-          JvmTypeReference _typeRef_1 = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(DerivedCellSet.class);
-          JvmFormalParameter _parameter = ChartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(chart, "cellSet", _typeRef_1);
-          ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
-          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-            public void apply(final ITreeAppendable it) {
-              StringConcatenation _builder = new StringConcatenation();
-              String _createChart = ChartDSLJvmModelInferrer.this.createChart(chart);
-              _builder.append(_createChart, "");
-              it.append(_builder);
-            }
-          };
-          ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
-        }
+    final Procedure1<JvmOperation> _function_2 = (JvmOperation it) -> {
+      EList<JvmFormalParameter> _parameters = it.getParameters();
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(chart, "parent", this._typeReferenceBuilder.typeRef(VerticalLayout.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      final Procedure1<ITreeAppendable> _function_3 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        String _createView = this.createView(chart);
+        _builder.append(_createView);
+        it_1.append(_builder);
       };
-      JvmOperation _method_3 = this._jvmTypesBuilder.toMethod(chart, "createChart", _typeRef_3, _function_3);
-      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, _method_3);
+      this._jvmTypesBuilder.setBody(it, _function_3);
+    };
+    JvmOperation _method_2 = this._jvmTypesBuilder.toMethod(chart, "createView", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_2);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_2, _method_2);
+    EList<JvmMember> _members_3 = type.getMembers();
+    final Procedure1<JvmOperation> _function_3 = (JvmOperation it) -> {
+      final Procedure1<ITreeAppendable> _function_4 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        String _createComponents = this.createComponents(chart);
+        _builder.append(_createComponents);
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_4);
+    };
+    JvmOperation _method_3 = this._jvmTypesBuilder.toMethod(chart, "createComponents", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_3);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_3, _method_3);
+    EList<JvmMember> _members_4 = type.getMembers();
+    final Procedure1<JvmOperation> _function_4 = (JvmOperation it) -> {
+      EList<JvmFormalParameter> _parameters = it.getParameters();
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(chart, "cellSet", this._typeReferenceBuilder.typeRef(DerivedCellSet.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      EList<JvmFormalParameter> _parameters_1 = it.getParameters();
+      JvmFormalParameter _parameter_1 = this._jvmTypesBuilder.toParameter(chart, "axisNo", this._typeReferenceBuilder.typeRef(Integer.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters_1, _parameter_1);
+      final Procedure1<ITreeAppendable> _function_5 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        String _createTabSheet = this.createTabSheet(chart);
+        _builder.append(_createTabSheet);
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_5);
+    };
+    JvmOperation _method_4 = this._jvmTypesBuilder.toMethod(chart, "createTabSheet", this._typeReferenceBuilder.typeRef(Component.class), _function_4);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, _method_4);
+    ChartOption _charttype = chart.getCharttype();
+    boolean _not = (!(_charttype instanceof ChartTree));
+    if (_not) {
+      EList<JvmMember> _members_5 = type.getMembers();
+      final Procedure1<JvmOperation> _function_5 = (JvmOperation it) -> {
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(chart, "cellSet", this._typeReferenceBuilder.typeRef(DerivedCellSet.class));
+        this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        final Procedure1<ITreeAppendable> _function_6 = (ITreeAppendable it_1) -> {
+          StringConcatenation _builder = new StringConcatenation();
+          String _createChart = this.createChart(chart);
+          _builder.append(_createChart);
+          it_1.append(_builder);
+        };
+        this._jvmTypesBuilder.setBody(it, _function_6);
+      };
+      JvmOperation _method_5 = this._jvmTypesBuilder.toMethod(chart, "createChart", this._typeReferenceBuilder.typeRef(Component.class), _function_5);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_5, _method_5);
     }
     ChartOption _charttype_1 = chart.getCharttype();
     if ((_charttype_1 instanceof ChartTree)) {
-      EList<JvmMember> _members_4 = type.getMembers();
-      JvmTypeReference _typeRef_4 = this._typeReferenceBuilder.typeRef(Component.class);
-      final Procedure1<JvmOperation> _function_4 = new Procedure1<JvmOperation>() {
-        public void apply(final JvmOperation it) {
-          EList<JvmTypeReference> _exceptions = it.getExceptions();
-          JvmTypeReference _typeRef = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(DerivedOlapException.class);
-          ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
-          EList<JvmTypeReference> _exceptions_1 = it.getExceptions();
-          JvmTypeReference _typeRef_1 = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(JsonException.class);
-          ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions_1, _typeRef_1);
-          EList<JvmFormalParameter> _parameters = it.getParameters();
-          JvmTypeReference _typeRef_2 = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(DerivedCellSet.class);
-          JvmFormalParameter _parameter = ChartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(chart, "cxCellSet", _typeRef_2);
-          ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
-          final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-            public void apply(final ITreeAppendable it) {
-              StringConcatenation _builder = new StringConcatenation();
-              CharSequence _createD3Chart = ChartDSLJvmModelInferrer.this._chartDSLD3JavaComponentsCreator.createD3Chart(chart);
-              _builder.append(_createD3Chart, "");
-              it.append(_builder);
-            }
-          };
-          ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
-        }
+      EList<JvmMember> _members_6 = type.getMembers();
+      final Procedure1<JvmOperation> _function_6 = (JvmOperation it) -> {
+        EList<JvmTypeReference> _exceptions = it.getExceptions();
+        JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(JsonException.class);
+        this._jvmTypesBuilder.<JvmTypeReference>operator_add(_exceptions, _typeRef);
+        EList<JvmFormalParameter> _parameters = it.getParameters();
+        JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(chart, "cxCellSet", this._typeReferenceBuilder.typeRef(DerivedCellSet.class));
+        this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+        final Procedure1<ITreeAppendable> _function_7 = (ITreeAppendable it_1) -> {
+          StringConcatenation _builder = new StringConcatenation();
+          CharSequence _createD3Chart = this._chartDSLD3JavaComponentsCreator.createD3Chart(chart);
+          _builder.append(_createD3Chart);
+          it_1.append(_builder);
+        };
+        this._jvmTypesBuilder.setBody(it, _function_7);
       };
-      JvmOperation _method_4 = this._jvmTypesBuilder.toMethod(chart, "createD3Chart", _typeRef_4, _function_4);
-      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_4, _method_4);
+      JvmOperation _method_6 = this._jvmTypesBuilder.toMethod(chart, "createD3Chart", this._typeReferenceBuilder.typeRef(Component.class), _function_6);
+      this._jvmTypesBuilder.<JvmOperation>operator_add(_members_6, _method_6);
     }
-    EList<JvmMember> _members_5 = type.getMembers();
-    JvmTypeReference _typeRef_5 = this._typeReferenceBuilder.typeRef(Void.TYPE);
-    final Procedure1<JvmOperation> _function_5 = new Procedure1<JvmOperation>() {
-      public void apply(final JvmOperation it) {
-        it.setVisibility(JvmVisibility.PROTECTED);
-        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
-        JvmAnnotationReference _annotationRef = ChartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(PostConstruct.class);
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            String _setup = ChartDSLJvmModelInferrer.this.setup(chart);
-            _builder.append(_setup, "");
-            it.append(_builder);
-          }
-        };
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
-      }
-    };
-    JvmOperation _method_5 = this._jvmTypesBuilder.toMethod(chart, "setup", _typeRef_5, _function_5);
-    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_5, _method_5);
-    EList<JvmMember> _members_6 = type.getMembers();
-    JvmTypeReference _typeRef_6 = this._typeReferenceBuilder.typeRef(Void.TYPE);
-    final Procedure1<JvmOperation> _function_6 = new Procedure1<JvmOperation>() {
-      public void apply(final JvmOperation it) {
-        it.setVisibility(JvmVisibility.PROTECTED);
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            CharSequence _subscribe = ChartDSLJvmModelInferrer.this.subscribe(chart);
-            _builder.append(_subscribe, "");
-            it.append(_builder);
-          }
-        };
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
-      }
-    };
-    JvmOperation _method_6 = this._jvmTypesBuilder.toMethod(chart, "subscribe", _typeRef_6, _function_6);
-    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_6, _method_6);
     EList<JvmMember> _members_7 = type.getMembers();
-    JvmTypeReference _typeRef_7 = this._typeReferenceBuilder.typeRef(Void.TYPE);
-    final Procedure1<JvmOperation> _function_7 = new Procedure1<JvmOperation>() {
-      public void apply(final JvmOperation it) {
-        it.setVisibility(JvmVisibility.PROTECTED);
-        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
-        JvmAnnotationReference _annotationRef = ChartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(PreDestroy.class);
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            CharSequence _unsubscribe = ChartDSLJvmModelInferrer.this.unsubscribe(chart);
-            _builder.append(_unsubscribe, "");
-            it.append(_builder);
-          }
-        };
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
-      }
+    final Procedure1<JvmOperation> _function_7 = (JvmOperation it) -> {
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Focus.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+      final Procedure1<ITreeAppendable> _function_8 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("Component parent = getParent();");
+        _builder.newLine();
+        _builder.append("while(!(parent instanceof Panel) && parent != null) {");
+        _builder.newLine();
+        _builder.append("\t");
+        _builder.append("parent = parent.getParent();");
+        _builder.newLine();
+        _builder.append("}");
+        _builder.newLine();
+        _builder.append("if(parent != null) {");
+        _builder.newLine();
+        _builder.append("\t");
+        _builder.append("((Panel)parent).focus();");
+        _builder.newLine();
+        _builder.append("}");
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_8);
     };
-    JvmOperation _method_7 = this._jvmTypesBuilder.toMethod(chart, "unsubscribe", _typeRef_7, _function_7);
+    JvmOperation _method_7 = this._jvmTypesBuilder.toMethod(chart, "setFocus", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_7);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_7, _method_7);
     EList<JvmMember> _members_8 = type.getMembers();
-    JvmTypeReference _typeRef_8 = this._typeReferenceBuilder.typeRef(Void.TYPE);
-    final Procedure1<JvmOperation> _function_8 = new Procedure1<JvmOperation>() {
-      public void apply(final JvmOperation it) {
-        it.setVisibility(JvmVisibility.PUBLIC);
-        EList<JvmAnnotationReference> _annotations = it.getAnnotations();
-        JvmAnnotationReference _annotationRef = ChartDSLJvmModelInferrer.this._annotationTypesBuilder.annotationRef(Override.class);
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
-        EList<JvmFormalParameter> _parameters = it.getParameters();
-        JvmTypeReference _typeRef = ChartDSLJvmModelInferrer.this._typeReferenceBuilder.typeRef(Locale.class);
-        JvmFormalParameter _parameter = ChartDSLJvmModelInferrer.this._jvmTypesBuilder.toParameter(chart, "locale", _typeRef);
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
-        final Procedure1<ITreeAppendable> _function = new Procedure1<ITreeAppendable>() {
-          public void apply(final ITreeAppendable it) {
-            StringConcatenation _builder = new StringConcatenation();
-            CharSequence _localeChanged = ChartDSLJvmModelInferrer.this.localeChanged(chart);
-            _builder.append(_localeChanged, "");
-            it.append(_builder);
-          }
-        };
-        ChartDSLJvmModelInferrer.this._jvmTypesBuilder.setBody(it, _function);
-      }
+    final Procedure1<JvmOperation> _function_8 = (JvmOperation it) -> {
+      it.setVisibility(JvmVisibility.PUBLIC);
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Override.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+      EList<JvmFormalParameter> _parameters = it.getParameters();
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(chart, "locale", this._typeReferenceBuilder.typeRef(Locale.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      final Procedure1<ITreeAppendable> _function_9 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        CharSequence _localeChanged = this.localeChanged(chart);
+        _builder.append(_localeChanged);
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_9);
     };
-    JvmOperation _method_8 = this._jvmTypesBuilder.toMethod(chart, "localeChanged", _typeRef_8, _function_8);
+    JvmOperation _method_8 = this._jvmTypesBuilder.toMethod(chart, "localeChanged", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_8);
     this._jvmTypesBuilder.<JvmOperation>operator_add(_members_8, _method_8);
-  }
-  
-  public CharSequence subscribe(final Chart chart) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("eventBroker.subscribe(EventBrokerMsg.REFRESH_VIEW+\"");
-    String _name = chart.getName();
-    _builder.append(_name, "");
-    _builder.append("Chart\", refreshView);");
-    return _builder;
-  }
-  
-  public CharSequence unsubscribe(final Chart chart) {
-    StringConcatenation _builder = new StringConcatenation();
-    _builder.append("eventBroker.unsubscribe(refreshView);");
-    return _builder;
+    EList<JvmMember> _members_9 = type.getMembers();
+    final Procedure1<JvmOperation> _function_9 = (JvmOperation it) -> {
+      EList<JvmFormalParameter> _parameters = it.getParameters();
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(chart, "changedFilter", this._typeReferenceBuilder.typeRef(DatamartFilter.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      it.setVisibility(JvmVisibility.PUBLIC);
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Override.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+      final Procedure1<ITreeAppendable> _function_10 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        _builder.append("renderData();");
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_10);
+    };
+    JvmOperation _method_9 = this._jvmTypesBuilder.toMethod(chart, "filterChanged", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_9);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_9, _method_9);
+    EList<JvmMember> _members_10 = type.getMembers();
+    final Procedure1<JvmOperation> _function_10 = (JvmOperation it) -> {
+      it.setVisibility(JvmVisibility.PUBLIC);
+      EList<JvmAnnotationReference> _annotations = it.getAnnotations();
+      JvmAnnotationReference _annotationRef = this._annotationTypesBuilder.annotationRef(Override.class);
+      this._jvmTypesBuilder.<JvmAnnotationReference>operator_add(_annotations, _annotationRef);
+      EList<JvmFormalParameter> _parameters = it.getParameters();
+      JvmFormalParameter _parameter = this._jvmTypesBuilder.toParameter(chart, "event", this._typeReferenceBuilder.typeRef(EventDispatcherEvent.class));
+      this._jvmTypesBuilder.<JvmFormalParameter>operator_add(_parameters, _parameter);
+      final Procedure1<ITreeAppendable> _function_11 = (ITreeAppendable it_1) -> {
+        StringConcatenation _builder = new StringConcatenation();
+        String _receiveEvent = this.receiveEvent(chart);
+        _builder.append(_receiveEvent);
+        it_1.append(_builder);
+      };
+      this._jvmTypesBuilder.setBody(it, _function_11);
+    };
+    JvmOperation _method_10 = this._jvmTypesBuilder.toMethod(chart, "receiveEvent", this._typeReferenceBuilder.typeRef(Void.TYPE), _function_10);
+    this._jvmTypesBuilder.<JvmOperation>operator_add(_members_10, _method_10);
   }
   
   public String getSourceDataMartRefName(final Chart chart) {
-    boolean _and = false;
-    boolean _and_1 = false;
-    ChartDatamart _source = chart.getSource();
-    boolean _notEquals = (!Objects.equal(_source, null));
-    if (!_notEquals) {
-      _and_1 = false;
-    } else {
-      ChartDatamart _source_1 = chart.getSource();
-      DatamartDefinition _datamartRef = _source_1.getDatamartRef();
-      boolean _notEquals_1 = (!Objects.equal(_datamartRef, null));
-      _and_1 = _notEquals_1;
-    }
-    if (!_and_1) {
-      _and = false;
-    } else {
-      ChartDatamart _source_2 = chart.getSource();
-      DatamartDefinition _datamartRef_1 = _source_2.getDatamartRef();
-      String _name = _datamartRef_1.getName();
-      boolean _notEquals_2 = (!Objects.equal(_name, null));
-      _and = _notEquals_2;
-    }
-    if (_and) {
-      ChartDatamart _source_3 = chart.getSource();
-      DatamartDefinition _datamartRef_2 = _source_3.getDatamartRef();
-      String _name_1 = _datamartRef_2.getName();
-      return _name_1.toString();
+    if ((((!Objects.equal(chart.getSource(), null)) && (!Objects.equal(chart.getSource().getDatamartRef(), null))) && (!Objects.equal(chart.getSource().getDatamartRef().getName(), null)))) {
+      return chart.getSource().getDatamartRef().getName().toString();
     } else {
       return null;
     }
@@ -649,224 +547,193 @@
    */
   public String createView(final Chart chart) {
     StringConcatenation _builder = new StringConcatenation();
+    _builder.append("eclipseContext.set(IE4Focusable.class, this);");
+    _builder.newLine();
     _builder.append("chartRefresherDone = false;");
     _builder.newLine();
     _builder.append("charts = new ArrayList<DCharts>();");
     _builder.newLine();
     _builder.append("coordinateSystem = new ArrayList<Integer>();");
     _builder.newLine();
-    _builder.append("filterGenerator = new DatamartFilterGenerator();");
+    _builder.append("parent.setPrimaryStyleName(\"osbp\"); // <== is THIS necessary any more???");
     _builder.newLine();
-    _builder.append("filterGenerator.setDslMetadataService(dslMetadataService);");
+    _builder.append("parent.addStyleName(\"");
+    String _styleName = EnumCssClass.VIEW.styleName();
+    _builder.append(_styleName);
+    _builder.append("\");");
+    _builder.newLineIfNotEmpty();
+    _builder.append("parent.addStyleName(\"");
+    String _styleName_1 = EnumCssClass.CHART_VIEW.styleName();
+    _builder.append(_styleName_1);
+    _builder.append("\");");
+    _builder.newLineIfNotEmpty();
+    _builder.append("parent.setSizeFull();");
     _builder.newLine();
     _builder.append("layoutManager = new ViewLayoutManager();");
     _builder.newLine();
+    _builder.append("layoutManager.init(parent);");
+    _builder.newLine();
+    _builder.append("datamartInstance = new ");
+    String _sourceDataMartRefName = this.getSourceDataMartRefName(chart);
+    _builder.append(_sourceDataMartRefName);
+    _builder.append("Datamart();");
+    _builder.newLineIfNotEmpty();
+    _builder.append("datamartInstance.setUser(user);");
+    _builder.newLine();
+    _builder.append("filterGenerator = new DatamartFilterGenerator(datamartInstance, dslMetadataService);");
+    _builder.newLine();
+    _builder.append("filterGenerator.createUIFilters(layoutManager);");
+    _builder.newLine();
     _builder.append("chartRefresher = new Refresher();");
     _builder.newLine();
     _builder.append("chartRenderDelay = new Refresher();");
     _builder.newLine();
-    _builder.append("propertyLookupMap = new HashMap<String,PropertyLookup>();");
+    _builder.append("attributeLookupMap = new HashMap<String,PropertyLookup>();");
     _builder.newLine();
     String body = _builder.toString();
-    String _sourceDataMartRefName = this.getSourceDataMartRefName(chart);
-    boolean _notEquals = (!Objects.equal(_sourceDataMartRefName, null));
-    if (_notEquals) {
-      StringConcatenation _builder_1 = new StringConcatenation();
-      _builder_1.append(body, "");
-      _builder_1.newLineIfNotEmpty();
-      _builder_1.append("datamartClass = new ");
-      String _sourceDataMartRefName_1 = this.getSourceDataMartRefName(chart);
-      _builder_1.append(_sourceDataMartRefName_1, "");
-      _builder_1.append("Datamart();");
-      body = _builder_1.toString();
-    }
-    StringConcatenation _builder_2 = new StringConcatenation();
-    _builder_2.append(body, "");
-    _builder_2.newLineIfNotEmpty();
-    _builder_2.append("parent.setPrimaryStyleName(\"osbp\"); // <== is THIS necessary any more???");
-    _builder_2.newLine();
-    _builder_2.append("parent.addStyleName(\"");
-    String _styleName = EnumCssClass.VIEW.styleName();
-    _builder_2.append(_styleName, "");
-    _builder_2.append("\");");
-    _builder_2.newLineIfNotEmpty();
-    _builder_2.append("parent.addStyleName(\"");
-    String _styleName_1 = EnumCssClass.CHART_VIEW.styleName();
-    _builder_2.append(_styleName_1, "");
-    _builder_2.append("\");");
-    _builder_2.newLineIfNotEmpty();
-    _builder_2.append("parent.setSizeFull();");
-    _builder_2.newLine();
-    _builder_2.append("layoutManager.init(parent);");
-    _builder_2.newLine();
-    _builder_2.append("refreshView = ");
+    StringConcatenation _builder_1 = new StringConcatenation();
+    _builder_1.append(body);
+    _builder_1.newLineIfNotEmpty();
+    _builder_1.append("refreshView = ");
     String _refreshView = this.refreshView(chart);
-    _builder_2.append(_refreshView, "");
+    _builder_1.append(_refreshView);
+    _builder_1.newLineIfNotEmpty();
+    body = _builder_1.toString();
+    StringConcatenation _builder_2 = new StringConcatenation();
+    _builder_2.append(body);
     _builder_2.newLineIfNotEmpty();
+    _builder_2.append("chartRenderDelay.setRefreshInterval(100);");
+    _builder_2.newLine();
+    _builder_2.append("chartRenderDelay.addListener(new com.github.wolfie.refresher.Refresher.RefreshListener() {");
+    _builder_2.newLine();
+    _builder_2.append("\t");
+    _builder_2.append("@Override");
+    _builder_2.newLine();
+    _builder_2.append("\t");
+    _builder_2.append("public void refresh(final Refresher source) {");
+    _builder_2.newLine();
+    _builder_2.append("\t\t");
+    _builder_2.append("// refresh only once");
+    _builder_2.newLine();
+    _builder_2.append("\t\t");
+    _builder_2.append("layoutManager.removeExtension(source);");
+    _builder_2.newLine();
+    _builder_2.append("\t\t");
+    _builder_2.append("log.debug(\"initial - show delayed\");");
+    _builder_2.newLine();
+    _builder_2.append("\t\t");
+    _builder_2.append("for(DCharts chart : charts) {");
+    _builder_2.newLine();
+    _builder_2.append("\t\t\t");
+    _builder_2.append("chart.show();");
+    _builder_2.newLine();
+    _builder_2.append("\t\t");
+    _builder_2.append("}");
+    _builder_2.newLine();
+    _builder_2.append("\t\t");
+    _builder_2.append("chartRefresherDone = true;");
+    _builder_2.newLine();
+    _builder_2.append("\t");
+    _builder_2.append("}");
+    _builder_2.newLine();
+    _builder_2.append("});");
+    _builder_2.newLine();
+    _builder_2.append("layoutManager.addExtension(chartRenderDelay);");
+    _builder_2.newLine();
     body = _builder_2.toString();
-    StringConcatenation _builder_3 = new StringConcatenation();
-    _builder_3.append(body, "");
-    _builder_3.newLineIfNotEmpty();
-    _builder_3.append("chartRenderDelay.setRefreshInterval(100);");
-    _builder_3.newLine();
-    _builder_3.append("chartRenderDelay.addListener(new com.github.wolfie.refresher.Refresher.RefreshListener() {");
-    _builder_3.newLine();
-    _builder_3.append("\t");
-    _builder_3.append("@Override");
-    _builder_3.newLine();
-    _builder_3.append("\t");
-    _builder_3.append("public void refresh(final Refresher source) {");
-    _builder_3.newLine();
-    _builder_3.append("\t\t");
-    _builder_3.append("// refresh only once");
-    _builder_3.newLine();
-    _builder_3.append("\t\t");
-    _builder_3.append("layoutManager.removeExtension(source);");
-    _builder_3.newLine();
-    _builder_3.append("\t\t");
-    _builder_3.append("log.debug(\"initial - show delayed\");");
-    _builder_3.newLine();
-    _builder_3.append("\t\t");
-    _builder_3.append("for(DCharts chart : charts) {");
-    _builder_3.newLine();
-    _builder_3.append("\t\t\t");
-    _builder_3.append("chart.show();");
-    _builder_3.newLine();
-    _builder_3.append("\t\t");
-    _builder_3.append("}");
-    _builder_3.newLine();
-    _builder_3.append("\t\t");
-    _builder_3.append("chartRefresherDone = true;");
-    _builder_3.newLine();
-    _builder_3.append("\t");
-    _builder_3.append("}");
-    _builder_3.newLine();
-    _builder_3.append("});");
-    _builder_3.newLine();
-    _builder_3.append("layoutManager.addExtension(chartRenderDelay);");
-    _builder_3.newLine();
-    _builder_3.append("user.addUserLocaleListener(this);");
-    _builder_3.newLine();
-    body = _builder_3.toString();
     boolean _isPolling = chart.isPolling();
     if (_isPolling) {
-      StringConcatenation _builder_4 = new StringConcatenation();
-      _builder_4.append(body, "");
-      _builder_4.newLineIfNotEmpty();
-      _builder_4.append("chartRefresher.setRefreshInterval(");
+      StringConcatenation _builder_3 = new StringConcatenation();
+      _builder_3.append(body);
+      _builder_3.newLineIfNotEmpty();
+      _builder_3.append("chartRefresher.setRefreshInterval(");
       int _pollingTime = chart.getPollingTime();
-      _builder_4.append(_pollingTime, "");
-      _builder_4.append("*1000);");
-      _builder_4.newLineIfNotEmpty();
-      _builder_4.append("chartRefresher.addListener(new com.github.wolfie.refresher.Refresher.RefreshListener() {");
-      _builder_4.newLine();
-      _builder_4.append("\t");
-      _builder_4.append("@Override");
-      _builder_4.newLine();
-      _builder_4.append("\t");
-      _builder_4.append("public void refresh(final Refresher source) {");
-      _builder_4.newLine();
-      _builder_4.append("\t\t");
-      _builder_4.append("renderData();");
-      _builder_4.newLine();
-      _builder_4.append("\t");
-      _builder_4.append("}");
-      _builder_4.newLine();
-      _builder_4.append("});");
-      _builder_4.newLine();
-      _builder_4.append("layoutManager.addExtension(chartRefresher);");
-      _builder_4.newLine();
-      body = _builder_4.toString();
+      _builder_3.append(_pollingTime);
+      _builder_3.append("*1000);");
+      _builder_3.newLineIfNotEmpty();
+      _builder_3.append("chartRefresher.addListener(new com.github.wolfie.refresher.Refresher.RefreshListener() {");
+      _builder_3.newLine();
+      _builder_3.append("\t");
+      _builder_3.append("@Override");
+      _builder_3.newLine();
+      _builder_3.append("\t");
+      _builder_3.append("public void refresh(final Refresher source) {");
+      _builder_3.newLine();
+      _builder_3.append("\t\t");
+      _builder_3.append("renderData();");
+      _builder_3.newLine();
+      _builder_3.append("\t");
+      _builder_3.append("}");
+      _builder_3.newLine();
+      _builder_3.append("});");
+      _builder_3.newLine();
+      _builder_3.append("layoutManager.addExtension(chartRefresher);");
+      _builder_3.newLine();
+      body = _builder_3.toString();
     }
-    ChartDatamart _source = chart.getSource();
-    boolean _notEquals_1 = (!Objects.equal(_source, null));
-    if (_notEquals_1) {
-      StringConcatenation _builder_5 = new StringConcatenation();
-      _builder_5.append(body, "");
-      _builder_5.newLineIfNotEmpty();
-      _builder_5.append("filterChangeListener = new ValueChangeListener() {");
-      _builder_5.newLine();
-      _builder_5.append("\t");
-      _builder_5.append("@Override");
-      _builder_5.newLine();
-      _builder_5.append("\t");
-      _builder_5.append("public void valueChange(com.vaadin.data.Property.ValueChangeEvent event) {");
-      _builder_5.newLine();
-      _builder_5.append("\t\t");
-      _builder_5.append("renderData();");
-      _builder_5.newLine();
-      _builder_5.append("\t");
-      _builder_5.append("}");
-      _builder_5.newLine();
-      _builder_5.append("};");
-      _builder_5.newLine();
-      _builder_5.append("filterGenerator.createFilter(datamartClass, user, filterChangeListener, layoutManager);");
-      _builder_5.newLine();
-      body = _builder_5.toString();
-    }
-    StringConcatenation _builder_6 = new StringConcatenation();
-    _builder_6.append(body, "");
-    _builder_6.append("// to resize the chart according to browser");
-    _builder_6.newLineIfNotEmpty();
-    _builder_6.append("Page.getCurrent().addBrowserWindowResizeListener(new BrowserWindowResizeListener() {");
-    _builder_6.newLine();
-    _builder_6.append("\t");
-    _builder_6.append("@Override");
-    _builder_6.newLine();
-    _builder_6.append("\t");
-    _builder_6.append("public void browserWindowResized(BrowserWindowResizeEvent event) {");
-    _builder_6.newLine();
-    _builder_6.append("\t\t");
-    _builder_6.append("log.debug(\"browserWindowResized - mark dirty\");");
-    _builder_6.newLine();
-    _builder_6.append("\t\t");
-    _builder_6.append("getParent().markAsDirtyRecursive();");
-    _builder_6.newLine();
-    _builder_6.append("\t");
-    _builder_6.append("}");
-    _builder_6.newLine();
-    _builder_6.append("});");
-    _builder_6.newLine();
-    _builder_6.append("// to resize the chart according to split positions of partsashcontainer - setContainerData is tracked");
-    _builder_6.newLine();
-    _builder_6.append("EObject container = ((EObject)eclipseContext.get(MUIElement.class)).eContainer();");
-    _builder_6.newLine();
-    _builder_6.append("if(!(container instanceof MPartStack)) {");
-    _builder_6.newLine();
-    _builder_6.append("\t");
-    _builder_6.append("container = (EObject)eclipseContext.get(MUIElement.class);");
-    _builder_6.newLine();
-    _builder_6.append("}");
-    _builder_6.newLine();
-    _builder_6.append("container.eAdapters().add(new AdapterImpl() {");
-    _builder_6.newLine();
-    _builder_6.append("\t");
-    _builder_6.append("public void notifyChanged(Notification notification) {");
-    _builder_6.newLine();
-    _builder_6.append("\t\t");
-    _builder_6.append("if (notification.getEventType()==Notification.SET && ");
-    _builder_6.newLine();
-    _builder_6.append("\t\t\t\t");
-    _builder_6.append("notification.getFeatureID(UIElementImpl.class) == UiPackageImpl.UI_ELEMENT__CONTAINER_DATA)");
-    _builder_6.newLine();
-    _builder_6.append("\t\t");
-    _builder_6.append("{");
-    _builder_6.newLine();
-    _builder_6.append("\t\t\t");
-    _builder_6.append("log.debug(\"split position changed - mark dirty\");");
-    _builder_6.newLine();
-    _builder_6.append("\t\t\t");
-    _builder_6.append("getParent().markAsDirtyRecursive();");
-    _builder_6.newLine();
-    _builder_6.append("\t\t");
-    _builder_6.append("}");
-    _builder_6.newLine();
-    _builder_6.append("\t");
-    _builder_6.append("}");
-    _builder_6.newLine();
-    _builder_6.append("});");
-    _builder_6.newLine();
-    body = _builder_6.toString();
+    StringConcatenation _builder_4 = new StringConcatenation();
+    _builder_4.append(body);
+    _builder_4.append("// to resize the chart according to browser");
+    _builder_4.newLineIfNotEmpty();
+    _builder_4.append("Page.getCurrent().addBrowserWindowResizeListener(new BrowserWindowResizeListener() {");
+    _builder_4.newLine();
+    _builder_4.append("\t");
+    _builder_4.append("@Override");
+    _builder_4.newLine();
+    _builder_4.append("\t");
+    _builder_4.append("public void browserWindowResized(BrowserWindowResizeEvent event) {");
+    _builder_4.newLine();
+    _builder_4.append("\t\t");
+    _builder_4.append("log.debug(\"browserWindowResized - mark dirty\");");
+    _builder_4.newLine();
+    _builder_4.append("\t\t");
+    _builder_4.append("getParent().markAsDirtyRecursive();");
+    _builder_4.newLine();
+    _builder_4.append("\t");
+    _builder_4.append("}");
+    _builder_4.newLine();
+    _builder_4.append("});");
+    _builder_4.newLine();
+    _builder_4.append("// to resize the chart according to split positions of partsashcontainer - setContainerData is tracked");
+    _builder_4.newLine();
+    _builder_4.append("EObject container = ((EObject)eclipseContext.get(MUIElement.class)).eContainer();");
+    _builder_4.newLine();
+    _builder_4.append("if(!(container instanceof MPartStack)) {");
+    _builder_4.newLine();
+    _builder_4.append("\t");
+    _builder_4.append("container = (EObject)eclipseContext.get(MUIElement.class);");
+    _builder_4.newLine();
+    _builder_4.append("}");
+    _builder_4.newLine();
+    _builder_4.append("container.eAdapters().add(new AdapterImpl() {");
+    _builder_4.newLine();
+    _builder_4.append("\t");
+    _builder_4.append("public void notifyChanged(Notification notification) {");
+    _builder_4.newLine();
+    _builder_4.append("\t\t");
+    _builder_4.append("if (notification.getEventType()==Notification.SET && ");
+    _builder_4.newLine();
+    _builder_4.append("\t\t\t\t");
+    _builder_4.append("notification.getFeatureID(UIElementImpl.class) == UiPackageImpl.UI_ELEMENT__CONTAINER_DATA)");
+    _builder_4.newLine();
+    _builder_4.append("\t\t");
+    _builder_4.append("{");
+    _builder_4.newLine();
+    _builder_4.append("\t\t\t");
+    _builder_4.append("log.debug(\"split position changed - mark dirty\");");
+    _builder_4.newLine();
+    _builder_4.append("\t\t\t");
+    _builder_4.append("getParent().markAsDirtyRecursive();");
+    _builder_4.newLine();
+    _builder_4.append("\t\t");
+    _builder_4.append("}");
+    _builder_4.newLine();
+    _builder_4.append("\t");
+    _builder_4.append("}");
+    _builder_4.newLine();
+    _builder_4.append("});");
+    _builder_4.newLine();
+    body = _builder_4.toString();
     return body;
   }
   
@@ -876,7 +743,7 @@
   public String refreshView(final Chart chart) {
     String body = "";
     StringConcatenation _builder = new StringConcatenation();
-    _builder.append(body, "");
+    _builder.append(body);
     _builder.newLineIfNotEmpty();
     _builder.append("new EventHandler() {");
     _builder.newLine();
@@ -907,141 +774,120 @@
     boolean _notEquals = (!Objects.equal(_source, null));
     if (_notEquals) {
       StringConcatenation _builder = new StringConcatenation();
-      _builder.append(body, "");
+      _builder.append(body);
       _builder.append("// get the results");
       _builder.newLineIfNotEmpty();
-      _builder.append("try {");
+      _builder.append("final DerivedCellSet cellSet = datamartInstance.getResults(getTaskOperativeDtoClass(), getTaskInitialOperativeDtos());");
       _builder.newLine();
-      _builder.append("\t");
-      _builder.append("final DerivedCellSet cellSet = datamartClass.getResults(user, filterGenerator.getFilter(");
-      ChartDatamart _source_1 = chart.getSource();
-      DatamartDefinition _datamartRef = _source_1.getDatamartRef();
-      DatamartSource _source_2 = _datamartRef.getSource();
-      boolean _booleanValue = Boolean.valueOf((_source_2 instanceof DatamartCube)).booleanValue();
-      String _string = Boolean.valueOf(_booleanValue).toString();
-      _builder.append(_string, "\t");
-      _builder.append("), getTaskOperativeDtoClass(), getTaskInitialOperativeDtos());");
-      _builder.newLineIfNotEmpty();
-      _builder.append("\t");
       _builder.append("getCoordinateSystem().clear();");
       _builder.newLine();
-      _builder.append("\t");
       _builder.append("if (cellSet == null) {");
       _builder.newLine();
-      _builder.append("\t\t");
-      _builder.append("promptSecurityMessage(dslMetadataService.translate(locale.toLanguageTag(), \"securityMessage\"), layoutManager.getDataArea());");
+      _builder.append("\t");
+      _builder.append("promptSecurityMessage(dslMetadataService.translate(user.getLocale().toLanguageTag(), \"securityMessage\"), layoutManager.getDataArea());");
       _builder.newLine();
-      _builder.append("\t\t");
+      _builder.append("\t");
       _builder.append("return;");
       _builder.newLine();
-      _builder.append("\t");
       _builder.append("} else {");
       _builder.newLine();
-      _builder.append("\t\t");
+      _builder.append("\t");
       _builder.append("layoutManager.getDataArea().removeAllComponents();");
       _builder.newLine();
-      _builder.append("\t");
       _builder.append("}");
       _builder.newLine();
-      _builder.append("\t");
       _builder.append("// generate a new result component");
       _builder.newLine();
-      _builder.append("\t");
       _builder.append("if (cellSet != null) {");
       _builder.newLine();
-      _builder.append("\t\t");
+      _builder.append("\t");
       _builder.append("// create a multidimensional coordinate system against the cellSet");
       _builder.newLine();
-      _builder.append("\t\t");
+      _builder.append("\t");
       _builder.append("for\t(int axis = 0; axis < cellSet.getAxes().size(); axis++) {");
       _builder.newLine();
-      _builder.append("\t\t\t");
+      _builder.append("\t\t");
       _builder.append("getCoordinateSystem().add(0);");
       _builder.newLine();
-      _builder.append("\t\t");
+      _builder.append("\t");
       _builder.append("}");
       _builder.newLine();
-      _builder.append("\t\t");
+      _builder.append("\t");
       _builder.append("// remove any previous component");
       _builder.newLine();
-      _builder.append("\t\t");
+      _builder.append("\t");
       _builder.append("if\t(dataComponent != null) {");
       _builder.newLine();
-      _builder.append("\t\t\t");
+      _builder.append("\t\t");
       _builder.append("layoutManager.getDataArea().removeComponent(dataComponent);");
       _builder.newLine();
-      _builder.append("\t\t\t");
+      _builder.append("\t\t");
       _builder.append("dataComponent = null;");
       _builder.newLine();
-      _builder.append("\t\t");
+      _builder.append("\t");
       _builder.append("}");
       _builder.newLine();
-      _builder.append("\t\t");
+      _builder.append("\t");
       _builder.append("if (cellSet.getAxes().size() < 2) {");
       _builder.newLine();
-      _builder.append("\t\t\t");
+      _builder.append("\t\t");
       _builder.append("log.error(\"at least 2 axes from referenced datamart ");
-      ChartDatamart _source_3 = chart.getSource();
-      DatamartDefinition _datamartRef_1 = _source_3.getDatamartRef();
-      String _name = _datamartRef_1.getName();
-      _builder.append(_name, "\t\t\t");
+      String _name = chart.getSource().getDatamartRef().getName();
+      _builder.append(_name, "\t\t");
       _builder.append(" are needed to render ");
       String _name_1 = chart.getName();
-      _builder.append(_name_1, "\t\t\t");
+      _builder.append(_name_1, "\t\t");
       _builder.append("\");");
       _builder.newLineIfNotEmpty();
-      _builder.append("\t\t");
-      _builder.append("}");
+      _builder.append("\t");
+      _builder.append("} else {");
       _builder.newLine();
       _builder.append("\t\t");
       _builder.append("dataComponent = createTabSheet(cellSet, cellSet.getAxes().size());");
       _builder.newLine();
       _builder.append("\t\t");
+      _builder.append("if(dataComponent != null) {");
+      _builder.newLine();
+      _builder.append("\t\t\t");
       _builder.append("dataComponent.setSizeFull();");
       _builder.newLine();
-      _builder.append("\t\t");
+      _builder.append("\t\t\t");
       _builder.append("dataComponent.setId(\"dataComponent\");");
       _builder.newLine();
-      _builder.append("\t\t");
+      _builder.append("\t\t\t");
       _builder.append("dataComponent.addStyleName(\"");
       String _styleName = EnumCssClass.DATA_COMPONENT.styleName();
-      _builder.append(_styleName, "\t\t");
+      _builder.append(_styleName, "\t\t\t");
       _builder.append("\");");
       _builder.newLineIfNotEmpty();
-      _builder.append("\t\t");
+      _builder.append("\t\t\t");
       _builder.append("layoutManager.getDataArea().addComponent(dataComponent);");
       _builder.newLine();
-      _builder.append("\t\t");
+      _builder.append("\t\t\t");
       _builder.append("layoutManager.getDataArea().setExpandRatio(dataComponent, 1);");
       _builder.newLine();
-      _builder.append("\t");
+      _builder.append("\t\t");
       _builder.append("}");
       _builder.newLine();
       _builder.append("\t");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append("}");
+      _builder.newLine();
       _builder.append("else {");
       _builder.newLine();
-      _builder.append("\t\t");
+      _builder.append("\t");
       _builder.append("log.error(\"referenced datamart ");
-      ChartDatamart _source_4 = chart.getSource();
-      DatamartDefinition _datamartRef_2 = _source_4.getDatamartRef();
-      String _name_2 = _datamartRef_2.getName();
-      _builder.append(_name_2, "\t\t");
+      String _name_2 = chart.getSource().getDatamartRef().getName();
+      _builder.append(_name_2, "\t");
       _builder.append(" generates no results\");");
       _builder.newLineIfNotEmpty();
-      _builder.append("\t");
-      _builder.append("}");
-      _builder.newLine();
-      _builder.append("} catch (DerivedOlapException e) {");
-      _builder.newLine();
-      _builder.append("\t");
-      _builder.append("log.error(e.getLocalizedMessage());");
-      _builder.newLine();
       _builder.append("}");
       _builder.newLine();
       body = _builder.toString();
     } else {
       StringConcatenation _builder_1 = new StringConcatenation();
-      _builder_1.append(body, "");
+      _builder_1.append(body);
       _builder_1.newLineIfNotEmpty();
       _builder_1.append("// generate a new result component");
       _builder_1.newLine();
@@ -1112,7 +958,7 @@
     ChartOption _charttype = chart.getCharttype();
     if ((_charttype instanceof ChartTree)) {
       StringConcatenation _builder_1 = new StringConcatenation();
-      _builder_1.append(body, "");
+      _builder_1.append(body);
       _builder_1.newLineIfNotEmpty();
       _builder_1.append("\t");
       _builder_1.append("try {");
@@ -1132,7 +978,7 @@
       body = _builder_1.toString();
     } else {
       StringConcatenation _builder_2 = new StringConcatenation();
-      _builder_2.append(body, "");
+      _builder_2.append(body);
       _builder_2.newLineIfNotEmpty();
       _builder_2.append("\t");
       _builder_2.append("component = createChart(cellSet);");
@@ -1140,7 +986,7 @@
       body = _builder_2.toString();
     }
     StringConcatenation _builder_3 = new StringConcatenation();
-    _builder_3.append(body, "");
+    _builder_3.append(body);
     _builder_3.newLineIfNotEmpty();
     _builder_3.append("}");
     _builder_3.newLine();
@@ -1264,63 +1110,15 @@
         axisSwitch = true;
       }
     }
-    ChartDatamart _source = chart.getSource();
-    EList<ChartElement> _elements = _source.getElements();
+    EList<ChartElement> _elements = chart.getSource().getElements();
     for (final ChartElement element : _elements) {
       if ((element instanceof ChartAxis)) {
         ChartAxis axis = ((ChartAxis) element);
-        boolean _or = false;
-        DatamartAxis _axis = axis.getAxis();
-        AxisEnum _name = _axis.getName();
-        String _name_1 = _name.getName();
-        boolean _equals = _name_1.equals("COLUMNS");
-        if (_equals) {
-          _or = true;
-        } else {
-          DatamartAxis _axis_1 = axis.getAxis();
-          AxisEnum _name_2 = _axis_1.getName();
-          String _name_3 = _name_2.getName();
-          boolean _equals_1 = _name_3.equals("ROWS");
-          _or = _equals_1;
-        }
-        if (_or) {
-          boolean _or_1 = false;
-          boolean _or_2 = false;
-          RenderTypeEnum _renderType = axis.getRenderType();
-          String _name_4 = _renderType.getName();
-          boolean _equals_2 = _name_4.equals("LOG");
-          if (_equals_2) {
-            _or_2 = true;
-          } else {
-            RenderTypeEnum _renderType_1 = axis.getRenderType();
-            String _name_5 = _renderType_1.getName();
-            boolean _equals_3 = _name_5.equals("LINEAR");
-            _or_2 = _equals_3;
-          }
-          if (_or_2) {
-            _or_1 = true;
-          } else {
-            RenderTypeEnum _renderType_2 = axis.getRenderType();
-            String _name_6 = _renderType_2.getName();
-            boolean _equals_4 = _name_6.equals("PYRAMID");
-            _or_1 = _equals_4;
-          }
-          if (_or_1) {
+        if ((axis.getAxis().getName().getName().equals("COLUMNS") || axis.getAxis().getName().getName().equals("ROWS"))) {
+          if (((axis.getRenderType().getName().equals("LOG") || axis.getRenderType().getName().equals("LINEAR")) || axis.getRenderType().getName().equals("PYRAMID"))) {
             data_axis = axis;
           }
-          boolean _or_3 = false;
-          RenderTypeEnum _renderType_3 = axis.getRenderType();
-          String _name_7 = _renderType_3.getName();
-          boolean _equals_5 = _name_7.equals("CATEGORY");
-          if (_equals_5) {
-            _or_3 = true;
-          } else {
-            RenderTypeEnum _renderType_4 = axis.getRenderType();
-            String _name_8 = _renderType_4.getName();
-            boolean _equals_6 = _name_8.equals("DATE");
-            _or_3 = _equals_6;
-          }
-          if (_or_3) {
+          if ((axis.getRenderType().getName().equals("CATEGORY") || axis.getRenderType().getName().equals("DATE"))) {
             category_axis = axis;
           }
         }
@@ -1331,7 +1129,7 @@
       chartType = "BAR";
       StringConcatenation _builder = new StringConcatenation();
       _builder.append("_");
-      _builder.append(chartType, "");
+      _builder.append(chartType);
       postfix = _builder.toString();
       inner_axis = category_axis;
       outer_axis = data_axis;
@@ -1341,7 +1139,7 @@
         chartType = "BUBBLE";
         StringConcatenation _builder_1 = new StringConcatenation();
         _builder_1.append("_");
-        _builder_1.append(chartType, "");
+        _builder_1.append(chartType);
         postfix = _builder_1.toString();
         hasAxis = true;
         inner_axis = data_axis;
@@ -1384,51 +1182,50 @@
     _builder_2.newLine();
     body = _builder_2.toString();
     StringConcatenation _builder_3 = new StringConcatenation();
-    _builder_3.append(body, "");
+    _builder_3.append(body);
     _builder_3.append("// create a label series");
     _builder_3.newLineIfNotEmpty();
     _builder_3.append("List<String> ");
-    DatamartAxis _axis_2 = data_axis.getAxis();
-    AxisEnum _name_9 = _axis_2.getName();
-    String _literal = _name_9.getLiteral();
-    _builder_3.append(_literal, "");
+    String _literal = data_axis.getAxis().getName().getLiteral();
+    _builder_3.append(_literal);
     _builder_3.append("TitlesArray = new ArrayList<String>();");
     _builder_3.newLineIfNotEmpty();
     _builder_3.append("for\t(DerivedPosition pos : cellSet.getAxes().get(");
-    DatamartAxis _axis_3 = data_axis.getAxis();
-    AxisEnum _name_10 = _axis_3.getName();
-    int _value = _name_10.getValue();
-    _builder_3.append(_value, "");
+    int _value = data_axis.getAxis().getName().getValue();
+    _builder_3.append(_value);
     _builder_3.append(").getPositions()) {");
     _builder_3.newLineIfNotEmpty();
     body = _builder_3.toString();
     StringConcatenation _builder_4 = new StringConcatenation();
-    _builder_4.append(body, "");
+    _builder_4.append(body);
     _builder_4.newLineIfNotEmpty();
     _builder_4.append("\t");
     _builder_4.append("String title = null;");
     _builder_4.newLine();
     _builder_4.append("\t");
-    _builder_4.append("Boolean valueUsed = false;");
-    _builder_4.newLine();
-    _builder_4.append("\t");
     _builder_4.append("for (DerivedMember member : pos.getMembers()) {");
     _builder_4.newLine();
     _builder_4.append("\t\t");
+    _builder_4.append("if(member.getType() == MemberType.MEASURE) {");
+    _builder_4.newLine();
+    _builder_4.append("\t\t\t");
     _builder_4.append("if\t(title == null) {");
     _builder_4.newLine();
-    _builder_4.append("\t\t\t");
+    _builder_4.append("\t\t\t\t");
     _builder_4.append("title = dslMetadataService.translate(user.getLocale().toLanguageTag(), member.getCaption());");
     _builder_4.newLine();
-    _builder_4.append("\t\t");
+    _builder_4.append("\t\t\t");
     _builder_4.append("}");
     _builder_4.newLine();
-    _builder_4.append("\t\t");
-    _builder_4.append("else {");
-    _builder_4.newLine();
     _builder_4.append("\t\t\t");
+    _builder_4.append("else {");
+    _builder_4.newLine();
+    _builder_4.append("\t\t\t\t");
     _builder_4.append("title += \" \"+dslMetadataService.translate(user.getLocale().toLanguageTag(), member.getCaption());");
     _builder_4.newLine();
+    _builder_4.append("\t\t\t");
+    _builder_4.append("}");
+    _builder_4.newLine();
     _builder_4.append("\t\t");
     _builder_4.append("}");
     _builder_4.newLine();
@@ -1436,33 +1233,33 @@
     _builder_4.append("}");
     _builder_4.newLine();
     _builder_4.append("\t");
-    DatamartAxis _axis_4 = data_axis.getAxis();
-    AxisEnum _name_11 = _axis_4.getName();
-    String _literal_1 = _name_11.getLiteral();
-    _builder_4.append(_literal_1, "\t");
+    _builder_4.append("if(title != null) {");
+    _builder_4.newLine();
+    _builder_4.append("\t\t");
+    String _literal_1 = data_axis.getAxis().getName().getLiteral();
+    _builder_4.append(_literal_1, "\t\t");
     _builder_4.append("TitlesArray.add(title);");
     _builder_4.newLineIfNotEmpty();
+    _builder_4.append("\t");
+    _builder_4.append("}");
+    _builder_4.newLine();
     _builder_4.append("}");
     _builder_4.newLine();
     body = _builder_4.toString();
     if (hasAxis) {
       StringConcatenation _builder_5 = new StringConcatenation();
-      _builder_5.append(body, "");
+      _builder_5.append(body);
       _builder_5.append("Series ");
-      DatamartAxis _axis_5 = data_axis.getAxis();
-      AxisEnum _name_12 = _axis_5.getName();
-      String _literal_2 = _name_12.getLiteral();
-      _builder_5.append(_literal_2, "");
+      String _literal_2 = data_axis.getAxis().getName().getLiteral();
+      _builder_5.append(_literal_2);
       _builder_5.append("Series = new Series();");
       _builder_5.newLineIfNotEmpty();
       body = _builder_5.toString();
       StringConcatenation _builder_6 = new StringConcatenation();
-      _builder_6.append(body, "");
+      _builder_6.append(body);
       _builder_6.append("if (");
-      DatamartAxis _axis_6 = data_axis.getAxis();
-      AxisEnum _name_13 = _axis_6.getName();
-      String _literal_3 = _name_13.getLiteral();
-      _builder_6.append(_literal_3, "");
+      String _literal_3 = data_axis.getAxis().getName().getLiteral();
+      _builder_6.append(_literal_3);
       _builder_6.append("TitlesArray.size() > 0) {");
       _builder_6.newLineIfNotEmpty();
       body = _builder_6.toString();
@@ -1470,50 +1267,41 @@
       ChartOption _charttype_8 = chart.getCharttype();
       if ((_charttype_8 instanceof ChartLine)) {
         ChartOption _charttype_9 = chart.getCharttype();
-        boolean _isShowMarker = ((ChartLine) _charttype_9).isShowMarker();
-        showMarker = _isShowMarker;
+        showMarker = ((ChartLine) _charttype_9).isShowMarker();
       }
       StringConcatenation _builder_7 = new StringConcatenation();
-      _builder_7.append(body, "");
+      _builder_7.append(body);
       String _createLabelSeries = this.createLabelSeries(chart, data_axis, multipleAxes, axisPrefix, showMarker);
-      _builder_7.append(_createLabelSeries, "");
+      _builder_7.append(_createLabelSeries);
       body = _builder_7.toString();
       StringConcatenation _builder_8 = new StringConcatenation();
-      _builder_8.append(body, "");
+      _builder_8.append(body);
       _builder_8.append("}");
       _builder_8.newLineIfNotEmpty();
       body = _builder_8.toString();
     }
     StringConcatenation _builder_9 = new StringConcatenation();
-    _builder_9.append(body, "");
+    _builder_9.append(body);
     _builder_9.append("// create the data series ticks");
     _builder_9.newLineIfNotEmpty();
     _builder_9.append("String ");
-    DatamartAxis _axis_7 = category_axis.getAxis();
-    AxisEnum _name_14 = _axis_7.getName();
-    String _literal_4 = _name_14.getLiteral();
-    _builder_9.append(_literal_4, "");
+    String _literal_4 = category_axis.getAxis().getName().getLiteral();
+    _builder_9.append(_literal_4);
     _builder_9.append("AxisLabel = \"\";");
     _builder_9.newLineIfNotEmpty();
     _builder_9.append("Boolean ");
-    DatamartAxis _axis_8 = category_axis.getAxis();
-    AxisEnum _name_15 = _axis_8.getName();
-    String _literal_5 = _name_15.getLiteral();
-    _builder_9.append(_literal_5, "");
+    String _literal_5 = category_axis.getAxis().getName().getLiteral();
+    _builder_9.append(_literal_5);
     _builder_9.append("AxisLabelSet = false;");
     _builder_9.newLineIfNotEmpty();
     _builder_9.append("List<String> ");
-    DatamartAxis _axis_9 = category_axis.getAxis();
-    AxisEnum _name_16 = _axis_9.getName();
-    String _literal_6 = _name_16.getLiteral();
-    _builder_9.append(_literal_6, "");
+    String _literal_6 = category_axis.getAxis().getName().getLiteral();
+    _builder_9.append(_literal_6);
     _builder_9.append("TitlesArray = new ArrayList<String>();");
     _builder_9.newLineIfNotEmpty();
     _builder_9.append("for\t(DerivedPosition pos : cellSet.getAxes().get(");
-    DatamartAxis _axis_10 = category_axis.getAxis();
-    AxisEnum _name_17 = _axis_10.getName();
-    int _value_1 = _name_17.getValue();
-    _builder_9.append(_value_1, "");
+    int _value_1 = category_axis.getAxis().getName().getValue();
+    _builder_9.append(_value_1);
     _builder_9.append(").getPositions()) {");
     _builder_9.newLineIfNotEmpty();
     _builder_9.append("\t");
@@ -1522,1075 +1310,1020 @@
     _builder_9.append("\t");
     _builder_9.append("for (DerivedMember member : pos.getMembers()) {");
     _builder_9.newLine();
-    _builder_9.append("    \t");
+    _builder_9.append("\t\t");
+    _builder_9.append("if(member.getType() == MemberType.REGULAR) {");
+    _builder_9.newLine();
+    _builder_9.append("\t    \t");
     _builder_9.append("String[] tokens = member.getUniqueName().split(\"\\\\]\\\\.\\\\[\");");
     _builder_9.newLine();
-    _builder_9.append("    \t");
+    _builder_9.append("\t    \t");
     _builder_9.append("if (!");
-    DatamartAxis _axis_11 = category_axis.getAxis();
-    AxisEnum _name_18 = _axis_11.getName();
-    String _literal_7 = _name_18.getLiteral();
-    _builder_9.append(_literal_7, "    \t");
+    String _literal_7 = category_axis.getAxis().getName().getLiteral();
+    _builder_9.append(_literal_7, "\t    \t");
     _builder_9.append("AxisLabelSet) {");
     _builder_9.newLineIfNotEmpty();
-    _builder_9.append("    \t\t");
+    _builder_9.append("\t    \t\t");
     _builder_9.append("if (");
-    DatamartAxis _axis_12 = category_axis.getAxis();
-    AxisEnum _name_19 = _axis_12.getName();
-    String _literal_8 = _name_19.getLiteral();
-    _builder_9.append(_literal_8, "    \t\t");
+    String _literal_8 = category_axis.getAxis().getName().getLiteral();
+    _builder_9.append(_literal_8, "\t    \t\t");
     _builder_9.append("AxisLabel.length() > 0) {");
     _builder_9.newLineIfNotEmpty();
-    _builder_9.append("    \t\t\t");
-    DatamartAxis _axis_13 = category_axis.getAxis();
-    AxisEnum _name_20 = _axis_13.getName();
-    String _literal_9 = _name_20.getLiteral();
-    _builder_9.append(_literal_9, "    \t\t\t");
+    _builder_9.append("\t    \t\t\t");
+    String _literal_9 = category_axis.getAxis().getName().getLiteral();
+    _builder_9.append(_literal_9, "\t    \t\t\t");
     _builder_9.append("AxisLabel += \" / \";");
     _builder_9.newLineIfNotEmpty();
-    _builder_9.append("    \t\t");
+    _builder_9.append("\t    \t\t");
     _builder_9.append("}");
     _builder_9.newLine();
-    _builder_9.append("    \t\t");
-    DatamartAxis _axis_14 = category_axis.getAxis();
-    AxisEnum _name_21 = _axis_14.getName();
-    String _literal_10 = _name_21.getLiteral();
-    _builder_9.append(_literal_10, "    \t\t");
+    _builder_9.append("\t    \t\t");
+    String _literal_10 = category_axis.getAxis().getName().getLiteral();
+    _builder_9.append(_literal_10, "\t    \t\t");
     _builder_9.append("AxisLabel += dslMetadataService.translate(user.getLocale().toLanguageTag(), member.getLevel().getName());");
     _builder_9.newLineIfNotEmpty();
-    _builder_9.append("    \t");
+    _builder_9.append("\t    \t");
     _builder_9.append("}");
     _builder_9.newLine();
-    _builder_9.append("    \t");
+    _builder_9.append("\t    \t");
     _builder_9.append("int start = 1;");
     _builder_9.newLine();
-    _builder_9.append("    \t");
+    _builder_9.append("\t    \t");
     _builder_9.append("// if shortlabel is configured, use only last level name");
     _builder_9.newLine();
-    _builder_9.append("    \t");
+    _builder_9.append("\t    \t");
     _builder_9.append("if (");
-    boolean _isShortLabel = category_axis.isShortLabel();
-    boolean _booleanValue = Boolean.valueOf(_isShortLabel).booleanValue();
-    _builder_9.append(_booleanValue, "    \t");
+    boolean _booleanValue = Boolean.valueOf(category_axis.isShortLabel()).booleanValue();
+    _builder_9.append(_booleanValue, "\t    \t");
     _builder_9.append(") {");
     _builder_9.newLineIfNotEmpty();
-    _builder_9.append("    \t\t");
+    _builder_9.append("\t    \t\t");
     _builder_9.append("start = tokens.length-1;");
     _builder_9.newLine();
-    _builder_9.append("    \t");
+    _builder_9.append("\t    \t");
     _builder_9.append("}");
     _builder_9.newLine();
-    _builder_9.append("    \t");
+    _builder_9.append("\t    \t");
     _builder_9.append("for\t(int token = start; token < tokens.length; token++) {");
     _builder_9.newLine();
-    _builder_9.append("    \t\t");
+    _builder_9.append("\t    \t\t");
     _builder_9.append("title += dslMetadataService.translate(user.getLocale().toLanguageTag(), tokens[token])+\" \";");
     _builder_9.newLine();
-    _builder_9.append("    \t");
+    _builder_9.append("\t    \t");
+    _builder_9.append("}");
+    _builder_9.newLine();
+    _builder_9.append("\t    ");
     _builder_9.append("}");
     _builder_9.newLine();
     _builder_9.append("\t");
     _builder_9.append("}");
     _builder_9.newLine();
     _builder_9.append("\t");
-    DatamartAxis _axis_15 = category_axis.getAxis();
-    AxisEnum _name_22 = _axis_15.getName();
-    String _literal_11 = _name_22.getLiteral();
-    _builder_9.append(_literal_11, "\t");
+    _builder_9.append("if(title != null) {");
+    _builder_9.newLine();
+    _builder_9.append("\t\t");
+    String _literal_11 = category_axis.getAxis().getName().getLiteral();
+    _builder_9.append(_literal_11, "\t\t");
     _builder_9.append("AxisLabelSet = true;");
     _builder_9.newLineIfNotEmpty();
-    _builder_9.append("\t");
-    DatamartAxis _axis_16 = category_axis.getAxis();
-    AxisEnum _name_23 = _axis_16.getName();
-    String _literal_12 = _name_23.getLiteral();
-    _builder_9.append(_literal_12, "\t");
+    _builder_9.append("\t\t");
+    String _literal_12 = category_axis.getAxis().getName().getLiteral();
+    _builder_9.append(_literal_12, "\t\t");
     _builder_9.append("TitlesArray.add(title.trim().replace(\"[\", \"\").replace(\"]\", \"\"));");
     _builder_9.newLineIfNotEmpty();
+    _builder_9.append("\t");
+    _builder_9.append("}");
+    _builder_9.newLine();
     _builder_9.append("}");
     _builder_9.newLine();
     body = _builder_9.toString();
     if (hasAxis) {
       StringConcatenation _builder_10 = new StringConcatenation();
-      _builder_10.append(body, "");
+      _builder_10.append(body);
       _builder_10.append("Ticks ");
-      DatamartAxis _axis_17 = category_axis.getAxis();
-      AxisEnum _name_24 = _axis_17.getName();
-      String _literal_13 = _name_24.getLiteral();
-      _builder_10.append(_literal_13, "");
+      String _literal_13 = category_axis.getAxis().getName().getLiteral();
+      _builder_10.append(_literal_13);
       _builder_10.append("Ticks = new Ticks();");
       _builder_10.newLineIfNotEmpty();
-      DatamartAxis _axis_18 = category_axis.getAxis();
-      AxisEnum _name_25 = _axis_18.getName();
-      String _literal_14 = _name_25.getLiteral();
-      _builder_10.append(_literal_14, "");
+      String _literal_14 = category_axis.getAxis().getName().getLiteral();
+      _builder_10.append(_literal_14);
       _builder_10.append("Ticks.add(");
-      DatamartAxis _axis_19 = category_axis.getAxis();
-      AxisEnum _name_26 = _axis_19.getName();
-      String _literal_15 = _name_26.getLiteral();
-      _builder_10.append(_literal_15, "");
+      String _literal_15 = category_axis.getAxis().getName().getLiteral();
+      _builder_10.append(_literal_15);
       _builder_10.append("TitlesArray.toArray());");
       _builder_10.newLineIfNotEmpty();
       body = _builder_10.toString();
     }
     StringConcatenation _builder_11 = new StringConcatenation();
-    _builder_11.append(body, "");
-    _builder_11.append("// copy cellset data to data series");
+    _builder_11.append(body);
     _builder_11.newLineIfNotEmpty();
+    _builder_11.append("if(");
+    String _literal_16 = category_axis.getAxis().getName().getLiteral();
+    _builder_11.append(_literal_16);
+    _builder_11.append("TitlesArray.isEmpty()) {");
+    _builder_11.newLineIfNotEmpty();
+    _builder_11.append("\t");
+    _builder_11.append("return null;");
+    _builder_11.newLine();
+    _builder_11.append("}");
+    _builder_11.newLine();
+    _builder_11.append("// copy cellset data to data series");
+    _builder_11.newLine();
     _builder_11.append("DataSeries dataSeries = new DataSeries();");
     _builder_11.newLine();
     body = _builder_11.toString();
     ChartOption _charttype_10 = chart.getCharttype();
     if ((_charttype_10 instanceof ChartBubble)) {
       StringConcatenation _builder_12 = new StringConcatenation();
-      _builder_12.append(body, "");
+      _builder_12.append(body);
       _builder_12.append("dataSeries.newSeries();");
       _builder_12.newLineIfNotEmpty();
       body = _builder_12.toString();
     }
     StringConcatenation _builder_13 = new StringConcatenation();
-    _builder_13.append(body, "");
+    _builder_13.append(body);
     _builder_13.append("int ");
-    DatamartAxis _axis_20 = outer_axis.getAxis();
-    AxisEnum _name_27 = _axis_20.getName();
-    String _literal_16 = _name_27.getLiteral();
-    _builder_13.append(_literal_16, "");
+    String _literal_17 = outer_axis.getAxis().getName().getLiteral();
+    _builder_13.append(_literal_17);
     _builder_13.append("No = 0;");
     _builder_13.newLineIfNotEmpty();
     body = _builder_13.toString();
     StringConcatenation _builder_14 = new StringConcatenation();
-    _builder_14.append(body, "");
+    _builder_14.append(body);
     _builder_14.append("for\t(DerivedPosition ");
-    DatamartAxis _axis_21 = outer_axis.getAxis();
-    AxisEnum _name_28 = _axis_21.getName();
-    String _literal_17 = _name_28.getLiteral();
-    _builder_14.append(_literal_17, "");
+    String _literal_18 = outer_axis.getAxis().getName().getLiteral();
+    _builder_14.append(_literal_18);
     _builder_14.append("Pos : cellSet.getAxes().get(");
-    DatamartAxis _axis_22 = outer_axis.getAxis();
-    AxisEnum _name_29 = _axis_22.getName();
-    int _value_2 = _name_29.getValue();
-    _builder_14.append(_value_2, "");
+    int _value_2 = outer_axis.getAxis().getName().getValue();
+    _builder_14.append(_value_2);
     _builder_14.append(").getPositions()) {");
     _builder_14.newLineIfNotEmpty();
     body = _builder_14.toString();
     StringConcatenation _builder_15 = new StringConcatenation();
-    _builder_15.append(body, "");
+    _builder_15.append(body);
     _builder_15.append("\tcoordinate.set(");
-    DatamartAxis _axis_23 = outer_axis.getAxis();
-    AxisEnum _name_30 = _axis_23.getName();
-    int _value_3 = _name_30.getValue();
-    _builder_15.append(_value_3, "");
+    int _value_3 = outer_axis.getAxis().getName().getValue();
+    _builder_15.append(_value_3);
     _builder_15.append(", ");
-    DatamartAxis _axis_24 = outer_axis.getAxis();
-    AxisEnum _name_31 = _axis_24.getName();
-    String _literal_18 = _name_31.getLiteral();
-    _builder_15.append(_literal_18, "");
+    String _literal_19 = outer_axis.getAxis().getName().getLiteral();
+    _builder_15.append(_literal_19);
     _builder_15.append("No);");
     _builder_15.newLineIfNotEmpty();
     body = _builder_15.toString();
     ChartOption _charttype_11 = chart.getCharttype();
     if ((_charttype_11 instanceof ChartDonut)) {
       StringConcatenation _builder_16 = new StringConcatenation();
-      _builder_16.append(body, "");
+      _builder_16.append(body);
       _builder_16.append("\tdataSeries.newSeries();");
       _builder_16.newLineIfNotEmpty();
       body = _builder_16.toString();
     }
     if (((!(chart.getCharttype() instanceof ChartPie)) && (!(chart.getCharttype() instanceof ChartDonut)))) {
       StringConcatenation _builder_17 = new StringConcatenation();
-      _builder_17.append(body, "");
+      _builder_17.append(body);
       _builder_17.append("\tArrayList<Object> ");
-      DatamartAxis _axis_25 = inner_axis.getAxis();
-      AxisEnum _name_32 = _axis_25.getName();
-      String _literal_19 = _name_32.getLiteral();
-      _builder_17.append(_literal_19, "");
+      String _literal_20 = inner_axis.getAxis().getName().getLiteral();
+      _builder_17.append(_literal_20);
       _builder_17.append("DataSeries = new ArrayList<Object>();");
       _builder_17.newLineIfNotEmpty();
       body = _builder_17.toString();
     }
     StringConcatenation _builder_18 = new StringConcatenation();
-    _builder_18.append(body, "");
-    _builder_18.append("\tint ");
-    DatamartAxis _axis_26 = inner_axis.getAxis();
-    AxisEnum _name_33 = _axis_26.getName();
-    String _literal_20 = _name_33.getLiteral();
-    _builder_18.append(_literal_20, "");
-    _builder_18.append("No = 0;");
+    _builder_18.append(body);
+    _builder_18.append("\tif(");
+    String _literal_21 = outer_axis.getAxis().getName().getLiteral();
+    _builder_18.append(_literal_21);
+    _builder_18.append("Pos.getMembers().get(0).getType() == MemberType.");
+    {
+      boolean _equals = Objects.equal(outer_axis, data_axis);
+      if (_equals) {
+        _builder_18.append("MEASURE");
+      } else {
+        _builder_18.append("REGULAR");
+      }
+    }
+    _builder_18.append(") {");
     _builder_18.newLineIfNotEmpty();
     body = _builder_18.toString();
     StringConcatenation _builder_19 = new StringConcatenation();
-    _builder_19.append(body, "");
-    _builder_19.append("\tfor\t(DerivedPosition ");
-    DatamartAxis _axis_27 = inner_axis.getAxis();
-    AxisEnum _name_34 = _axis_27.getName();
-    String _literal_21 = _name_34.getLiteral();
-    _builder_19.append(_literal_21, "");
-    _builder_19.append("Pos : cellSet.getAxes().get(");
-    DatamartAxis _axis_28 = inner_axis.getAxis();
-    AxisEnum _name_35 = _axis_28.getName();
-    int _value_4 = _name_35.getValue();
-    _builder_19.append(_value_4, "");
-    _builder_19.append(").getPositions()) {");
+    _builder_19.append(body);
+    _builder_19.append("\t\tint ");
+    String _literal_22 = inner_axis.getAxis().getName().getLiteral();
+    _builder_19.append(_literal_22);
+    _builder_19.append("No = 0;");
     _builder_19.newLineIfNotEmpty();
     body = _builder_19.toString();
-    ChartOption _charttype_12 = chart.getCharttype();
-    if ((_charttype_12 instanceof ChartPie)) {
-      StringConcatenation _builder_20 = new StringConcatenation();
-      _builder_20.append(body, "");
-      _builder_20.append("\t\tdataSeries.newSeries();");
-      _builder_20.newLineIfNotEmpty();
-      body = _builder_20.toString();
-    }
+    StringConcatenation _builder_20 = new StringConcatenation();
+    _builder_20.append(body);
+    _builder_20.append("\t\tfor\t(DerivedPosition ");
+    String _literal_23 = inner_axis.getAxis().getName().getLiteral();
+    _builder_20.append(_literal_23);
+    _builder_20.append("Pos : cellSet.getAxes().get(");
+    int _value_4 = inner_axis.getAxis().getName().getValue();
+    _builder_20.append(_value_4);
+    _builder_20.append(").getPositions()) {");
+    _builder_20.newLineIfNotEmpty();
+    body = _builder_20.toString();
     StringConcatenation _builder_21 = new StringConcatenation();
-    _builder_21.append(body, "");
-    _builder_21.append("\t\tcoordinate.set(");
-    DatamartAxis _axis_29 = inner_axis.getAxis();
-    AxisEnum _name_36 = _axis_29.getName();
-    int _value_5 = _name_36.getValue();
-    _builder_21.append(_value_5, "");
-    _builder_21.append(", ");
-    DatamartAxis _axis_30 = inner_axis.getAxis();
-    AxisEnum _name_37 = _axis_30.getName();
-    String _literal_22 = _name_37.getLiteral();
-    _builder_21.append(_literal_22, "");
-    _builder_21.append("No);");
+    _builder_21.append(body);
+    _builder_21.append("\t\t\tif(");
+    String _literal_24 = inner_axis.getAxis().getName().getLiteral();
+    _builder_21.append(_literal_24);
+    _builder_21.append("Pos.getMembers().get(0).getType() == MemberType.");
+    {
+      boolean _equals_1 = Objects.equal(inner_axis, data_axis);
+      if (_equals_1) {
+        _builder_21.append("MEASURE");
+      } else {
+        _builder_21.append("REGULAR");
+      }
+    }
+    _builder_21.append(") {");
     _builder_21.newLineIfNotEmpty();
     body = _builder_21.toString();
-    StringConcatenation _builder_22 = new StringConcatenation();
-    _builder_22.append(body, "");
-    _builder_22.newLineIfNotEmpty();
-    _builder_22.append("\t\t");
-    _builder_22.append("Object value = null;");
-    _builder_22.newLine();
-    _builder_22.append("\t\t");
-    _builder_22.append("DerivedCell cell = cellSet.getCell(coordinate);");
-    _builder_22.newLine();
-    _builder_22.append("\t\t");
-    _builder_22.append("if (cell != null) {");
-    _builder_22.newLine();
-    _builder_22.append("\t\t\t");
-    _builder_22.append("value = cell.getValue();");
-    _builder_22.newLine();
-    _builder_22.append("\t\t");
-    _builder_22.append("}");
-    _builder_22.newLine();
-    body = _builder_22.toString();
-    boolean _or_4 = false;
-    ChartOption _charttype_13 = chart.getCharttype();
-    if ((_charttype_13 instanceof ChartPie)) {
-      _or_4 = true;
-    } else {
-      ChartOption _charttype_14 = chart.getCharttype();
-      _or_4 = (_charttype_14 instanceof ChartDonut);
+    ChartOption _charttype_12 = chart.getCharttype();
+    if ((_charttype_12 instanceof ChartPie)) {
+      StringConcatenation _builder_22 = new StringConcatenation();
+      _builder_22.append(body);
+      _builder_22.append("\t\t\t\tdataSeries.newSeries();");
+      _builder_22.newLineIfNotEmpty();
+      body = _builder_22.toString();
     }
-    if (_or_4) {
-      StringConcatenation _builder_23 = new StringConcatenation();
-      _builder_23.append(body, "");
-      _builder_23.append("\t\tdataSeries.add(");
-      DatamartAxis _axis_31 = outer_axis.getAxis();
-      AxisEnum _name_38 = _axis_31.getName();
-      String _literal_23 = _name_38.getLiteral();
-      _builder_23.append(_literal_23, "");
-      _builder_23.append("TitlesArray.get(");
-      DatamartAxis _axis_32 = outer_axis.getAxis();
-      AxisEnum _name_39 = _axis_32.getName();
-      String _literal_24 = _name_39.getLiteral();
-      _builder_23.append(_literal_24, "");
-      _builder_23.append("No)+\" \"+");
-      DatamartAxis _axis_33 = inner_axis.getAxis();
-      AxisEnum _name_40 = _axis_33.getName();
-      String _literal_25 = _name_40.getLiteral();
-      _builder_23.append(_literal_25, "");
-      _builder_23.append("TitlesArray.get(");
-      DatamartAxis _axis_34 = inner_axis.getAxis();
-      AxisEnum _name_41 = _axis_34.getName();
-      String _literal_26 = _name_41.getLiteral();
-      _builder_23.append(_literal_26, "");
-      _builder_23.append("No),(value == null ? 0.0 : value));");
-      _builder_23.newLineIfNotEmpty();
-      body = _builder_23.toString();
+    StringConcatenation _builder_23 = new StringConcatenation();
+    _builder_23.append(body);
+    _builder_23.append("\t\t\t\tcoordinate.set(");
+    int _value_5 = inner_axis.getAxis().getName().getValue();
+    _builder_23.append(_value_5);
+    _builder_23.append(", ");
+    String _literal_25 = inner_axis.getAxis().getName().getLiteral();
+    _builder_23.append(_literal_25);
+    _builder_23.append("No);");
+    _builder_23.newLineIfNotEmpty();
+    body = _builder_23.toString();
+    StringConcatenation _builder_24 = new StringConcatenation();
+    _builder_24.append(body);
+    _builder_24.newLineIfNotEmpty();
+    _builder_24.append("\t\t\t\t");
+    _builder_24.append("Object value = null;");
+    _builder_24.newLine();
+    _builder_24.append("\t\t\t\t");
+    _builder_24.append("DerivedCell cell = cellSet.getCell(coordinate);");
+    _builder_24.newLine();
+    _builder_24.append("\t\t\t\t");
+    _builder_24.append("if (cell != null) {");
+    _builder_24.newLine();
+    _builder_24.append("\t\t\t\t\t");
+    _builder_24.append("value = cell.getValue();");
+    _builder_24.newLine();
+    _builder_24.append("\t\t\t\t");
+    _builder_24.append("}");
+    _builder_24.newLine();
+    body = _builder_24.toString();
+    if (((chart.getCharttype() instanceof ChartPie) || (chart.getCharttype() instanceof ChartDonut))) {
+      StringConcatenation _builder_25 = new StringConcatenation();
+      _builder_25.append(body);
+      _builder_25.append("\t\t\t\tdataSeries.add(");
+      String _literal_26 = outer_axis.getAxis().getName().getLiteral();
+      _builder_25.append(_literal_26);
+      _builder_25.append("TitlesArray.get(");
+      String _literal_27 = outer_axis.getAxis().getName().getLiteral();
+      _builder_25.append(_literal_27);
+      _builder_25.append("No)+\" \"+");
+      String _literal_28 = inner_axis.getAxis().getName().getLiteral();
+      _builder_25.append(_literal_28);
+      _builder_25.append("TitlesArray.get(");
+      String _literal_29 = inner_axis.getAxis().getName().getLiteral();
+      _builder_25.append(_literal_29);
+      _builder_25.append("No),(value == null ? 0.0 : value));");
+      _builder_25.newLineIfNotEmpty();
+      body = _builder_25.toString();
     } else {
-      StringConcatenation _builder_24 = new StringConcatenation();
-      _builder_24.append(body, "");
-      _builder_24.append("\t\t");
-      DatamartAxis _axis_35 = inner_axis.getAxis();
-      AxisEnum _name_42 = _axis_35.getName();
-      String _literal_27 = _name_42.getLiteral();
-      _builder_24.append(_literal_27, "");
-      _builder_24.append("DataSeries.add(value == null ? 0.0 : value);");
-      _builder_24.newLineIfNotEmpty();
-      body = _builder_24.toString();
+      StringConcatenation _builder_26 = new StringConcatenation();
+      _builder_26.append(body);
+      _builder_26.append("\t\t\t\t");
+      String _literal_30 = inner_axis.getAxis().getName().getLiteral();
+      _builder_26.append(_literal_30);
+      _builder_26.append("DataSeries.add(value == null ? 0.0 : value);");
+      _builder_26.newLineIfNotEmpty();
+      body = _builder_26.toString();
     }
-    StringConcatenation _builder_25 = new StringConcatenation();
-    _builder_25.append(body, "");
-    _builder_25.append("\t\t");
-    DatamartAxis _axis_36 = inner_axis.getAxis();
-    AxisEnum _name_43 = _axis_36.getName();
-    String _literal_28 = _name_43.getLiteral();
-    _builder_25.append(_literal_28, "");
-    _builder_25.append("No ++;");
-    _builder_25.newLineIfNotEmpty();
-    _builder_25.append("\t");
-    _builder_25.append("}");
-    _builder_25.newLine();
-    body = _builder_25.toString();
+    StringConcatenation _builder_27 = new StringConcatenation();
+    _builder_27.append(body);
+    _builder_27.append("\t\t\t\t");
+    String _literal_31 = inner_axis.getAxis().getName().getLiteral();
+    _builder_27.append(_literal_31);
+    _builder_27.append("No ++;");
+    _builder_27.newLineIfNotEmpty();
+    _builder_27.append("\t\t\t");
+    _builder_27.append("}");
+    _builder_27.newLine();
+    _builder_27.append("\t\t");
+    _builder_27.append("}");
+    _builder_27.newLine();
+    body = _builder_27.toString();
     if (((!(chart.getCharttype() instanceof ChartPie)) && (!(chart.getCharttype() instanceof ChartDonut)))) {
+      ChartOption _charttype_13 = chart.getCharttype();
+      if ((_charttype_13 instanceof ChartBubble)) {
+        StringConcatenation _builder_28 = new StringConcatenation();
+        _builder_28.append(body);
+        _builder_28.append("\t\t\t");
+        String _literal_32 = inner_axis.getAxis().getName().getLiteral();
+        _builder_28.append(_literal_32);
+        _builder_28.append("DataSeries.add(");
+        String _literal_33 = outer_axis.getAxis().getName().getLiteral();
+        _builder_28.append(_literal_33);
+        _builder_28.append("TitlesArray.get(");
+        String _literal_34 = outer_axis.getAxis().getName().getLiteral();
+        _builder_28.append(_literal_34);
+        _builder_28.append("No));");
+        _builder_28.newLineIfNotEmpty();
+        body = _builder_28.toString();
+      }
+      StringConcatenation _builder_29 = new StringConcatenation();
+      _builder_29.append(body);
+      _builder_29.append("\t\tdataSeries.add(");
+      String _literal_35 = inner_axis.getAxis().getName().getLiteral();
+      _builder_29.append(_literal_35);
+      _builder_29.append("DataSeries.toArray());");
+      _builder_29.newLineIfNotEmpty();
+      body = _builder_29.toString();
+    }
+    StringConcatenation _builder_30 = new StringConcatenation();
+    _builder_30.append(body);
+    _builder_30.append("\t}");
+    _builder_30.newLineIfNotEmpty();
+    _builder_30.append("\t");
+    String _literal_36 = outer_axis.getAxis().getName().getLiteral();
+    _builder_30.append(_literal_36, "\t");
+    _builder_30.append("No ++;");
+    _builder_30.newLineIfNotEmpty();
+    _builder_30.append("}");
+    _builder_30.newLine();
+    body = _builder_30.toString();
+    StringConcatenation _builder_31 = new StringConcatenation();
+    _builder_31.append(body);
+    _builder_31.append("SeriesDefaults seriesDefaults = new SeriesDefaults()");
+    _builder_31.newLineIfNotEmpty();
+    _builder_31.append("\t");
+    _builder_31.append(".setRenderer(SeriesRenderers.");
+    _builder_31.append(chartType, "\t");
+    _builder_31.append(");");
+    _builder_31.newLineIfNotEmpty();
+    body = _builder_31.toString();
+    ChartOption _charttype_14 = chart.getCharttype();
+    if ((_charttype_14 instanceof ChartLine)) {
+      StringConcatenation _builder_32 = new StringConcatenation();
+      _builder_32.append(body);
+      _builder_32.append("seriesDefaults.setFillToZero(");
       ChartOption _charttype_15 = chart.getCharttype();
-      if ((_charttype_15 instanceof ChartBubble)) {
-        StringConcatenation _builder_26 = new StringConcatenation();
-        _builder_26.append(body, "");
-        _builder_26.append("\t");
-        DatamartAxis _axis_37 = inner_axis.getAxis();
-        AxisEnum _name_44 = _axis_37.getName();
-        String _literal_29 = _name_44.getLiteral();
-        _builder_26.append(_literal_29, "");
-        _builder_26.append("DataSeries.add(");
-        DatamartAxis _axis_38 = outer_axis.getAxis();
-        AxisEnum _name_45 = _axis_38.getName();
-        String _literal_30 = _name_45.getLiteral();
-        _builder_26.append(_literal_30, "");
-        _builder_26.append("TitlesArray.get(");
-        DatamartAxis _axis_39 = outer_axis.getAxis();
-        AxisEnum _name_46 = _axis_39.getName();
-        String _literal_31 = _name_46.getLiteral();
-        _builder_26.append(_literal_31, "");
-        _builder_26.append("No));");
-        _builder_26.newLineIfNotEmpty();
-        body = _builder_26.toString();
-      }
-      StringConcatenation _builder_27 = new StringConcatenation();
-      _builder_27.append(body, "");
-      _builder_27.append("\tdataSeries.add(");
-      DatamartAxis _axis_40 = inner_axis.getAxis();
-      AxisEnum _name_47 = _axis_40.getName();
-      String _literal_32 = _name_47.getLiteral();
-      _builder_27.append(_literal_32, "");
-      _builder_27.append("DataSeries.toArray());");
-      _builder_27.newLineIfNotEmpty();
-      body = _builder_27.toString();
-    }
-    StringConcatenation _builder_28 = new StringConcatenation();
-    _builder_28.append(body, "");
-    _builder_28.append("\t");
-    DatamartAxis _axis_41 = outer_axis.getAxis();
-    AxisEnum _name_48 = _axis_41.getName();
-    String _literal_33 = _name_48.getLiteral();
-    _builder_28.append(_literal_33, "");
-    _builder_28.append("No ++;");
-    _builder_28.newLineIfNotEmpty();
-    _builder_28.append("}");
-    _builder_28.newLine();
-    body = _builder_28.toString();
-    StringConcatenation _builder_29 = new StringConcatenation();
-    _builder_29.append(body, "");
-    _builder_29.append("SeriesDefaults seriesDefaults = new SeriesDefaults()");
-    _builder_29.newLineIfNotEmpty();
-    _builder_29.append("\t");
-    _builder_29.append(".setRenderer(SeriesRenderers.");
-    _builder_29.append(chartType, "\t");
-    _builder_29.append(");");
-    _builder_29.newLineIfNotEmpty();
-    body = _builder_29.toString();
-    ChartOption _charttype_16 = chart.getCharttype();
-    if ((_charttype_16 instanceof ChartLine)) {
-      StringConcatenation _builder_30 = new StringConcatenation();
-      _builder_30.append(body, "");
-      _builder_30.append("seriesDefaults.setFillToZero(");
+      String _string = Boolean.valueOf(Boolean.valueOf(((ChartLine) _charttype_15).isFillToZero()).booleanValue()).toString();
+      _builder_32.append(_string);
+      _builder_32.append(").setFill(");
+      ChartOption _charttype_16 = chart.getCharttype();
+      String _string_1 = Boolean.valueOf(((ChartLine) _charttype_16).isFillArea()).toString();
+      _builder_32.append(_string_1);
+      _builder_32.append(");");
+      _builder_32.newLineIfNotEmpty();
+      body = _builder_32.toString();
       ChartOption _charttype_17 = chart.getCharttype();
-      boolean _isFillToZero = ((ChartLine) _charttype_17).isFillToZero();
-      boolean _booleanValue_1 = Boolean.valueOf(_isFillToZero).booleanValue();
-      String _string = Boolean.valueOf(_booleanValue_1).toString();
-      _builder_30.append(_string, "");
-      _builder_30.append(").setFill(");
-      ChartOption _charttype_18 = chart.getCharttype();
-      boolean _isFillArea = ((ChartLine) _charttype_18).isFillArea();
-      String _string_1 = Boolean.valueOf(_isFillArea).toString();
-      _builder_30.append(_string_1, "");
-      _builder_30.append(");");
-      _builder_30.newLineIfNotEmpty();
-      body = _builder_30.toString();
-      ChartOption _charttype_19 = chart.getCharttype();
-      boolean _isTrendLine = ((ChartLine) _charttype_19).isTrendLine();
+      boolean _isTrendLine = ((ChartLine) _charttype_17).isTrendLine();
       if (_isTrendLine) {
-        StringConcatenation _builder_31 = new StringConcatenation();
-        _builder_31.append(body, "");
-        _builder_31.append("seriesDefaults.setTrendline(");
-        _builder_31.newLineIfNotEmpty();
-        _builder_31.append("\t");
-        _builder_31.append("new Trendline().setShow(true).setLineWidth(1));");
-        _builder_31.newLine();
-        body = _builder_31.toString();
+        StringConcatenation _builder_33 = new StringConcatenation();
+        _builder_33.append(body);
+        _builder_33.append("seriesDefaults.setTrendline(");
+        _builder_33.newLineIfNotEmpty();
+        _builder_33.append("\t");
+        _builder_33.append("new Trendline().setShow(true).setLineWidth(1));");
+        _builder_33.newLine();
+        body = _builder_33.toString();
       }
     }
-    StringConcatenation _builder_32 = new StringConcatenation();
-    _builder_32.append(body, "");
-    _builder_32.append("Options options = new Options()");
-    _builder_32.newLineIfNotEmpty();
-    _builder_32.append("\t");
-    _builder_32.append(".setSeriesDefaults(seriesDefaults);");
-    _builder_32.newLine();
-    body = _builder_32.toString();
-    ChartOption _charttype_20 = chart.getCharttype();
-    if ((_charttype_20 instanceof ChartPie)) {
-      StringConcatenation _builder_33 = new StringConcatenation();
-      _builder_33.append(body, "");
-      _builder_33.append("seriesDefaults.setRendererOptions(new PieRenderer()");
-      _builder_33.newLineIfNotEmpty();
-      _builder_33.append("\t");
-      _builder_33.append(".setShowDataLabels(true).setFill(");
-      ChartOption _charttype_21 = chart.getCharttype();
-      boolean _isEmpty = ((ChartPie) _charttype_21).isEmpty();
-      boolean _not = (!_isEmpty);
-      String _string_2 = Boolean.valueOf(_not).toString();
-      _builder_33.append(_string_2, "\t");
-      _builder_33.append("));");
-      _builder_33.newLineIfNotEmpty();
-      body = _builder_33.toString();
+    StringConcatenation _builder_34 = new StringConcatenation();
+    _builder_34.append(body);
+    _builder_34.append("Options options = new Options()");
+    _builder_34.newLineIfNotEmpty();
+    _builder_34.append("\t");
+    _builder_34.append(".setSeriesDefaults(seriesDefaults);");
+    _builder_34.newLine();
+    body = _builder_34.toString();
+    ChartOption _charttype_18 = chart.getCharttype();
+    if ((_charttype_18 instanceof ChartPie)) {
+      StringConcatenation _builder_35 = new StringConcatenation();
+      _builder_35.append(body);
+      _builder_35.append("seriesDefaults.setRendererOptions(new PieRenderer()");
+      _builder_35.newLineIfNotEmpty();
+      _builder_35.append("\t");
+      _builder_35.append(".setShowDataLabels(true).setFill(");
+      ChartOption _charttype_19 = chart.getCharttype();
+      boolean _isEmpty = ((ChartPie) _charttype_19).isEmpty();
+      String _string_2 = Boolean.valueOf((!_isEmpty)).toString();
+      _builder_35.append(_string_2, "\t");
+      _builder_35.append("));");
+      _builder_35.newLineIfNotEmpty();
+      body = _builder_35.toString();
     } else {
-      ChartOption _charttype_22 = chart.getCharttype();
-      if ((_charttype_22 instanceof ChartDonut)) {
-        StringConcatenation _builder_34 = new StringConcatenation();
-        _builder_34.append(body, "");
-        _builder_34.append("seriesDefaults.setRendererOptions(new DonutRenderer()");
-        _builder_34.newLineIfNotEmpty();
-        _builder_34.append("\t");
-        _builder_34.append(".setShowDataLabels(true)");
-        _builder_34.newLine();
-        _builder_34.append("\t");
-        _builder_34.append(".setStartAngle(-90)");
-        _builder_34.newLine();
-        _builder_34.append("\t");
-        _builder_34.append(".setSliceMargin(3));");
-        _builder_34.newLine();
-        body = _builder_34.toString();
+      ChartOption _charttype_20 = chart.getCharttype();
+      if ((_charttype_20 instanceof ChartDonut)) {
+        StringConcatenation _builder_36 = new StringConcatenation();
+        _builder_36.append(body);
+        _builder_36.append("seriesDefaults.setRendererOptions(new DonutRenderer()");
+        _builder_36.newLineIfNotEmpty();
+        _builder_36.append("\t");
+        _builder_36.append(".setShowDataLabels(true)");
+        _builder_36.newLine();
+        _builder_36.append("\t");
+        _builder_36.append(".setStartAngle(-90)");
+        _builder_36.newLine();
+        _builder_36.append("\t");
+        _builder_36.append(".setSliceMargin(3));");
+        _builder_36.newLine();
+        body = _builder_36.toString();
       } else {
-        ChartOption _charttype_23 = chart.getCharttype();
-        if ((_charttype_23 instanceof ChartBubble)) {
-          StringConcatenation _builder_35 = new StringConcatenation();
-          _builder_35.append(body, "");
-          _builder_35.append("seriesDefaults.setRendererOptions(new BubbleRenderer()");
-          _builder_35.newLineIfNotEmpty();
-          _builder_35.append("\t");
-          _builder_35.append(".setVaryBubbleColors(true)");
-          _builder_35.newLine();
-          _builder_35.append("\t");
+        ChartOption _charttype_21 = chart.getCharttype();
+        if ((_charttype_21 instanceof ChartBubble)) {
+          StringConcatenation _builder_37 = new StringConcatenation();
+          _builder_37.append(body);
+          _builder_37.append("seriesDefaults.setRendererOptions(new BubbleRenderer()");
+          _builder_37.newLineIfNotEmpty();
+          _builder_37.append("\t");
+          _builder_37.append(".setVaryBubbleColors(true)");
+          _builder_37.newLine();
+          _builder_37.append("\t");
+          {
+            ChartOption _charttype_22 = chart.getCharttype();
+            boolean _isMultiplier = ((ChartBubble) _charttype_22).isMultiplier();
+            if (_isMultiplier) {
+              _builder_37.append(".setAutoscaleMultiplier(");
+              ChartOption _charttype_23 = chart.getCharttype();
+              String _multiplierValue = ((ChartBubble) _charttype_23).getMultiplierValue();
+              _builder_37.append(_multiplierValue, "\t");
+              _builder_37.append("f)");
+            }
+          }
+          _builder_37.newLineIfNotEmpty();
+          _builder_37.append("    ");
           {
             ChartOption _charttype_24 = chart.getCharttype();
-            boolean _isMultiplier = ((ChartBubble) _charttype_24).isMultiplier();
-            if (_isMultiplier) {
-              _builder_35.append(".setAutoscaleMultiplier(");
-              ChartOption _charttype_25 = chart.getCharttype();
-              String _multiplierValue = ((ChartBubble) _charttype_25).getMultiplierValue();
-              _builder_35.append(_multiplierValue, "\t");
-              _builder_35.append("f)");
-            }
-          }
-          _builder_35.newLineIfNotEmpty();
-          _builder_35.append("    ");
-          {
-            ChartOption _charttype_26 = chart.getCharttype();
-            boolean _isTransparent = ((ChartBubble) _charttype_26).isTransparent();
+            boolean _isTransparent = ((ChartBubble) _charttype_24).isTransparent();
             if (_isTransparent) {
-              _builder_35.append(".setHighlightAlpha(0.8f).setBubbleAlpha(0.6f)");
+              _builder_37.append(".setHighlightAlpha(0.8f).setBubbleAlpha(0.6f)");
             }
           }
-          _builder_35.newLineIfNotEmpty();
-          _builder_35.append("\t");
+          _builder_37.newLineIfNotEmpty();
+          _builder_37.append("\t");
           {
-            ChartOption _charttype_27 = chart.getCharttype();
-            boolean _isGradient = ((ChartBubble) _charttype_27).isGradient();
+            ChartOption _charttype_25 = chart.getCharttype();
+            boolean _isGradient = ((ChartBubble) _charttype_25).isGradient();
             if (_isGradient) {
-              _builder_35.append(".setBubbleGradients(true)");
+              _builder_37.append(".setBubbleGradients(true)");
             }
           }
-          _builder_35.newLineIfNotEmpty();
-          _builder_35.append("\t");
-          _builder_35.append(".setShowLabels(false)");
-          _builder_35.newLine();
-          _builder_35.append("\t");
-          _builder_35.append(".setAutoscaleBubbles(true));");
-          _builder_35.newLine();
-          body = _builder_35.toString();
+          _builder_37.newLineIfNotEmpty();
+          _builder_37.append("\t");
+          _builder_37.append(".setShowLabels(false)");
+          _builder_37.newLine();
+          _builder_37.append("\t");
+          _builder_37.append(".setAutoscaleBubbles(true));");
+          _builder_37.newLine();
+          body = _builder_37.toString();
         } else {
-          ChartOption _charttype_28 = chart.getCharttype();
-          if ((_charttype_28 instanceof ChartGauge)) {
+          ChartOption _charttype_26 = chart.getCharttype();
+          if ((_charttype_26 instanceof ChartGauge)) {
             String intervalValues = "";
             String intervalColors = "";
-            ChartOption _charttype_29 = chart.getCharttype();
-            boolean _isHasIntervals = ((ChartGauge) _charttype_29).isHasIntervals();
+            ChartOption _charttype_27 = chart.getCharttype();
+            boolean _isHasIntervals = ((ChartGauge) _charttype_27).isHasIntervals();
             if (_isHasIntervals) {
-              ChartOption _charttype_30 = chart.getCharttype();
-              EList<ChartInterval> _intervals = ((ChartGauge) _charttype_30).getIntervals();
+              ChartOption _charttype_28 = chart.getCharttype();
+              EList<ChartInterval> _intervals = ((ChartGauge) _charttype_28).getIntervals();
               for (final ChartInterval interval : _intervals) {
                 if ((interval instanceof ChartNumberInterval)) {
-                  StringConcatenation _builder_36 = new StringConcatenation();
-                  _builder_36.append(intervalValues, "");
+                  StringConcatenation _builder_38 = new StringConcatenation();
+                  _builder_38.append(intervalValues);
                   {
                     int _length = intervalValues.length();
                     boolean _greaterThan = (_length > 0);
                     if (_greaterThan) {
-                      _builder_36.append(",");
+                      _builder_38.append(",");
                     }
                   }
                   int _numberIntervalValue = ((ChartNumberInterval) interval).getNumberIntervalValue();
-                  _builder_36.append(_numberIntervalValue, "");
-                  _builder_36.append("f");
-                  intervalValues = _builder_36.toString();
+                  _builder_38.append(_numberIntervalValue);
+                  _builder_38.append("f");
+                  intervalValues = _builder_38.toString();
                   ChartRangeElement _numberRange = ((ChartNumberInterval) interval).getNumberRange();
                   if ((_numberRange instanceof ChartSegmentColor)) {
-                    StringConcatenation _builder_37 = new StringConcatenation();
-                    _builder_37.append(intervalColors, "");
+                    StringConcatenation _builder_39 = new StringConcatenation();
+                    _builder_39.append(intervalColors);
                     {
                       int _length_1 = intervalColors.length();
                       boolean _greaterThan_1 = (_length_1 > 0);
                       if (_greaterThan_1) {
-                        _builder_37.append(",");
+                        _builder_39.append(",");
                       }
                     }
-                    _builder_37.append("\"");
+                    _builder_39.append("\"");
                     ChartRangeElement _numberRange_1 = ((ChartNumberInterval) interval).getNumberRange();
-                    String _rgb = ((ChartSegmentColor) _numberRange_1).getRgb();
-                    String _hex = this.toHex(_rgb);
-                    _builder_37.append(_hex, "");
-                    _builder_37.append("\"");
-                    intervalColors = _builder_37.toString();
+                    String _hex = this.toHex(((ChartSegmentColor) _numberRange_1).getRgb());
+                    _builder_39.append(_hex);
+                    _builder_39.append("\"");
+                    intervalColors = _builder_39.toString();
                   }
                 }
               }
             }
-            StringConcatenation _builder_38 = new StringConcatenation();
-            _builder_38.append(body, "");
-            _builder_38.append("seriesDefaults.setRendererOptions(new MeterGaugeRenderer()");
-            _builder_38.newLineIfNotEmpty();
-            _builder_38.append("\t");
-            _builder_38.append(".setShowTickLabels(");
-            ChartOption _charttype_31 = chart.getCharttype();
-            boolean _isHasTicks = ((ChartGauge) _charttype_31).isHasTicks();
-            String _string_3 = Boolean.valueOf(_isHasTicks).toString();
-            _builder_38.append(_string_3, "\t");
-            _builder_38.append(")");
-            _builder_38.newLineIfNotEmpty();
-            _builder_38.append("\t");
+            StringConcatenation _builder_40 = new StringConcatenation();
+            _builder_40.append(body);
+            _builder_40.append("seriesDefaults.setRendererOptions(new MeterGaugeRenderer()");
+            _builder_40.newLineIfNotEmpty();
+            _builder_40.append("\t");
+            _builder_40.append(".setShowTickLabels(");
+            ChartOption _charttype_29 = chart.getCharttype();
+            String _string_3 = Boolean.valueOf(((ChartGauge) _charttype_29).isHasTicks()).toString();
+            _builder_40.append(_string_3, "\t");
+            _builder_40.append(")");
+            _builder_40.newLineIfNotEmpty();
+            _builder_40.append("\t");
+            {
+              ChartOption _charttype_30 = chart.getCharttype();
+              boolean _isLabeled = ((ChartGauge) _charttype_30).isLabeled();
+              if (_isLabeled) {
+                _builder_40.append(".setLabel(\"");
+                ChartOption _charttype_31 = chart.getCharttype();
+                String _labelValue = ((ChartGauge) _charttype_31).getLabelValue();
+                _builder_40.append(_labelValue, "\t");
+                _builder_40.append("\")");
+              }
+            }
+            _builder_40.newLineIfNotEmpty();
+            _builder_40.append("\t");
             {
               ChartOption _charttype_32 = chart.getCharttype();
-              boolean _isLabeled = ((ChartGauge) _charttype_32).isLabeled();
-              if (_isLabeled) {
-                _builder_38.append(".setLabel(\"");
-                ChartOption _charttype_33 = chart.getCharttype();
-                String _labelValue = ((ChartGauge) _charttype_33).getLabelValue();
-                _builder_38.append(_labelValue, "\t");
-                _builder_38.append("\")");
-              }
-            }
-            _builder_38.newLineIfNotEmpty();
-            _builder_38.append("\t");
-            {
-              ChartOption _charttype_34 = chart.getCharttype();
-              boolean _isHasIntervals_1 = ((ChartGauge) _charttype_34).isHasIntervals();
+              boolean _isHasIntervals_1 = ((ChartGauge) _charttype_32).isHasIntervals();
               if (_isHasIntervals_1) {
-                _builder_38.append(".setIntervals(");
-                _builder_38.append(intervalValues, "\t");
-                _builder_38.append(")");
+                _builder_40.append(".setIntervals(");
+                _builder_40.append(intervalValues, "\t");
+                _builder_40.append(")");
               }
             }
-            _builder_38.newLineIfNotEmpty();
-            _builder_38.append("\t");
+            _builder_40.newLineIfNotEmpty();
+            _builder_40.append("\t");
             {
-              ChartOption _charttype_35 = chart.getCharttype();
-              boolean _isHasIntervals_2 = ((ChartGauge) _charttype_35).isHasIntervals();
+              ChartOption _charttype_33 = chart.getCharttype();
+              boolean _isHasIntervals_2 = ((ChartGauge) _charttype_33).isHasIntervals();
               if (_isHasIntervals_2) {
-                _builder_38.append(".setIntervalColors(");
-                _builder_38.append(intervalColors, "\t");
-                _builder_38.append(")");
+                _builder_40.append(".setIntervalColors(");
+                _builder_40.append(intervalColors, "\t");
+                _builder_40.append(")");
               }
             }
-            _builder_38.append(");");
-            _builder_38.newLineIfNotEmpty();
-            body = _builder_38.toString();
+            _builder_40.append(");");
+            _builder_40.newLineIfNotEmpty();
+            body = _builder_40.toString();
           } else {
-            ChartOption _charttype_36 = chart.getCharttype();
-            if ((_charttype_36 instanceof ChartBar)) {
-              StringConcatenation _builder_39 = new StringConcatenation();
-              _builder_39.append(body, "");
-              _builder_39.append("seriesDefaults.setFillToZero(true);");
-              _builder_39.newLineIfNotEmpty();
-              _builder_39.append("seriesDefaults.setRendererOptions(new BarRenderer()");
-              _builder_39.newLine();
-              _builder_39.append("    ");
+            ChartOption _charttype_34 = chart.getCharttype();
+            if ((_charttype_34 instanceof ChartBar)) {
+              StringConcatenation _builder_41 = new StringConcatenation();
+              _builder_41.append(body);
+              _builder_41.append("seriesDefaults.setFillToZero(true);");
+              _builder_41.newLineIfNotEmpty();
+              _builder_41.append("seriesDefaults.setRendererOptions(new BarRenderer()");
+              _builder_41.newLine();
+              _builder_41.append("    ");
               {
                 if (axisSwitch) {
-                  _builder_39.append(".setBarDirection(BarDirections.HOTIZONTAL));");
+                  _builder_41.append(".setBarDirection(BarDirections.HOTIZONTAL));");
                 } else {
-                  _builder_39.append(".setBarDirection(BarDirections.VERTICAL));");
+                  _builder_41.append(".setBarDirection(BarDirections.VERTICAL));");
                 }
               }
-              _builder_39.newLineIfNotEmpty();
-              body = _builder_39.toString();
-              ChartOption _charttype_37 = chart.getCharttype();
-              boolean _isStacked = ((ChartBar) _charttype_37).isStacked();
+              _builder_41.newLineIfNotEmpty();
+              body = _builder_41.toString();
+              ChartOption _charttype_35 = chart.getCharttype();
+              boolean _isStacked = ((ChartBar) _charttype_35).isStacked();
               if (_isStacked) {
-                StringConcatenation _builder_40 = new StringConcatenation();
-                _builder_40.append(body, "");
-                _builder_40.append("options.setStackSeries(true);");
-                _builder_40.newLineIfNotEmpty();
-                body = _builder_40.toString();
-              }
-              ChartOption _charttype_38 = chart.getCharttype();
-              boolean _isShadow = ((ChartBar) _charttype_38).isShadow();
-              if (_isShadow) {
-                StringConcatenation _builder_41 = new StringConcatenation();
-                _builder_41.append(body, "");
-                _builder_41.append("seriesDefaults.setShadow(true).setShadowAlpha(0.05f);");
-                _builder_41.newLineIfNotEmpty();
-                body = _builder_41.toString();
-              }
-              ChartOption _charttype_39 = chart.getCharttype();
-              boolean _isAnimated = ((ChartBar) _charttype_39).isAnimated();
-              if (_isAnimated) {
                 StringConcatenation _builder_42 = new StringConcatenation();
-                _builder_42.append(body, "");
-                _builder_42.append("options.setAnimate(true);");
+                _builder_42.append(body);
+                _builder_42.append("options.setStackSeries(true);");
                 _builder_42.newLineIfNotEmpty();
                 body = _builder_42.toString();
               }
+              ChartOption _charttype_36 = chart.getCharttype();
+              boolean _isShadow = ((ChartBar) _charttype_36).isShadow();
+              if (_isShadow) {
+                StringConcatenation _builder_43 = new StringConcatenation();
+                _builder_43.append(body);
+                _builder_43.append("seriesDefaults.setShadow(true).setShadowAlpha(0.05f);");
+                _builder_43.newLineIfNotEmpty();
+                body = _builder_43.toString();
+              }
+              ChartOption _charttype_37 = chart.getCharttype();
+              boolean _isAnimated = ((ChartBar) _charttype_37).isAnimated();
+              if (_isAnimated) {
+                StringConcatenation _builder_44 = new StringConcatenation();
+                _builder_44.append(body);
+                _builder_44.append("options.setAnimate(true);");
+                _builder_44.newLineIfNotEmpty();
+                body = _builder_44.toString();
+              }
             }
           }
         }
       }
     }
-    StringConcatenation _builder_43 = new StringConcatenation();
-    _builder_43.append(body, "");
-    _builder_43.newLineIfNotEmpty();
-    _builder_43.append("String[] seriesColors = {\"#98E958\",\"#3090F0\",\"#EC6464\",\"#F9DD51\",\"#24DCD4\",\"#EC64A5\",\"#685CB0\",\"#FF7D42\",\"#AA514D\",\"#7FB053\",\"#BBA85B\",\"#247981\"};");
-    _builder_43.newLine();
-    _builder_43.append("options.setSeriesColors(seriesColors);");
-    _builder_43.newLine();
-    body = _builder_43.toString();
+    StringConcatenation _builder_45 = new StringConcatenation();
+    _builder_45.append(body);
+    _builder_45.newLineIfNotEmpty();
+    _builder_45.append("String[] seriesColors = {\"#98E958\",\"#3090F0\",\"#EC6464\",\"#F9DD51\",\"#24DCD4\",\"#EC64A5\",\"#685CB0\",\"#FF7D42\",\"#AA514D\",\"#7FB053\",\"#BBA85B\",\"#247981\"};");
+    _builder_45.newLine();
+    _builder_45.append("options.setSeriesColors(seriesColors);");
+    _builder_45.newLine();
+    body = _builder_45.toString();
     if (hasAxis) {
-      StringConcatenation _builder_44 = new StringConcatenation();
-      _builder_44.append(body, "");
-      _builder_44.append("Axes axes = new Axes();");
-      _builder_44.newLineIfNotEmpty();
-      body = _builder_44.toString();
-      ChartOption _charttype_40 = chart.getCharttype();
-      if ((_charttype_40 instanceof ChartBubble)) {
-        StringConcatenation _builder_45 = new StringConcatenation();
-        _builder_45.append(body, "");
-        _builder_45.append("CanvasAxisTickRenderer axisTickRenderer = new CanvasAxisTickRenderer();");
-        _builder_45.newLineIfNotEmpty();
-        _builder_45.append("axisTickRenderer.setTextColor(\"#202020\");");
-        _builder_45.newLine();
-        _builder_45.append("if (");
-        DatamartAxis _axis_42 = data_axis.getAxis();
-        AxisEnum _name_49 = _axis_42.getName();
-        String _literal_34 = _name_49.getLiteral();
-        _builder_45.append(_literal_34, "");
-        _builder_45.append("TitlesArray.size() > 0) {");
-        _builder_45.newLineIfNotEmpty();
-        _builder_45.append("\t");
-        _builder_45.append("axes.addAxis(new XYaxis(XYaxes.");
-        char _charAt = axisPrefix.charAt(0);
-        _builder_45.append(_charAt, "\t");
-        _builder_45.append(").setLabel(");
-        DatamartAxis _axis_43 = data_axis.getAxis();
-        AxisEnum _name_50 = _axis_43.getName();
-        String _literal_35 = _name_50.getLiteral();
-        _builder_45.append(_literal_35, "\t");
-        _builder_45.append("TitlesArray.get(0)).setTickOptions(axisTickRenderer");
-        {
-          int _angle = category_axis.getAngle();
-          boolean _notEquals = (_angle != 0);
-          if (_notEquals) {
-            _builder_45.append(".setAngle(");
-            int _angle_1 = data_axis.getAngle();
-            _builder_45.append(_angle_1, "\t");
-            _builder_45.append(")");
-          }
-        }
-        _builder_45.append("));");
-        _builder_45.newLineIfNotEmpty();
-        _builder_45.append("\t");
-        _builder_45.append("axes.addAxis(new XYaxis(XYaxes.");
-        char _charAt_1 = axisPrefix.charAt(1);
-        _builder_45.append(_charAt_1, "\t");
-        _builder_45.append(").setLabel(");
-        DatamartAxis _axis_44 = data_axis.getAxis();
-        AxisEnum _name_51 = _axis_44.getName();
-        String _literal_36 = _name_51.getLiteral();
-        _builder_45.append(_literal_36, "\t");
-        _builder_45.append("TitlesArray.get(1)).setTickOptions(axisTickRenderer");
-        {
-          int _angle_2 = category_axis.getAngle();
-          boolean _notEquals_1 = (_angle_2 != 0);
-          if (_notEquals_1) {
-            _builder_45.append(".setAngle(");
-            int _angle_3 = data_axis.getAngle();
-            _builder_45.append(_angle_3, "\t");
-            _builder_45.append(")");
-          }
-        }
-        _builder_45.append("));");
-        _builder_45.newLineIfNotEmpty();
-        _builder_45.append("\t");
-        _builder_45.append("axes.addAxis(new XYaxis(XYaxes.");
-        char _charAt_2 = axisPrefix.charAt(1);
-        _builder_45.append(_charAt_2, "\t");
-        _builder_45.append("2).setLabel(");
-        DatamartAxis _axis_45 = data_axis.getAxis();
-        AxisEnum _name_52 = _axis_45.getName();
-        String _literal_37 = _name_52.getLiteral();
-        _builder_45.append(_literal_37, "\t");
-        _builder_45.append("TitlesArray.get(2)).setTickOptions(axisTickRenderer");
-        {
-          int _angle_4 = category_axis.getAngle();
-          boolean _notEquals_2 = (_angle_4 != 0);
-          if (_notEquals_2) {
-            _builder_45.append(".setAngle(");
-            int _angle_5 = data_axis.getAngle();
-            _builder_45.append(_angle_5, "\t");
-            _builder_45.append(")");
-          }
-        }
-        _builder_45.append("));");
-        _builder_45.newLineIfNotEmpty();
-        _builder_45.append("}");
-        _builder_45.newLine();
-        body = _builder_45.toString();
-      } else {
-        StringConcatenation _builder_46 = new StringConcatenation();
-        _builder_46.append(body, "");
-        _builder_46.append("CanvasAxisTickRenderer tickRenderer = new CanvasAxisTickRenderer();");
-        _builder_46.newLineIfNotEmpty();
-        _builder_46.append("tickRenderer.setTextColor(\"#202020\");");
-        _builder_46.newLine();
-        _builder_46.append("axes.addAxis(new XYaxis(XYaxes.");
-        char _charAt_3 = axisPrefix.charAt(0);
-        _builder_46.append(_charAt_3, "");
-        _builder_46.append(")");
-        _builder_46.newLineIfNotEmpty();
-        _builder_46.append("\t");
-        _builder_46.append(".setRenderer(AxisRenderers.");
-        RenderTypeEnum _renderType_5 = category_axis.getRenderType();
-        String _name_53 = _renderType_5.name();
-        String _string_4 = _name_53.toString();
-        _builder_46.append(_string_4, "\t");
-        _builder_46.append(")");
-        _builder_46.newLineIfNotEmpty();
-        _builder_46.append("\t");
-        _builder_46.append(".setLabel(");
-        DatamartAxis _axis_46 = category_axis.getAxis();
-        AxisEnum _name_54 = _axis_46.getName();
-        String _literal_38 = _name_54.getLiteral();
-        _builder_46.append(_literal_38, "\t");
-        _builder_46.append("AxisLabel)");
-        _builder_46.newLineIfNotEmpty();
-        _builder_46.append("\t");
-        _builder_46.append(".setTicks(");
-        DatamartAxis _axis_47 = category_axis.getAxis();
-        AxisEnum _name_55 = _axis_47.getName();
-        String _literal_39 = _name_55.getLiteral();
-        _builder_46.append(_literal_39, "\t");
-        _builder_46.append("Ticks)");
-        _builder_46.newLineIfNotEmpty();
-        _builder_46.append("\t");
-        _builder_46.append(".setTickOptions(tickRenderer");
-        {
-          int _angle_6 = category_axis.getAngle();
-          boolean _notEquals_3 = (_angle_6 != 0);
-          if (_notEquals_3) {
-            _builder_46.append(".setAngle(");
-            int _angle_7 = category_axis.getAngle();
-            _builder_46.append(_angle_7, "\t");
-            _builder_46.append(")");
-          }
-        }
-        _builder_46.append("));");
-        _builder_46.newLineIfNotEmpty();
-        body = _builder_46.toString();
+      StringConcatenation _builder_46 = new StringConcatenation();
+      _builder_46.append(body);
+      _builder_46.append("Axes axes = new Axes();");
+      _builder_46.newLineIfNotEmpty();
+      body = _builder_46.toString();
+      ChartOption _charttype_38 = chart.getCharttype();
+      if ((_charttype_38 instanceof ChartBubble)) {
         StringConcatenation _builder_47 = new StringConcatenation();
-        _builder_47.append(body, "");
+        _builder_47.append(body);
         _builder_47.append("CanvasAxisTickRenderer axisTickRenderer = new CanvasAxisTickRenderer();");
         _builder_47.newLineIfNotEmpty();
         _builder_47.append("axisTickRenderer.setTextColor(\"#202020\");");
         _builder_47.newLine();
-        _builder_47.append("axes.addAxis(new XYaxis(XYaxes.");
-        char _charAt_4 = axisPrefix.charAt(1);
-        _builder_47.append(_charAt_4, "");
-        _builder_47.append(")");
+        _builder_47.append("if (");
+        String _literal_37 = data_axis.getAxis().getName().getLiteral();
+        _builder_47.append(_literal_37);
+        _builder_47.append("TitlesArray.size() > 0) {");
         _builder_47.newLineIfNotEmpty();
         _builder_47.append("\t");
-        _builder_47.append(".setPad(1.05f)");
-        _builder_47.newLine();
-        _builder_47.append("\t");
-        _builder_47.append(".setTickOptions(axisTickRenderer");
+        _builder_47.append("axes.addAxis(new XYaxis(XYaxes.");
+        char _charAt = axisPrefix.charAt(0);
+        _builder_47.append(_charAt, "\t");
+        _builder_47.append(").setLabel(");
+        String _literal_38 = data_axis.getAxis().getName().getLiteral();
+        _builder_47.append(_literal_38, "\t");
+        _builder_47.append("TitlesArray.get(0)).setTickOptions(axisTickRenderer");
         {
-          int _angle_8 = data_axis.getAngle();
-          boolean _notEquals_4 = (_angle_8 != 0);
-          if (_notEquals_4) {
+          int _angle = category_axis.getAngle();
+          boolean _notEquals = (_angle != 0);
+          if (_notEquals) {
             _builder_47.append(".setAngle(");
-            int _angle_9 = data_axis.getAngle();
-            _builder_47.append(_angle_9, "\t");
+            int _angle_1 = data_axis.getAngle();
+            _builder_47.append(_angle_1, "\t");
             _builder_47.append(")");
           }
         }
         _builder_47.append("));");
         _builder_47.newLineIfNotEmpty();
-        body = _builder_47.toString();
-        Set<String> _keySet = multipleAxes.keySet();
-        for (final String axisKey : _keySet) {
-          boolean _equals_7 = axisKey.equals("1");
-          boolean _not_1 = (!_equals_7);
-          if (_not_1) {
-            StringConcatenation _builder_48 = new StringConcatenation();
-            _builder_48.append(body, "");
-            String _get = multipleAxes.get(axisKey);
-            _builder_48.append(_get, "");
-            body = _builder_48.toString();
+        _builder_47.append("\t");
+        _builder_47.append("axes.addAxis(new XYaxis(XYaxes.");
+        char _charAt_1 = axisPrefix.charAt(1);
+        _builder_47.append(_charAt_1, "\t");
+        _builder_47.append(").setLabel(");
+        String _literal_39 = data_axis.getAxis().getName().getLiteral();
+        _builder_47.append(_literal_39, "\t");
+        _builder_47.append("TitlesArray.get(1)).setTickOptions(axisTickRenderer");
+        {
+          int _angle_2 = category_axis.getAngle();
+          boolean _notEquals_1 = (_angle_2 != 0);
+          if (_notEquals_1) {
+            _builder_47.append(".setAngle(");
+            int _angle_3 = data_axis.getAngle();
+            _builder_47.append(_angle_3, "\t");
+            _builder_47.append(")");
           }
         }
-        Set<String> _keySet_1 = multipleAxes.keySet();
-        int _size = _keySet_1.size();
+        _builder_47.append("));");
+        _builder_47.newLineIfNotEmpty();
+        _builder_47.append("\t");
+        _builder_47.append("axes.addAxis(new XYaxis(XYaxes.");
+        char _charAt_2 = axisPrefix.charAt(1);
+        _builder_47.append(_charAt_2, "\t");
+        _builder_47.append("2).setLabel(");
+        String _literal_40 = data_axis.getAxis().getName().getLiteral();
+        _builder_47.append(_literal_40, "\t");
+        _builder_47.append("TitlesArray.get(2)).setTickOptions(axisTickRenderer");
+        {
+          int _angle_4 = category_axis.getAngle();
+          boolean _notEquals_2 = (_angle_4 != 0);
+          if (_notEquals_2) {
+            _builder_47.append(".setAngle(");
+            int _angle_5 = data_axis.getAngle();
+            _builder_47.append(_angle_5, "\t");
+            _builder_47.append(")");
+          }
+        }
+        _builder_47.append("));");
+        _builder_47.newLineIfNotEmpty();
+        _builder_47.append("}");
+        _builder_47.newLine();
+        body = _builder_47.toString();
+      } else {
+        StringConcatenation _builder_48 = new StringConcatenation();
+        _builder_48.append(body);
+        _builder_48.append("CanvasAxisTickRenderer tickRenderer = new CanvasAxisTickRenderer();");
+        _builder_48.newLineIfNotEmpty();
+        _builder_48.append("tickRenderer.setTextColor(\"#202020\");");
+        _builder_48.newLine();
+        _builder_48.append("axes.addAxis(new XYaxis(XYaxes.");
+        char _charAt_3 = axisPrefix.charAt(0);
+        _builder_48.append(_charAt_3);
+        _builder_48.append(")");
+        _builder_48.newLineIfNotEmpty();
+        _builder_48.append("\t");
+        _builder_48.append(".setRenderer(AxisRenderers.");
+        String _string_4 = category_axis.getRenderType().name().toString();
+        _builder_48.append(_string_4, "\t");
+        _builder_48.append(")");
+        _builder_48.newLineIfNotEmpty();
+        _builder_48.append("\t");
+        _builder_48.append(".setLabel(");
+        String _literal_41 = category_axis.getAxis().getName().getLiteral();
+        _builder_48.append(_literal_41, "\t");
+        _builder_48.append("AxisLabel)");
+        _builder_48.newLineIfNotEmpty();
+        _builder_48.append("\t");
+        _builder_48.append(".setTicks(");
+        String _literal_42 = category_axis.getAxis().getName().getLiteral();
+        _builder_48.append(_literal_42, "\t");
+        _builder_48.append("Ticks)");
+        _builder_48.newLineIfNotEmpty();
+        _builder_48.append("\t");
+        _builder_48.append(".setTickOptions(tickRenderer");
+        {
+          int _angle_6 = category_axis.getAngle();
+          boolean _notEquals_3 = (_angle_6 != 0);
+          if (_notEquals_3) {
+            _builder_48.append(".setAngle(");
+            int _angle_7 = category_axis.getAngle();
+            _builder_48.append(_angle_7, "\t");
+            _builder_48.append(")");
+          }
+        }
+        _builder_48.append("));");
+        _builder_48.newLineIfNotEmpty();
+        body = _builder_48.toString();
+        StringConcatenation _builder_49 = new StringConcatenation();
+        _builder_49.append(body);
+        _builder_49.append("CanvasAxisTickRenderer axisTickRenderer = new CanvasAxisTickRenderer();");
+        _builder_49.newLineIfNotEmpty();
+        _builder_49.append("axisTickRenderer.setTextColor(\"#202020\");");
+        _builder_49.newLine();
+        _builder_49.append("axes.addAxis(new XYaxis(XYaxes.");
+        char _charAt_4 = axisPrefix.charAt(1);
+        _builder_49.append(_charAt_4);
+        _builder_49.append(")");
+        _builder_49.newLineIfNotEmpty();
+        _builder_49.append("\t");
+        _builder_49.append(".setPad(1.05f)");
+        _builder_49.newLine();
+        _builder_49.append("\t");
+        _builder_49.append(".setTickOptions(axisTickRenderer");
+        {
+          int _angle_8 = data_axis.getAngle();
+          boolean _notEquals_4 = (_angle_8 != 0);
+          if (_notEquals_4) {
+            _builder_49.append(".setAngle(");
+            int _angle_9 = data_axis.getAngle();
+            _builder_49.append(_angle_9, "\t");
+            _builder_49.append(")");
+          }
+        }
+        _builder_49.append("));");
+        _builder_49.newLineIfNotEmpty();
+        body = _builder_49.toString();
+        Set<String> _keySet = multipleAxes.keySet();
+        for (final String axisKey : _keySet) {
+          boolean _equals_2 = axisKey.equals("1");
+          boolean _not = (!_equals_2);
+          if (_not) {
+            StringConcatenation _builder_50 = new StringConcatenation();
+            _builder_50.append(body);
+            String _get = multipleAxes.get(axisKey);
+            _builder_50.append(_get);
+            body = _builder_50.toString();
+          }
+        }
+        int _size = multipleAxes.keySet().size();
         boolean _greaterThan_2 = (_size > 0);
         if (_greaterThan_2) {
-          StringConcatenation _builder_49 = new StringConcatenation();
-          _builder_49.append(body, "");
-          _builder_49.append("LinearAxisRenderer linearAxisRenderer = new LinearAxisRenderer();");
-          _builder_49.newLineIfNotEmpty();
-          _builder_49.append("linearAxisRenderer.setAlignTicks(true);");
-          _builder_49.newLine();
-          _builder_49.append("AxesDefaults axesDefaults = new AxesDefaults()");
-          _builder_49.newLine();
-          _builder_49.append("\t");
-          _builder_49.append(".setUseSeriesColor(true)");
-          _builder_49.newLine();
-          _builder_49.append("\t");
-          _builder_49.append(".setBorderWidth(3)\t");
-          _builder_49.newLine();
-          _builder_49.append("\t");
-          _builder_49.append(".setRendererOptions(linearAxisRenderer);");
-          _builder_49.newLine();
-          _builder_49.append("options.setAxesDefaults(axesDefaults);");
-          _builder_49.newLine();
-          body = _builder_49.toString();
+          StringConcatenation _builder_51 = new StringConcatenation();
+          _builder_51.append(body);
+          _builder_51.append("LinearAxisRenderer linearAxisRenderer = new LinearAxisRenderer();");
+          _builder_51.newLineIfNotEmpty();
+          _builder_51.append("linearAxisRenderer.setAlignTicks(true);");
+          _builder_51.newLine();
+          _builder_51.append("AxesDefaults axesDefaults = new AxesDefaults()");
+          _builder_51.newLine();
+          _builder_51.append("\t");
+          _builder_51.append(".setUseSeriesColor(true)");
+          _builder_51.newLine();
+          _builder_51.append("\t");
+          _builder_51.append(".setBorderWidth(3)\t");
+          _builder_51.newLine();
+          _builder_51.append("\t");
+          _builder_51.append(".setRendererOptions(linearAxisRenderer);");
+          _builder_51.newLine();
+          _builder_51.append("options.setAxesDefaults(axesDefaults);");
+          _builder_51.newLine();
+          body = _builder_51.toString();
         }
       }
-      StringConcatenation _builder_50 = new StringConcatenation();
-      _builder_50.append(body, "");
-      _builder_50.append("options.setAxes(axes);");
-      _builder_50.newLineIfNotEmpty();
-      body = _builder_50.toString();
+      StringConcatenation _builder_52 = new StringConcatenation();
+      _builder_52.append(body);
+      _builder_52.append("options.setAxes(axes);");
+      _builder_52.newLineIfNotEmpty();
+      body = _builder_52.toString();
     }
-    ChartDatamart _source_1 = chart.getSource();
-    EList<ChartElement> _elements_1 = _source_1.getElements();
+    EList<ChartElement> _elements_1 = chart.getSource().getElements();
     for (final ChartElement element_1 : _elements_1) {
       if ((element_1 instanceof ChartLegend)) {
         ChartLegend legend = ((ChartLegend) element_1);
-        StringConcatenation _builder_51 = new StringConcatenation();
-        _builder_51.append(body, "");
-        _builder_51.append("Legend legend = new Legend().setShow(");
-        boolean _notEquals_5 = (!Objects.equal(legend, null));
-        boolean _booleanValue_2 = Boolean.valueOf(_notEquals_5).booleanValue();
-        String _string_5 = Boolean.valueOf(_booleanValue_2).toString();
-        _builder_51.append(_string_5, "");
-        _builder_51.append(");");
-        _builder_51.newLineIfNotEmpty();
-        body = _builder_51.toString();
-        StringConcatenation _builder_52 = new StringConcatenation();
-        _builder_52.append(body, "");
-        _builder_52.append("legend.setPlacement(LegendPlacements.");
-        LegendPlacementEnum _placement = legend.getPlacement();
-        String _name_56 = _placement.name();
-        _builder_52.append(_name_56, "");
-        _builder_52.append(");");
-        _builder_52.newLineIfNotEmpty();
-        body = _builder_52.toString();
-        boolean _isToggle = legend.isToggle();
-        if (_isToggle) {
-          StringConcatenation _builder_53 = new StringConcatenation();
-          _builder_53.append(body, "");
-          _builder_53.append("EnhancedLegendRenderer renderer = new EnhancedLegendRenderer();");
-          _builder_53.newLineIfNotEmpty();
-          _builder_53.append("renderer.setSeriesToggle(SeriesToggles.");
-          ToggleTypeEnum _toggleType = legend.getToggleType();
-          String _name_57 = _toggleType.getName();
-          _builder_53.append(_name_57, "");
-          _builder_53.append(");");
-          _builder_53.newLineIfNotEmpty();
-          _builder_53.append("renderer.setSeriesToggleReplot(");
-          boolean _isReplot = legend.isReplot();
-          boolean _booleanValue_3 = Boolean.valueOf(_isReplot).booleanValue();
-          String _string_6 = Boolean.valueOf(_booleanValue_3).toString();
-          _builder_53.append(_string_6, "");
-          _builder_53.append(");");
-          _builder_53.newLineIfNotEmpty();
-          _builder_53.append("legend.setRendererOptions(renderer);");
-          _builder_53.newLine();
-          body = _builder_53.toString();
-        }
+        StringConcatenation _builder_53 = new StringConcatenation();
+        _builder_53.append(body);
+        _builder_53.append("Legend legend = new Legend().setShow(");
+        String _string_5 = Boolean.valueOf(Boolean.valueOf((!Objects.equal(legend, null))).booleanValue()).toString();
+        _builder_53.append(_string_5);
+        _builder_53.append(");");
+        _builder_53.newLineIfNotEmpty();
+        body = _builder_53.toString();
         StringConcatenation _builder_54 = new StringConcatenation();
-        _builder_54.append(body, "");
-        _builder_54.append("options.setLegend(legend);");
+        _builder_54.append(body);
+        _builder_54.append("legend.setPlacement(LegendPlacements.");
+        String _name = legend.getPlacement().name();
+        _builder_54.append(_name);
+        _builder_54.append(");");
         _builder_54.newLineIfNotEmpty();
         body = _builder_54.toString();
+        boolean _isToggle = legend.isToggle();
+        if (_isToggle) {
+          StringConcatenation _builder_55 = new StringConcatenation();
+          _builder_55.append(body);
+          _builder_55.append("EnhancedLegendRenderer renderer = new EnhancedLegendRenderer();");
+          _builder_55.newLineIfNotEmpty();
+          _builder_55.append("renderer.setSeriesToggle(SeriesToggles.");
+          String _name_1 = legend.getToggleType().getName();
+          _builder_55.append(_name_1);
+          _builder_55.append(");");
+          _builder_55.newLineIfNotEmpty();
+          _builder_55.append("renderer.setSeriesToggleReplot(");
+          String _string_6 = Boolean.valueOf(Boolean.valueOf(legend.isReplot()).booleanValue()).toString();
+          _builder_55.append(_string_6);
+          _builder_55.append(");");
+          _builder_55.newLineIfNotEmpty();
+          _builder_55.append("legend.setRendererOptions(renderer);");
+          _builder_55.newLine();
+          body = _builder_55.toString();
+        }
+        StringConcatenation _builder_56 = new StringConcatenation();
+        _builder_56.append(body);
+        _builder_56.append("options.setLegend(legend);");
+        _builder_56.newLineIfNotEmpty();
+        body = _builder_56.toString();
       }
     }
-    ChartDatamart _source_2 = chart.getSource();
-    EList<ChartElement> _elements_2 = _source_2.getElements();
+    EList<ChartElement> _elements_2 = chart.getSource().getElements();
     for (final ChartElement element_2 : _elements_2) {
       if ((element_2 instanceof ChartHighlighter)) {
         ChartHighlighter highlighter = ((ChartHighlighter) element_2);
-        StringConcatenation _builder_55 = new StringConcatenation();
-        _builder_55.append(body, "");
-        _builder_55.append("Highlighter highlighter = new Highlighter().setShow(");
-        boolean _notEquals_6 = (!Objects.equal(highlighter, null));
-        boolean _booleanValue_4 = Boolean.valueOf(_notEquals_6).booleanValue();
-        String _string_7 = Boolean.valueOf(_booleanValue_4).toString();
-        _builder_55.append(_string_7, "");
-        _builder_55.append(");");
-        _builder_55.newLineIfNotEmpty();
-        body = _builder_55.toString();
-        StringConcatenation _builder_56 = new StringConcatenation();
-        _builder_56.append(body, "");
-        _builder_56.append("highlighter.setShowTooltip(true)");
-        _builder_56.newLineIfNotEmpty();
-        _builder_56.append(".setTooltipAlwaysVisible(");
-        boolean _isTooltipAlways = highlighter.isTooltipAlways();
-        boolean _booleanValue_5 = Boolean.valueOf(_isTooltipAlways).booleanValue();
-        String _string_8 = Boolean.valueOf(_booleanValue_5).toString();
-        _builder_56.append(_string_8, "");
-        _builder_56.append(")");
-        _builder_56.newLineIfNotEmpty();
-        _builder_56.append(".setKeepTooltipInsideChart(");
-        boolean _isInsideChart = highlighter.isInsideChart();
-        boolean _booleanValue_6 = Boolean.valueOf(_isInsideChart).booleanValue();
-        String _string_9 = Boolean.valueOf(_booleanValue_6).toString();
-        _builder_56.append(_string_9, "");
-        _builder_56.append(")");
-        _builder_56.newLineIfNotEmpty();
-        _builder_56.append(".setTooltipLocation(TooltipLocations.");
-        TooltipLocationEnum _location = highlighter.getLocation();
-        String _name_58 = _location.name();
-        _builder_56.append(_name_58, "");
-        _builder_56.append(")");
-        _builder_56.newLineIfNotEmpty();
-        _builder_56.append(".setBringSeriesToFront(true)");
-        _builder_56.newLine();
-        _builder_56.append(".setFadeTooltip(true)");
-        _builder_56.newLine();
-        _builder_56.append(".setShowMarker(true);");
-        _builder_56.newLine();
-        body = _builder_56.toString();
         StringConcatenation _builder_57 = new StringConcatenation();
-        _builder_57.append(body, "");
-        _builder_57.append("highlighter.setTooltipAxes(TooltipAxes.");
-        _builder_57.append(axisPrefix, "");
-        _builder_57.append(postfix, "");
+        _builder_57.append(body);
+        _builder_57.append("Highlighter highlighter = new Highlighter().setShow(");
+        String _string_7 = Boolean.valueOf(Boolean.valueOf((!Objects.equal(highlighter, null))).booleanValue()).toString();
+        _builder_57.append(_string_7);
         _builder_57.append(");");
         _builder_57.newLineIfNotEmpty();
         body = _builder_57.toString();
         StringConcatenation _builder_58 = new StringConcatenation();
-        _builder_58.append(body, "");
-        _builder_58.append("options.setHighlighter(highlighter);");
+        _builder_58.append(body);
+        _builder_58.append("highlighter.setShowTooltip(true)");
         _builder_58.newLineIfNotEmpty();
+        _builder_58.append(".setTooltipAlwaysVisible(");
+        String _string_8 = Boolean.valueOf(Boolean.valueOf(highlighter.isTooltipAlways()).booleanValue()).toString();
+        _builder_58.append(_string_8);
+        _builder_58.append(")");
+        _builder_58.newLineIfNotEmpty();
+        _builder_58.append(".setKeepTooltipInsideChart(");
+        String _string_9 = Boolean.valueOf(Boolean.valueOf(highlighter.isInsideChart()).booleanValue()).toString();
+        _builder_58.append(_string_9);
+        _builder_58.append(")");
+        _builder_58.newLineIfNotEmpty();
+        _builder_58.append(".setTooltipLocation(TooltipLocations.");
+        String _name_2 = highlighter.getLocation().name();
+        _builder_58.append(_name_2);
+        _builder_58.append(")");
+        _builder_58.newLineIfNotEmpty();
+        _builder_58.append(".setBringSeriesToFront(true)");
+        _builder_58.newLine();
+        _builder_58.append(".setFadeTooltip(true)");
+        _builder_58.newLine();
+        _builder_58.append(".setShowMarker(true);");
+        _builder_58.newLine();
         body = _builder_58.toString();
-      }
-    }
-    ChartOption _charttype_41 = chart.getCharttype();
-    if ((_charttype_41 instanceof ChartLine)) {
-      ChartOption _charttype_42 = chart.getCharttype();
-      boolean _isCursor = ((ChartLine) _charttype_42).isCursor();
-      if (_isCursor) {
         StringConcatenation _builder_59 = new StringConcatenation();
-        _builder_59.append(body, "");
-        _builder_59.append("Cursor cursor = new Cursor()");
-        _builder_59.newLineIfNotEmpty();
-        _builder_59.append("\t");
-        _builder_59.append(".setShow(true)");
-        _builder_59.newLine();
-        _builder_59.append("\t");
-        _builder_59.append(".setZoom(");
-        ChartOption _charttype_43 = chart.getCharttype();
-        boolean _isZoom = ((ChartLine) _charttype_43).isZoom();
-        String _string_10 = Boolean.valueOf(_isZoom).toString();
-        _builder_59.append(_string_10, "\t");
-        _builder_59.append(")");
-        _builder_59.newLineIfNotEmpty();
-        _builder_59.append("\t");
-        _builder_59.append(".setShowTooltip(");
-        ChartOption _charttype_44 = chart.getCharttype();
-        boolean _isTooltip = ((ChartLine) _charttype_44).isTooltip();
-        String _string_11 = Boolean.valueOf(_isTooltip).toString();
-        _builder_59.append(_string_11, "\t");
+        _builder_59.append(body);
+        _builder_59.append("highlighter.setTooltipAxes(TooltipAxes.");
+        _builder_59.append(axisPrefix);
+        _builder_59.append(postfix);
         _builder_59.append(");");
         _builder_59.newLineIfNotEmpty();
-        _builder_59.append("options.setCursor(cursor);");
-        _builder_59.newLine();
         body = _builder_59.toString();
-      }
-      ChartOption _charttype_45 = chart.getCharttype();
-      boolean _isAnimated_1 = ((ChartLine) _charttype_45).isAnimated();
-      if (_isAnimated_1) {
         StringConcatenation _builder_60 = new StringConcatenation();
-        _builder_60.append(body, "");
-        _builder_60.append("options.setAnimate(true);");
+        _builder_60.append(body);
+        _builder_60.append("options.setHighlighter(highlighter);");
         _builder_60.newLineIfNotEmpty();
         body = _builder_60.toString();
       }
     }
-    if (hasAxis) {
-      StringConcatenation _builder_61 = new StringConcatenation();
-      _builder_61.append(body, "");
-      _builder_61.append("options.setSeries(");
-      DatamartAxis _axis_48 = data_axis.getAxis();
-      AxisEnum _name_59 = _axis_48.getName();
-      String _literal_40 = _name_59.getLiteral();
-      _builder_61.append(_literal_40, "");
-      _builder_61.append("Series);");
-      _builder_61.newLineIfNotEmpty();
-      body = _builder_61.toString();
+    ChartOption _charttype_39 = chart.getCharttype();
+    if ((_charttype_39 instanceof ChartLine)) {
+      ChartOption _charttype_40 = chart.getCharttype();
+      boolean _isCursor = ((ChartLine) _charttype_40).isCursor();
+      if (_isCursor) {
+        StringConcatenation _builder_61 = new StringConcatenation();
+        _builder_61.append(body);
+        _builder_61.append("Cursor cursor = new Cursor()");
+        _builder_61.newLineIfNotEmpty();
+        _builder_61.append("\t");
+        _builder_61.append(".setShow(true)");
+        _builder_61.newLine();
+        _builder_61.append("\t");
+        _builder_61.append(".setZoom(");
+        ChartOption _charttype_41 = chart.getCharttype();
+        String _string_10 = Boolean.valueOf(((ChartLine) _charttype_41).isZoom()).toString();
+        _builder_61.append(_string_10, "\t");
+        _builder_61.append(")");
+        _builder_61.newLineIfNotEmpty();
+        _builder_61.append("\t");
+        _builder_61.append(".setShowTooltip(");
+        ChartOption _charttype_42 = chart.getCharttype();
+        String _string_11 = Boolean.valueOf(((ChartLine) _charttype_42).isTooltip()).toString();
+        _builder_61.append(_string_11, "\t");
+        _builder_61.append(");");
+        _builder_61.newLineIfNotEmpty();
+        _builder_61.append("options.setCursor(cursor);");
+        _builder_61.newLine();
+        body = _builder_61.toString();
+      }
+      ChartOption _charttype_43 = chart.getCharttype();
+      boolean _isAnimated_1 = ((ChartLine) _charttype_43).isAnimated();
+      if (_isAnimated_1) {
+        StringConcatenation _builder_62 = new StringConcatenation();
+        _builder_62.append(body);
+        _builder_62.append("options.setAnimate(true);");
+        _builder_62.newLineIfNotEmpty();
+        body = _builder_62.toString();
+      }
     }
-    StringConcatenation _builder_62 = new StringConcatenation();
-    _builder_62.append(body, "");
-    _builder_62.append("DCharts chart = new DCharts()");
-    _builder_62.newLineIfNotEmpty();
-    _builder_62.append("\t");
-    _builder_62.append(".setDataSeries(dataSeries)");
-    _builder_62.newLine();
-    _builder_62.append("\t");
-    _builder_62.append(".setOptions(options)");
-    _builder_62.newLine();
-    _builder_62.append("\t");
-    _builder_62.append(".setEnableDownload(true)");
-    _builder_62.newLine();
-    _builder_62.append("\t");
-    _builder_62.append(".setDownloadButtonCaption(dslMetadataService.translate(locale.toLanguageTag(), \"download\"))");
-    _builder_62.newLine();
-    _builder_62.append("\t");
-    _builder_62.append(".setDownloadFilename(\"");
-    String _name_60 = chart.getName();
-    _builder_62.append(_name_60, "\t");
-    _builder_62.append("\")");
-    _builder_62.newLineIfNotEmpty();
-    _builder_62.append("\t");
-    _builder_62.append(".setDownloadButtonLocation(DownloadButtonLocation.TOP_RIGHT);");
-    _builder_62.newLine();
-    body = _builder_62.toString();
-    StringConcatenation _builder_63 = new StringConcatenation();
-    _builder_63.append(body, "");
-    _builder_63.append("chart.setId(\"chart\");");
-    _builder_63.newLineIfNotEmpty();
-    _builder_63.append("chart.setImmediate(true);");
-    _builder_63.newLine();
-    _builder_63.append("if(chartRefresherDone) {");
-    _builder_63.newLine();
-    _builder_63.append("\t");
-    _builder_63.append("chart.show();");
-    _builder_63.newLine();
-    _builder_63.append("}");
-    _builder_63.newLine();
-    _builder_63.append("charts.add(chart);");
-    _builder_63.newLine();
-    _builder_63.append("return chart;");
-    body = _builder_63.toString();
+    if (hasAxis) {
+      StringConcatenation _builder_63 = new StringConcatenation();
+      _builder_63.append(body);
+      _builder_63.append("options.setSeries(");
+      String _literal_43 = data_axis.getAxis().getName().getLiteral();
+      _builder_63.append(_literal_43);
+      _builder_63.append("Series);");
+      _builder_63.newLineIfNotEmpty();
+      body = _builder_63.toString();
+    }
+    StringConcatenation _builder_64 = new StringConcatenation();
+    _builder_64.append(body);
+    _builder_64.append("DCharts chart = new DCharts();");
+    _builder_64.newLineIfNotEmpty();
+    _builder_64.append("chart.setDataSeries(dataSeries);");
+    _builder_64.newLine();
+    _builder_64.append("chart.setOptions(options);");
+    _builder_64.newLine();
+    _builder_64.append("chart.setEnableDownload(true);");
+    _builder_64.newLine();
+    _builder_64.append("chart.setDownloadButtonCaption(dslMetadataService.translate(user.getLocale().toLanguageTag(), \"download\"));");
+    _builder_64.newLine();
+    _builder_64.append("chart.setDownloadFilename(\"");
+    String _name_3 = chart.getName();
+    _builder_64.append(_name_3);
+    _builder_64.append("\");");
+    _builder_64.newLineIfNotEmpty();
+    _builder_64.append("chart.setDownloadButtonLocation(DownloadButtonLocation.TOP_RIGHT);");
+    _builder_64.newLine();
+    body = _builder_64.toString();
+    StringConcatenation _builder_65 = new StringConcatenation();
+    _builder_65.append(body);
+    _builder_65.append("chart.setId(\"chart\");");
+    _builder_65.newLineIfNotEmpty();
+    _builder_65.append("chart.setImmediate(true);");
+    _builder_65.newLine();
+    _builder_65.append("if(chartRefresherDone) {");
+    _builder_65.newLine();
+    _builder_65.append("\t");
+    _builder_65.append("chart.show();");
+    _builder_65.newLine();
+    _builder_65.append("}");
+    _builder_65.newLine();
+    _builder_65.append("charts.add(chart);");
+    _builder_65.newLine();
+    _builder_65.append("return chart;");
+    body = _builder_65.toString();
     return body;
   }
   
@@ -2604,9 +2337,9 @@
       {
         Integer i = new Integer(color);
         StringConcatenation _builder = new StringConcatenation();
-        _builder.append(colorHex, "");
+        _builder.append(colorHex);
         String _format = String.format("%02x", i);
-        _builder.append(_format, "");
+        _builder.append(_format);
         colorHex = _builder.toString();
       }
     }
@@ -2622,26 +2355,23 @@
     String body = "";
     int msrCnt = 0;
     ChartDatamart _source = chart.getSource();
-    DatamartDefinition _datamartRef = ((ChartDatamart) _source).getDatamartRef();
-    DatamartSource _source_1 = _datamartRef.getSource();
+    DatamartSource _source_1 = ((ChartDatamart) _source).getDatamartRef().getSource();
     if ((_source_1 instanceof DatamartCube)) {
       ChartDatamart _source_2 = chart.getSource();
-      DatamartDefinition _datamartRef_1 = ((ChartDatamart) _source_2).getDatamartRef();
-      DatamartSource _source_3 = _datamartRef_1.getSource();
+      DatamartSource _source_3 = ((ChartDatamart) _source_2).getDatamartRef().getSource();
       EList<DatamartCubeElement> _axisslicer = ((DatamartCube) _source_3).getAxisslicer();
       for (final DatamartCubeElement axisOrSlicer : _axisslicer) {
-        if ((axisOrSlicer instanceof DatamartAxis)) {
-          EList<DatamartElement> _elements = ((DatamartAxis) axisOrSlicer).getElements();
+        if ((axisOrSlicer instanceof DatamartCubeAxis)) {
+          EList<DatamartElement> _elements = ((DatamartCubeAxis) axisOrSlicer).getElements();
           for (final DatamartElement element : _elements) {
             {
               if ((element instanceof DatamartDerivedMeasure)) {
                 boolean _isScaled = ((DatamartDerivedMeasure) element).isScaled();
                 if (_isScaled) {
                   StringConcatenation _builder = new StringConcatenation();
-                  _builder.append(body, "");
-                  ValueScaleEnum _scale = ((DatamartDerivedMeasure) element).getScale();
-                  String _createScale = this.createScale(_scale, data_axis, multipleAxes, msrCnt, axisPrefix, showMarker);
-                  _builder.append(_createScale, "");
+                  _builder.append(body);
+                  String _createScale = this.createScale(((DatamartDerivedMeasure) element).getScale(), data_axis, multipleAxes, msrCnt, axisPrefix, showMarker);
+                  _builder.append(_createScale);
                   body = _builder.toString();
                   msrCnt = (msrCnt + 1);
                 }
@@ -2650,10 +2380,9 @@
                 boolean _isScaled_1 = ((DatamartMeasure) element).isScaled();
                 if (_isScaled_1) {
                   StringConcatenation _builder_1 = new StringConcatenation();
-                  _builder_1.append(body, "");
-                  ValueScaleEnum _scale_1 = ((DatamartMeasure) element).getScale();
-                  String _createScale_1 = this.createScale(_scale_1, data_axis, multipleAxes, msrCnt, axisPrefix, showMarker);
-                  _builder_1.append(_createScale_1, "");
+                  _builder_1.append(body);
+                  String _createScale_1 = this.createScale(((DatamartMeasure) element).getScale(), data_axis, multipleAxes, msrCnt, axisPrefix, showMarker);
+                  _builder_1.append(_createScale_1);
                   body = _builder_1.toString();
                   msrCnt = (msrCnt + 1);
                 }
@@ -2664,37 +2393,30 @@
       }
     } else {
       ChartDatamart _source_4 = chart.getSource();
-      DatamartDefinition _datamartRef_2 = ((ChartDatamart) _source_4).getDatamartRef();
-      DatamartSource _source_5 = _datamartRef_2.getSource();
+      DatamartSource _source_5 = ((ChartDatamart) _source_4).getDatamartRef().getSource();
       if ((_source_5 instanceof DatamartEntity)) {
         ChartDatamart _source_6 = chart.getSource();
-        DatamartDefinition _datamartRef_3 = ((ChartDatamart) _source_6).getDatamartRef();
-        DatamartSource _source_7 = _datamartRef_3.getSource();
+        DatamartSource _source_7 = ((ChartDatamart) _source_6).getDatamartRef().getSource();
         DatamartEntity entity = ((DatamartEntity) _source_7);
         StringConcatenation _builder = new StringConcatenation();
-        _builder.append(body, "");
+        _builder.append(body);
         String _entityScale = this.entityScale(entity, data_axis, multipleAxes, msrCnt, axisPrefix, showMarker);
-        _builder.append(_entityScale, "");
+        _builder.append(_entityScale);
         body = _builder.toString();
       }
     }
-    Set<String> _keySet = multipleAxes.keySet();
-    int _size = _keySet.size();
+    int _size = multipleAxes.keySet().size();
     boolean _equals = (_size == 0);
     if (_equals) {
       StringConcatenation _builder_1 = new StringConcatenation();
-      _builder_1.append(body, "");
+      _builder_1.append(body);
       _builder_1.append("\tfor (String title : ");
-      DatamartAxis _axis = data_axis.getAxis();
-      AxisEnum _name = _axis.getName();
-      String _literal = _name.getLiteral();
-      _builder_1.append(_literal, "");
+      String _literal = data_axis.getAxis().getName().getLiteral();
+      _builder_1.append(_literal);
       _builder_1.append("TitlesArray) {");
       _builder_1.newLineIfNotEmpty();
       _builder_1.append("\t\t");
-      DatamartAxis _axis_1 = data_axis.getAxis();
-      AxisEnum _name_1 = _axis_1.getName();
-      String _literal_1 = _name_1.getLiteral();
+      String _literal_1 = data_axis.getAxis().getName().getLiteral();
       _builder_1.append(_literal_1, "\t\t");
       _builder_1.append("Series.addSeries(new XYseries().setLabel(title).setShowMarker(");
       String _string = Boolean.valueOf(showMarker).toString();
@@ -2715,16 +2437,15 @@
   public String entityScale(final DatamartEntity entity, final ChartAxis data_axis, final HashMap<String, String> multipleAxes, final int msrCnt, final String axisPrefix, final boolean showMarker) {
     int counter = msrCnt;
     String body = "";
-    EList<DatamartProperty> _properties = entity.getProperties();
-    for (final DatamartProperty property : _properties) {
-      if ((property instanceof DatamartProperty)) {
-        boolean _isScaled = property.isScaled();
+    EList<DatamartAttribute> _attributes = entity.getAttributes();
+    for (final DatamartAttribute attribute : _attributes) {
+      if ((attribute instanceof DatamartAttribute)) {
+        boolean _isScaled = attribute.isScaled();
         if (_isScaled) {
           StringConcatenation _builder = new StringConcatenation();
-          _builder.append(body, "");
-          ValueScaleEnum _scale = property.getScale();
-          String _createScale = this.createScale(_scale, data_axis, multipleAxes, counter, axisPrefix, showMarker);
-          _builder.append(_createScale, "");
+          _builder.append(body);
+          String _createScale = this.createScale(attribute.getScale(), data_axis, multipleAxes, counter, axisPrefix, showMarker);
+          _builder.append(_createScale);
           body = _builder.toString();
           counter = (counter + 1);
         }
@@ -2735,18 +2456,16 @@
       {
         if ((navigation instanceof DatamartMember)) {
           StringConcatenation _builder_1 = new StringConcatenation();
-          _builder_1.append(body, "");
-          DatamartEntity _datamartEntity = ((DatamartMember) navigation).getDatamartEntity();
-          String _entityScale = this.entityScale(_datamartEntity, data_axis, multipleAxes, counter, axisPrefix, showMarker);
-          _builder_1.append(_entityScale, "");
+          _builder_1.append(body);
+          String _entityScale = this.entityScale(((DatamartMember) navigation).getDatamartEntity(), data_axis, multipleAxes, counter, axisPrefix, showMarker);
+          _builder_1.append(_entityScale);
           body = _builder_1.toString();
         }
         if ((navigation instanceof DatamartOwner)) {
           StringConcatenation _builder_2 = new StringConcatenation();
-          _builder_2.append(body, "");
-          DatamartEntity _datamartEntity_1 = ((DatamartOwner) navigation).getDatamartEntity();
-          String _entityScale_1 = this.entityScale(_datamartEntity_1, data_axis, multipleAxes, counter, axisPrefix, showMarker);
-          _builder_2.append(_entityScale_1, "");
+          _builder_2.append(body);
+          String _entityScale_1 = this.entityScale(((DatamartOwner) navigation).getDatamartEntity(), data_axis, multipleAxes, counter, axisPrefix, showMarker);
+          _builder_2.append(_entityScale_1);
           body = _builder_2.toString();
         }
       }
@@ -2763,12 +2482,10 @@
     int scaleOrdinal = scale.ordinal();
     String scaleName = scale.toString();
     StringConcatenation _builder = new StringConcatenation();
-    _builder.append(body, "");
+    _builder.append(body);
     _builder.newLineIfNotEmpty();
     _builder.append("\t");
-    DatamartAxis _axis = data_axis.getAxis();
-    AxisEnum _name = _axis.getName();
-    String _literal = _name.getLiteral();
+    String _literal = data_axis.getAxis().getName().getLiteral();
     _builder.append(_literal, "\t");
     _builder.append("Series.addSeries(new XYseries(");
     char _charAt = axisPrefix.charAt(1);
@@ -2782,9 +2499,7 @@
       }
     }
     _builder.append(").setLabel(");
-    DatamartAxis _axis_1 = data_axis.getAxis();
-    AxisEnum _name_1 = _axis_1.getName();
-    String _literal_1 = _name_1.getLiteral();
+    String _literal_1 = data_axis.getAxis().getName().getLiteral();
     _builder.append(_literal_1, "\t");
     _builder.append("TitlesArray.get(");
     _builder.append(msrCnt, "\t");
@@ -2794,17 +2509,16 @@
     _builder.append("));");
     _builder.newLineIfNotEmpty();
     body = _builder.toString();
-    Set<String> _keySet = multipleAxes.keySet();
-    boolean _contains = _keySet.contains(scaleName);
+    boolean _contains = multipleAxes.keySet().contains(scaleName);
     boolean _not = (!_contains);
     if (_not) {
       StringConcatenation _builder_1 = new StringConcatenation();
       _builder_1.append("axes.addAxis(new XYaxis(XYaxes.");
       char _charAt_2 = axisPrefix.charAt(1);
-      _builder_1.append(_charAt_2, "");
+      _builder_1.append(_charAt_2);
       {
         if ((scaleOrdinal != 0)) {
-          _builder_1.append((scaleOrdinal + 1), "");
+          _builder_1.append((scaleOrdinal + 1));
         }
       }
       _builder_1.append(").setTickOptions(axisTickRenderer");
@@ -2814,7 +2528,7 @@
         if (_notEquals) {
           _builder_1.append(".setAngle(");
           int _angle_1 = data_axis.getAngle();
-          _builder_1.append(_angle_1, "");
+          _builder_1.append(_angle_1);
           _builder_1.append(")");
         }
       }
@@ -2827,12 +2541,11 @@
   }
   
   /**
-   * <p>helper method to get a property name or its alias if present of a entity's property object.</p>
+   * <p>helper method to get a attribute name or its alias if present of a entity's attribute object.</p>
    */
-  public String getPropertyName(final DatamartProperty property) {
-    LEntityAttribute _propertyRef = property.getPropertyRef();
-    String _name = ((LAttribute) _propertyRef).getName();
-    return _name.toUpperCase();
+  public String getAttributeName(final DatamartAttribute attribute) {
+    LEntityAttribute _attributeRef = attribute.getAttributeRef();
+    return ((LAttribute) _attributeRef).getName().toUpperCase();
   }
   
   /**
@@ -2842,86 +2555,122 @@
     return level.getName();
   }
   
-  public String setup(final Chart chart) {
+  public String filterChanged(final Chart chart) {
     String body = "";
     StringConcatenation _builder = new StringConcatenation();
-    _builder.append(body, "");
+    _builder.append(body);
     _builder.newLineIfNotEmpty();
-    _builder.append("subscribe();");
+    _builder.append("if(changedFilter != null) {");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("EventDispatcherEvent evnt = new EventDispatcherEvent(EventDispatcherCommand.SELECT, changedFilter.getName(), \"");
+    String _name = chart.getName();
+    _builder.append(_name, "\t");
+    _builder.append("\");");
+    _builder.newLineIfNotEmpty();
+    _builder.append("\t");
+    _builder.append("evnt.addData(changedFilter.getSelectedData());");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("eventDispatcher.sendEvent(evnt);");
+    _builder.newLine();
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("renderData();");
+    _builder.newLine();
     body = _builder.toString();
-    HashMap<String, String> filterIdMap = CollectionLiterals.<String, String>newHashMap();
-    boolean _and = false;
-    boolean _and_1 = false;
-    ChartDatamart _source = chart.getSource();
-    boolean _notEquals = (!Objects.equal(_source, null));
-    if (!_notEquals) {
-      _and_1 = false;
-    } else {
-      ChartDatamart _source_1 = chart.getSource();
-      DatamartDefinition _datamartRef = _source_1.getDatamartRef();
-      boolean _notEquals_1 = (!Objects.equal(_datamartRef, null));
-      _and_1 = _notEquals_1;
-    }
-    if (!_and_1) {
-      _and = false;
-    } else {
-      ChartDatamart _source_2 = chart.getSource();
-      DatamartDefinition _datamartRef_1 = _source_2.getDatamartRef();
-      String _name = _datamartRef_1.getName();
-      boolean _notEquals_2 = (!Objects.equal(_name, null));
-      _and = _notEquals_2;
-    }
-    if (_and) {
-      ChartDatamart _source_3 = chart.getSource();
-      DatamartDefinition _datamartRef_2 = _source_3.getDatamartRef();
-      this.datamartInferrer.createFilterMap(_datamartRef_2, filterIdMap);
-    }
-    Set<String> _keySet = filterIdMap.keySet();
-    for (final String filter : _keySet) {
-      StringConcatenation _builder_1 = new StringConcatenation();
-      _builder_1.append(body, "");
-      String _get = filterIdMap.get(filter);
-      CharSequence _setupEvent = this.setupEvent(_get, filter);
-      _builder_1.append(_setupEvent, "");
-      body = _builder_1.toString();
-    }
     return body;
   }
   
-  public CharSequence setupEvent(final String eventId, final String filter) {
+  public Set<LEntity> findRequestedEntities(final Chart chart) {
+    HashSet<LEntity> entities = new HashSet<LEntity>();
+    ChartDatamart _source = chart.getSource();
+    entities.addAll(this.datamartInferrer.findAllEntities(((ChartDatamart) _source).getDatamartRef()));
+    return entities;
+  }
+  
+  public String receiveEvent(final Chart chart) {
+    String body = "";
     StringConcatenation _builder = new StringConcatenation();
-    _builder.append("eventBroker.subscribe(\"");
-    _builder.append(eventId, "");
-    _builder.append("\",");
+    _builder.append(body);
     _builder.newLineIfNotEmpty();
-    _builder.append("new org.osgi.service.event.EventHandler() {");
+    _builder.append("switch(event.getCommand()) {");
     _builder.newLine();
     _builder.append("\t");
-    _builder.append("@Override");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("public void handleEvent(org.osgi.service.event.Event event) {");
+    _builder.append("case SELECT:");
     _builder.newLine();
     _builder.append("\t\t");
-    _builder.append("final EventBrokerMsg msg = (EventBrokerMsg)event.getProperty(org.eclipse.e4.core.di.extensions.EventUtils.DATA);");
-    _builder.newLine();
-    _builder.append("\t\t");
-    _builder.append("filterGenerator.selectItem(\"");
-    _builder.append(filter, "\t\t");
-    _builder.append("\", msg.getName());");
+    _builder.append("if(!event.getSender().equals(\"");
+    QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(chart);
+    _builder.append(_fullyQualifiedName, "\t\t");
+    _builder.append("\")) {");
     _builder.newLineIfNotEmpty();
-    _builder.append("\t");
+    _builder.append("\t\t\t");
+    _builder.append("if(filterGenerator.selectItem(event, ");
+    boolean _booleanValue = Boolean.valueOf(chart.isSelectById()).booleanValue();
+    _builder.append(_booleanValue, "\t\t\t");
+    _builder.append(")) {");
+    _builder.newLineIfNotEmpty();
+    _builder.append("\t\t\t\t");
+    _builder.append("renderData();");
+    _builder.newLine();
+    _builder.append("\t\t\t");
     _builder.append("}");
     _builder.newLine();
-    _builder.append("});");
+    _builder.append("\t\t");
+    _builder.append("}");
     _builder.newLine();
-    return _builder;
+    _builder.append("\t\t");
+    _builder.append("break;");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("case SAVE:");
+    _builder.newLine();
+    _builder.append("\t");
+    _builder.append("case DELETE:");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("if(!event.getSender().equals(\"");
+    QualifiedName _fullyQualifiedName_1 = this._iQualifiedNameProvider.getFullyQualifiedName(chart);
+    _builder.append(_fullyQualifiedName_1, "\t\t");
+    _builder.append("\")) {");
+    _builder.newLineIfNotEmpty();
+    {
+      Set<LEntity> _findRequestedEntities = this.findRequestedEntities(chart);
+      for(final LEntity e : _findRequestedEntities) {
+        _builder.append("\t\t\t");
+        _builder.append("if(event.getTopic().equals(\"");
+        QualifiedName _fullyQualifiedName_2 = this._iQualifiedNameProvider.getFullyQualifiedName(e);
+        _builder.append(_fullyQualifiedName_2, "\t\t\t");
+        _builder.append("\")){");
+        _builder.newLineIfNotEmpty();
+        _builder.append("\t\t\t");
+        _builder.append("\t");
+        _builder.append("datamartInstance.clearCache();");
+        _builder.newLine();
+        _builder.append("\t\t\t");
+        _builder.append("\t");
+        _builder.append("renderData();");
+        _builder.newLine();
+        _builder.append("\t\t\t");
+        _builder.append("}");
+        _builder.newLine();
+      }
+    }
+    _builder.append("\t\t");
+    _builder.append("}");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("break;");
+    _builder.newLine();
+    _builder.append("}");
+    _builder.newLine();
+    body = _builder.toString();
+    return body;
   }
   
   public CharSequence localeChanged(final Chart chart) {
     StringConcatenation _builder = new StringConcatenation();
-    _builder.append("this.locale = locale;");
-    _builder.newLine();
     _builder.append("if(charts != null) {");
     _builder.newLine();
     _builder.append("\t");
@@ -2931,26 +2680,12 @@
     _builder.append("chart.setLocale(locale);");
     _builder.newLine();
     {
-      boolean _and = false;
-      ChartDatamart _source = chart.getSource();
-      DatamartDefinition _datamartRef = _source.getDatamartRef();
-      boolean _isDescription = _datamartRef.isDescription();
-      if (!_isDescription) {
-        _and = false;
-      } else {
-        ChartDatamart _source_1 = chart.getSource();
-        DatamartDefinition _datamartRef_1 = _source_1.getDatamartRef();
-        String _descriptionValue = _datamartRef_1.getDescriptionValue();
-        boolean _notEquals = (!Objects.equal(_descriptionValue, null));
-        _and = _notEquals;
-      }
-      if (_and) {
+      if ((chart.getSource().getDatamartRef().isDescription() && 
+        (!Objects.equal(chart.getSource().getDatamartRef().getDescriptionValue(), null)))) {
         _builder.append("\t\t");
         _builder.append("chart.setDescription(dslMetadataService.translate(locale.toLanguageTag(), \"");
-        ChartDatamart _source_2 = chart.getSource();
-        DatamartDefinition _datamartRef_2 = _source_2.getDatamartRef();
-        String _descriptionValue_1 = _datamartRef_2.getDescriptionValue();
-        _builder.append(_descriptionValue_1, "\t\t");
+        String _descriptionValue = chart.getSource().getDatamartRef().getDescriptionValue();
+        _builder.append(_descriptionValue, "\t\t");
         _builder.append("\"));");
         _builder.newLineIfNotEmpty();
         _builder.append("\t\t");
@@ -2963,13 +2698,6 @@
     _builder.newLine();
     _builder.append("}");
     _builder.newLine();
-    _builder.append("if(filterGenerator != null) {");
-    _builder.newLine();
-    _builder.append("\t");
-    _builder.append("filterGenerator.setLocale(locale);");
-    _builder.newLine();
-    _builder.append("}");
-    _builder.newLine();
     _builder.append("if(layoutManager != null) {");
     _builder.newLine();
     _builder.append("\t");
diff --git a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartModelGenerator.java b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartModelGenerator.java
index c7a5015..eed8248 100644
--- a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartModelGenerator.java
+++ b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/ChartModelGenerator.java
@@ -19,6 +19,7 @@
 import com.vaadin.ui.HorizontalLayout;
 import com.vaadin.ui.JavaScriptFunction;
 import com.vaadin.ui.Label;
+import com.vaadin.ui.Panel;
 import com.vaadin.ui.TabSheet;
 import com.vaadin.ui.UI;
 import elemental.json.JsonArray;
@@ -35,6 +36,7 @@
 import java.util.ResourceBundle;
 import java.util.concurrent.Executors;
 import javax.inject.Inject;
+import mondrian.olap.Member;
 import org.dussan.vaadin.dcharts.DCharts;
 import org.dussan.vaadin.dcharts.DownloadButtonLocation;
 import org.dussan.vaadin.dcharts.base.elements.Trendline;
@@ -85,8 +87,9 @@
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.osbp.eventbroker.EventBrokerMsg;
-import org.eclipse.osbp.ui.api.datamart.DerivedOlapException;
-import org.eclipse.osbp.utils.constants.ExtendedDate;
+import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent;
+import org.eclipse.osbp.ui.api.datamart.DatamartFilter;
+import org.eclipse.osbp.ui.api.datamart.IDatamartFilterGenerator;
 import org.eclipse.osbp.utils.vaadin.ViewLayoutManager;
 import org.eclipse.osbp.xtext.basic.generator.BasicDslGeneratorUtils;
 import org.eclipse.osbp.xtext.chart.Chart;
@@ -106,11 +109,8 @@
 import org.eclipse.osbp.xtext.i18n.I18NModelGenerator;
 import org.eclipse.xtend2.lib.StringConcatenation;
 import org.eclipse.xtext.common.types.JvmDeclaredType;
-import org.eclipse.xtext.common.types.JvmType;
-import org.eclipse.xtext.common.types.JvmTypeReference;
 import org.eclipse.xtext.generator.IFileSystemAccess;
 import org.eclipse.xtext.naming.IQualifiedNameProvider;
-import org.eclipse.xtext.naming.QualifiedName;
 import org.eclipse.xtext.xbase.compiler.GeneratorConfig;
 import org.eclipse.xtext.xbase.compiler.ImportManager;
 import org.eclipse.xtext.xbase.compiler.output.TreeAppendable;
@@ -132,31 +132,21 @@
   @Extension
   private BasicDslGeneratorUtils _basicDslGeneratorUtils;
   
+  @Override
   public TreeAppendable createAppendable(final EObject context, final ImportManager importManager, final GeneratorConfig config) {
     TreeAppendable _xblockexpression = null;
     {
-      Resource _eResource = context.eResource();
-      this.setBuilder(_eResource);
-      JvmTypeReference _typeRef = this._typeReferenceBuilder.typeRef(String.class);
-      JvmTypeReference _typeRef_1 = this._typeReferenceBuilder.typeRef(String.class);
-      JvmTypeReference _typeRef_2 = this._typeReferenceBuilder.typeRef(HashMap.class, _typeRef, _typeRef_1);
-      JvmType _type = _typeRef_2.getType();
-      importManager.addImportFor(_type);
-      JvmTypeReference _typeRef_3 = this._typeReferenceBuilder.typeRef(String.class);
-      JvmTypeReference _typeRef_4 = this._typeReferenceBuilder.typeRef(String.class);
-      JvmTypeReference _typeRef_5 = this._typeReferenceBuilder.typeRef(Map.class, _typeRef_3, _typeRef_4);
-      JvmType _type_1 = _typeRef_5.getType();
-      importManager.addImportFor(_type_1);
-      JvmTypeReference _typeRef_6 = this._typeReferenceBuilder.typeRef(String.class);
-      JvmTypeReference _typeRef_7 = this._typeReferenceBuilder.typeRef(Collection.class, _typeRef_6);
-      JvmType _type_2 = _typeRef_7.getType();
-      importManager.addImportFor(_type_2);
-      this._basicDslGeneratorUtils.addImportFor(this, importManager, this._typeReferenceBuilder, Property.ValueChangeListener.class, DCharts.class, Label.class, List.class, ArrayList.class, Page.class, Page.Styles.class, DerivedAxis.class, DerivedCell.class, DerivedPosition.class, DerivedMember.class, HorizontalLayout.class, TabSheet.class, Series.class, XYseries.class, Ticks.class, DataSeries.class, SeriesDefaults.class, SeriesRenderers.class, CanvasAxisTickRenderer.class, DonutRenderer.class, PieRenderer.class, BubbleRenderer.class, BarRenderer.class, BarDirections.class, MeterGaugeRenderer.class, PyramidRenderer.class, PyramidSides.class, Trendline.class, Cursor.class, Legend.class, LegendPlacements.class, EnhancedLegendRenderer.class, SeriesToggles.class, Highlighter.class, Title.class, TooltipLocations.class, TooltipAxes.class, Axes.class, XYaxes.class, XYaxis.class, Xaxes.class, Yaxes.class, AxisTickRenderer.class, AxisRenderers.class, LinearAxisRenderer.class, AxesDefaults.class, DownloadButtonLocation.class, Options.class, DerivedHierarchy.class, DerivedLevel.class, DerivedOlapException.class, IEventBroker.class, CellSetToD3JsonConverter.class, Date.class, ExtendedDate.class, JavaScriptFunction.class, JsonArray.class, JsonObject.class, JsonException.class, EventHandler.class, Event.class, EventUtils.class, EventBrokerMsg.class, Executors.class, Page.BrowserWindowResizeEvent.class, Page.BrowserWindowResizeListener.class, Notification.class, Adapter.class, AdapterImpl.class, EObject.class, UIElementImpl.class, UiPackageImpl.class, MUIElement.class, MPartStack.class, UI.class, ResourceBundle.class, Locale.class, DatamartFilterGenerator.class, ViewLayoutManager.class);
+      this.setBuilder(context.eResource());
+      importManager.addImportFor(this._typeReferenceBuilder.typeRef(HashMap.class, this._typeReferenceBuilder.typeRef(String.class), this._typeReferenceBuilder.typeRef(String.class)).getType());
+      importManager.addImportFor(this._typeReferenceBuilder.typeRef(Map.class, this._typeReferenceBuilder.typeRef(String.class), this._typeReferenceBuilder.typeRef(String.class)).getType());
+      importManager.addImportFor(this._typeReferenceBuilder.typeRef(Collection.class, this._typeReferenceBuilder.typeRef(String.class)).getType());
+      this._basicDslGeneratorUtils.addImportFor(this, importManager, this._typeReferenceBuilder, Property.ValueChangeListener.class, DCharts.class, Label.class, List.class, ArrayList.class, Page.class, Page.Styles.class, DerivedAxis.class, DerivedCell.class, DerivedPosition.class, DerivedMember.class, HorizontalLayout.class, TabSheet.class, Series.class, XYseries.class, Ticks.class, DataSeries.class, SeriesDefaults.class, SeriesRenderers.class, CanvasAxisTickRenderer.class, DonutRenderer.class, PieRenderer.class, BubbleRenderer.class, BarRenderer.class, BarDirections.class, MeterGaugeRenderer.class, PyramidRenderer.class, PyramidSides.class, Trendline.class, Cursor.class, Legend.class, LegendPlacements.class, EnhancedLegendRenderer.class, SeriesToggles.class, Highlighter.class, Title.class, TooltipLocations.class, TooltipAxes.class, Axes.class, XYaxes.class, XYaxis.class, Xaxes.class, Yaxes.class, AxisTickRenderer.class, AxisRenderers.class, LinearAxisRenderer.class, AxesDefaults.class, DownloadButtonLocation.class, Options.class, DerivedHierarchy.class, DerivedLevel.class, IEventBroker.class, CellSetToD3JsonConverter.class, Date.class, JavaScriptFunction.class, JsonArray.class, JsonObject.class, JsonException.class, EventHandler.class, Event.class, EventUtils.class, EventBrokerMsg.class, Executors.class, Page.BrowserWindowResizeEvent.class, Page.BrowserWindowResizeListener.class, Notification.class, Adapter.class, AdapterImpl.class, EObject.class, UIElementImpl.class, UiPackageImpl.class, MUIElement.class, MPartStack.class, UI.class, ResourceBundle.class, Locale.class, DatamartFilterGenerator.class, ViewLayoutManager.class, IDatamartFilterGenerator.FilterChangeListener.class, EventDispatcherEvent.class, EventDispatcherEvent.EventDispatcherDataTag.class, EventDispatcherEvent.EventDispatcherCommand.class, DatamartFilter.class, Member.MemberType.class, Panel.class);
       _xblockexpression = super.createAppendable(context, importManager, config);
     }
     return _xblockexpression;
   }
   
+  @Override
   public void doGenerate(final Resource input, final IFileSystemAccess fsa) {
     super.addTranslatables("download");
     super.doGenerate(input, fsa);
@@ -173,15 +163,14 @@
       for (final Chart chart : _charts) {
         ChartOption _charttype = chart.getCharttype();
         if ((_charttype instanceof ChartTree)) {
-          QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(pkg);
-          String pckgName = _fullyQualifiedName.toString();
+          String pckgName = this._iQualifiedNameProvider.getFullyQualifiedName(pkg).toString();
           StringBuilder strBuilder = new StringBuilder();
           String pckgNamePath = pckgName.replaceAll("\\.", "/");
           StringConcatenation _builder = new StringConcatenation();
-          _builder.append(pckgNamePath, "");
+          _builder.append(pckgNamePath);
           _builder.append("/");
           String _createChartJsFilename = this._d3JsJavaUtil.createChartJsFilename(chart);
-          _builder.append(_createChartJsFilename, "");
+          _builder.append(_createChartJsFilename);
           String propOutputFile = _builder.toString();
           this.generateJsFile(chart, strBuilder);
           int _length = strBuilder.length();
@@ -195,8 +184,7 @@
   }
   
   public void generateJsFile(final Chart chart, final StringBuilder strBuilder) {
-    String _createfullyQualifiedChartFilename = this._d3JsJavaUtil.createfullyQualifiedChartFilename(chart);
-    String chartFilePath = _createfullyQualifiedChartFilename.replaceAll("\\.", "_");
+    String chartFilePath = this._d3JsJavaUtil.createfullyQualifiedChartFilename(chart).replaceAll("\\.", "_");
     ChartOption _charttype = chart.getCharttype();
     if ((_charttype instanceof ChartTree)) {
       ChartOption _charttype_1 = chart.getCharttype();
@@ -215,7 +203,7 @@
   
   public void generateTreeMapJsFile(final StringBuilder strBuilder, final String chartJavaFileName) {
     StringConcatenation _builder = new StringConcatenation();
-    _builder.append(chartJavaFileName, "");
+    _builder.append(chartJavaFileName);
     _builder.append(" = function() {");
     _builder.newLineIfNotEmpty();
     _builder.append("\t");
@@ -486,7 +474,7 @@
   
   public void generateCollTreeJsFile(final StringBuilder strBuilder, final String chartJavaFileName) {
     StringConcatenation _builder = new StringConcatenation();
-    _builder.append(chartJavaFileName, "");
+    _builder.append(chartJavaFileName);
     _builder.append(" = function() {");
     _builder.newLineIfNotEmpty();
     _builder.append("\t");
diff --git a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/D3JsJavaUtil.java b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/D3JsJavaUtil.java
index 24a865f..36da0eb 100644
--- a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/D3JsJavaUtil.java
+++ b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/jvmmodel/D3JsJavaUtil.java
@@ -85,45 +85,30 @@
   private String createfullyQualifiedFilename(final Chart chart) {
     EObject _eContainer = chart.eContainer();
     ChartPackage pckg = ((ChartPackage) _eContainer);
-    String _name = pckg.getName();
-    String _string = _name.toString();
-    String _concat = _string.concat(".");
-    String _name_1 = chart.getName();
-    String _string_1 = _name_1.toString();
-    String _concat_1 = _concat.concat(_string_1);
-    String _createFilenamePostFix = this.createFilenamePostFix(chart);
-    return _concat_1.concat(_createFilenamePostFix);
+    return pckg.getName().toString().concat(".").concat(chart.getName().toString()).concat(this.createFilenamePostFix(chart));
   }
   
   private String createFilename(final Chart chart) {
-    String _name = chart.getName();
-    String _string = _name.toString();
-    String _createFilenamePostFix = this.createFilenamePostFix(chart);
-    return _string.concat(_createFilenamePostFix);
+    return chart.getName().toString().concat(this.createFilenamePostFix(chart));
   }
   
   public String createChartFilename(final Chart chart) {
-    String _createFilename = this.createFilename(chart);
-    return _createFilename.concat("JsChart");
+    return this.createFilename(chart).concat("JsChart");
   }
   
   public String createfullyQualifiedChartFilename(final Chart chart) {
-    String _createfullyQualifiedFilename = this.createfullyQualifiedFilename(chart);
-    return _createfullyQualifiedFilename.concat("JsChart");
+    return this.createfullyQualifiedFilename(chart).concat("JsChart");
   }
   
   public String createChartJsFilename(final Chart chart) {
-    String _createFilename = this.createFilename(chart);
-    return _createFilename.concat(".js");
+    return this.createFilename(chart).concat(".js");
   }
   
   public String createfullyQualifiedStateFilename(final Chart chart) {
-    String _createfullyQualifiedFilename = this.createfullyQualifiedFilename(chart);
-    return _createfullyQualifiedFilename.concat("JsState");
+    return this.createfullyQualifiedFilename(chart).concat("JsState");
   }
   
   public String createStateFilename(final Chart chart) {
-    String _createFilename = this.createFilename(chart);
-    return _createFilename.concat("JsState");
+    return this.createFilename(chart).concat("JsState");
   }
 }
diff --git a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/scoping/.gitignore b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/scoping/.gitignore
new file mode 100644
index 0000000..331a343
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/scoping/.gitignore
@@ -0,0 +1 @@
+/ChartDSLScopeProvider.java
diff --git a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/validation/.gitignore b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/validation/.gitignore
new file mode 100644
index 0000000..738d8db
--- /dev/null
+++ b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/validation/.gitignore
@@ -0,0 +1 @@
+/ChartDSLValidator.java
diff --git a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/validation/ChartDSLValidator.java b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/validation/ChartDSLValidator.java
index a54aefd..2cbbcb3 100644
--- a/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/validation/ChartDSLValidator.java
+++ b/org.eclipse.osbp.xtext.chart/xtend-gen/org/eclipse/osbp/xtext/chart/validation/ChartDSLValidator.java
@@ -36,21 +36,15 @@
   public void checkDuplicateChartNames(final Chart chart) {
     EObject eObj = chart.eContainer();
     while ((!(eObj instanceof ChartPackage))) {
-      EObject _eContainer = eObj.eContainer();
-      eObj = _eContainer;
+      eObj = eObj.eContainer();
     }
     boolean _notEquals = (!Objects.equal(eObj, null));
     if (_notEquals) {
       ChartPackage chartPackage = ((ChartPackage) eObj);
-      EList<Chart> _charts = chartPackage.getCharts();
-      String _name = chart.getName();
-      Chart _findDuplicateChartNames = this.findDuplicateChartNames(_charts, _name);
+      Chart _findDuplicateChartNames = this.findDuplicateChartNames(chartPackage.getCharts(), chart.getName());
       boolean _notEquals_1 = (!Objects.equal(_findDuplicateChartNames, null));
       if (_notEquals_1) {
-        String _name_1 = chart.getName();
-        String _concat = "Duplicate chart name \'".concat(_name_1);
-        String _concat_1 = _concat.concat("\'!");
-        this.error(_concat_1, ChartDSLPackage.Literals.CHART_BASE__NAME);
+        this.error("Duplicate chart name \'".concat(chart.getName()).concat("\'!"), ChartDSLPackage.Literals.CHART_BASE__NAME);
       }
     }
   }
@@ -58,18 +52,7 @@
   private Chart findDuplicateChartNames(final EList<Chart> charts, final String chartName) {
     HashSet<String> tempSet = CollectionLiterals.<String>newHashSet();
     for (final Chart chart : charts) {
-      boolean _and = false;
-      String _name = chart.getName();
-      boolean _add = tempSet.add(_name);
-      boolean _not = (!_add);
-      if (!_not) {
-        _and = false;
-      } else {
-        String _name_1 = chart.getName();
-        boolean _equals = _name_1.equals(chartName);
-        _and = _equals;
-      }
-      if (_and) {
+      if (((!tempSet.add(chart.getName())) && chart.getName().equals(chartName))) {
         return chart;
       }
     }
diff --git a/pom.xml b/pom.xml
index c3c0375..70a01a8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -43,6 +43,7 @@
     <modules>
         <module>org.eclipse.osbp.xtext.chart</module>
         <module>org.eclipse.osbp.xtext.chart.tests</module>
+        <module>org.eclipse.osbp.xtext.chart.ide</module>
         <module>org.eclipse.osbp.xtext.chart.ui</module>
         <module>org.eclipse.osbp.xtext.chart.feature</module>
     </modules>
@@ -91,4 +92,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>